1. XmlConfiguration的value方法
读取某个节点的值,并进行相应处理:修剪空字符串,解析并拼接结果
private Object value(Object obj, XmlParser.Node node) throws Exception
{
Object value = null;
// Get the type
String type = node.getAttribute("type");
// Try a ref lookup
String ref = node.getAttribute("ref");
if (ref != null)
{
value = _idMap.get(ref);
}
else
{
// handle trivial case
if (node.size() == 0)
{
if ("String".equals(type)) return "";
return null;
}
// Trim values
int first = 0;
int last = node.size() - 1;
// Handle default trim type
if (type == null || !"String".equals(type))
{
// Skip leading white
Object item = null;
while (first <= last)
{
item = node.get(first);
if (!(item instanceof String)) break;
item = ((String) item).trim();
if (((String) item).length() > 0) break;
first++;
}
// Skip trailing white
while (first < last)
{
item = node.get(last);
if (!(item instanceof String)) break;
item = ((String) item).trim();
if (((String) item).length() > 0) break;
last--;
}
// All white, so return null
if (first > last) return null;
}
if (first == last)
// Single Item value
value = itemValue(obj, node.get(first));
else
{
// Get the multiple items as a single string
StringBuffer buf = new StringBuffer();
synchronized (buf)
{
for (int i = first; i <= last; i++)
{
Object item = node.get(i);
buf.append(itemValue(obj, item));
}
value = buf.toString();
}
}
}
// Untyped or unknown
if (value == null)
{
if ("String".equals(type)) return "";
return null;
}
// Try to type the object
if (type == null)
{
if (value != null && value instanceof String) return ((String) value).trim();
return value;
}
if ("String".equals(type) || "java.lang.String".equals(type)) return value.toString();
Class pClass = TypeUtil.fromName(type);
if (pClass != null) return TypeUtil.valueOf(pClass, value.toString());
if ("URL".equals(type) || "java.net.URL".equals(type))
{
if (value instanceof URL) return value;
try
{
return new URL(value.toString());
}
catch (MalformedURLException e)
{
throw new InvocationTargetException(e);
}
}
if ("InetAddress".equals(type) || "java.net.InetAddress".equals(type))
{
if (value instanceof InetAddress) return value;
try
{
return InetAddress.getByName(value.toString());
}
catch (UnknownHostException e)
{
throw new InvocationTargetException(e);
}
}
throw new IllegalStateException("Unknown type " + type);
}
2. XmlConfiguration的itemValue方法
读取单个节点的值,如果item是String类型,直接返回
如果是其它的tag,还需要调用对应的处理方法
private Object itemValue(Object obj, Object item) throws Exception
{
// String value
if (item instanceof String) return item;
XmlParser.Node node = (XmlParser.Node) item;
String tag = node.getTag();
if ("Call".equals(tag)) return call(obj, node);
if ("Get".equals(tag)) return get(obj, node);
if ("New".equals(tag)) return newObj(obj, node);
if ("Ref".equals(tag)) return refObj(obj, node);
if ("Array".equals(tag)) return newArray(obj, node);
if ("Map".equals(tag)) return newMap(obj, node);
if ("Property".equals(tag)) return propertyObj(obj,node);
if ("SystemProperty".equals(tag))
{
String name = node.getAttribute("name");
String defaultValue = node.getAttribute("default");
return System.getProperty(name, defaultValue);
}
Log.warn("Unknown value tag: " + node, new Throwable());
return null;
}
分享到:
相关推荐
eclipse jetty插件,从...下载run-jetty-run.zip文件,解压后再编写个links文件丢到eclipse的dropins目录下即可,省去了使用eclipse update方式安装的麻烦。 link文件样例如: path=d:\\eclipse_plugins\\run-jetty-run
安装方法为新加一个run-jetty-run.link文件,文件内容为 path=G:\\eclipse_plugins\\run-jetty-run 执行解压后的路径文件夹即可。 在线安装地址为: http://xzer.github.io/run-jetty-run-updatesite/nightly/ 支持...
要在Maven项目中使用`maven-jetty-plugin`,首先需要在项目的`pom.xml`文件中添加插件的配置。例如: ```xml ... <groupId>org.mortbay.jetty <artifactId>maven-jetty-plugin <version>6.1.x...
3. **运行i-jetty**:编译完成后,你可以通过Java的`java -jar`命令运行生成的JAR文件,例如:`java -jar target/i-jetty-3.1.jar`。根据项目的具体配置,可能需要提供额外的启动参数。 四、源码学习 深入学习i-...
<artifactId>maven-jetty-plugin 版本号 <!-- 配置项 --> ... ``` 总的来说,Maven Jetty Plugin是Java Web开发者的重要工具,它简化了开发流程,提高了效率,同时也为持续集成和持续部署提供了便利...
综上所述,"cxf-rt-transports-http-jetty-3.0.2.zip"和"jcabi-aspects.zip"分别是Apache CXF框架的一个组件和一个Java注解库,它们都为Java开发者提供了强大的工具,以更高效和灵活的方式构建和管理Web服务及应用...
android i-jetty servlet-api-2.5.jar jetty-servlet-7.6.0.RC4.jar jetty-server-7.6.0.RC4.jar jetty-http-7.6.0.RC4.jar
**Android-I-Jetty服务器详解** ...总之,Android-I-Jetty服务器为开发者提供了一种在Android设备上运行自定义Web服务的便捷方式,结合`i-jetty-ui`,可以更好地管理和监控服务器状态,提高开发效率。
2. **Jetty基础** Jetty是一款流行的、高性能的Java HTTP服务器和Servlet容器。它以其轻量级、快速和稳定而受到青睐。在Android平台上,由于资源限制,i-jetty项目对Jetty进行了优化,使其更适合在移动设备上运行。...
【标题】"i-jetty-lib" 是一个针对Android平台的Jetty服务器库的集成与编译项目,旨在为Android开发者提供轻量级、高效的HTTP服务器解决方案。Jetty是一款开源的Java Web服务器和Servlet容器,它支持多种Web协议,如...
此外,run-jetty-run还支持多项目配置,这意味着你可以同时管理多个Jetty服务器实例,每个实例对应不同的项目,这对于同时处理多个Web应用的开发任务非常有帮助。通过插件的设置界面,开发者可以配置Jetty的端口号、...
这个项目包含两大部分:`i-jetty_lib`和`i-jetty-master`。 `i-jetty_lib`文件夹可能包含了i-jetty的核心库文件,这是一个预编译的Java类库(jar包),开发者可以将它集成到他们的Android应用中。这个库文件通常...
总的来说,Run-Jetty-Run插件是Eclipse开发环境与Jetty服务器之间的一座桥梁,它极大地简化了Jetty的使用流程,让开发者可以更加专注于应用的开发和调试,而无需关心底层服务器的配置和管理。通过离线安装包的方式,...
2. **Jetty Server**: 这是I-Jetty自身的核心组件,可能包含多个版本的jar包,如`jetty-server.jar`、`jetty-http.jar`、`jetty-io.jar`等,用于构建和管理Web服务器。 3. **Jetty Servlet Handler**: 用来处理...
它可以自动配置项目到Jetty服务器,使得在开发过程中能够快速地进行测试和调试,提高开发效率。 2. **离线安装步骤** - **下载插件**:首先,你需要从可靠的资源网站或者官方渠道下载Run-Jetty插件的压缩包文件。...
maven-jetty-plugin-6.1.3.jar
maven-jetty-plugin-6.1.26-sources.jar
maven-jetty-jspc-plugin-6.1.9.jar
maven-jetty-jspc-plugin-6.1.25-sources.jar
对于任何使用i-jetty的人来说,理解并正确配置这些库文件至关重要,因为它们将直接影响到i-jetty的功能和性能。 在实际应用中,开发者在使用这些库文件时,通常需要遵循以下步骤: 1. **解压**:首先,将名为"libs...