appfw-common Overview |
- 与其它包的依赖关系
- net.sf.appfw.common.bean
- net.sf.appfw.common.util.XMLProperties
- net.sf.appfw.common.hivemind.XmlMessagesImpl
- net.sf.appfw.common.uic.XmlTranslate
- net.sf.appfw.common.util包中与状态机有关的一些类
- net.sf.appfw.common.util.HttpClientUtil
与其它包的依赖关系
appfw-common包含一些被其它服务用到的基础工具类。appfw-common并不依赖于appfw的其他包, 相反,appfw的其它包有可能依赖于appfw-common。
net.sf.appfw.common.bean
其中包括了一些简单的Java Bean类,比如SingleValueBean, DoubleValueBean, KeyValueBean, GenericResult等等。
net.sf.appfw.common.util.XMLProperties
XMLProperties是java.util.Properties的子类,但是它不使用传统的.properties文件格式, 而是采用XML格式的文件。XMLProperties的定位是尽可能地替代java.util.Properties。
大家都知道,.properties文件中只能用ASCII字符,所以包含中文文字的.properties文件必须 经过native2ascii工具转换才能够使用,而转换的结果里面,中文文字已经变成了不可识别的 转义字符串了。.properties文件的这个问题,带来三方面的不便,一方面,在编译的时候,必须 对所有的.properties专门作一次native2ascii操作,而不能如同其它的资源文件一样直接拷贝; 另一方面,系统部署之后要想再改动.properties文件的内容就不方便了,不能直接改最终的文件, 而必须把原始的文件找出来,改好后重新native2ascii才能够用;另外,经过了native2ascii之后 的供部署用的文件,其中的中文字符,是无法被人阅读的。
XMLProperties通过采用XML格式来存储消息字符串,解决了传统.properties文件带来的问题。 只要直接在.xml文件中用比如gb2312编码方式写入中文字符就可以了。
这里有一个XML格式文件的例子:
<?xml version="1.0" encoding="gb2312" ?> <properties> <key name="StateName.0" >已创建</key> <key name="StateName.1" >正在初始化</key> <key name="StateName.2" >已初始化</key> <key name="StateName.3" >正在启动</key> <key name="StateName.4" >运行中</key> <key name="StateName.5" >正在停止</key> <key name="StateName.6" >已停止</key> </properties>
net.sf.appfw.common.hivemind.XmlMessagesImpl
这个类实现了org.apache.hivemind.Messages接口。Messages接口定义了获取消息字符串的功能, 类似于jakarta/struts中的MessageResources。由于XmlMessagesImpl采用XMLProperties作为 底层支撑,所以消息字符串并非写在.properties文件中,而是在XML格式的文件中。 XmlMessagesImpl的定位是尽可能替代掉HiveMind中Messages接口的缺省实现类。
典型的用法是这样的:
class Test{ private static Messages messages = new XmlMessagesImpl(Test.class); public void test(String name){ String s1 = messages.getMessage("Error1"); String s2 = messages.format("Error2", name); } }
net.sf.appfw.common.uic.XmlTranslate
这个类实现了uic.TranslationInterface接口。TranslationInterface接口定义了uic 中对字符串进行i18n的功能。由于XmlTranslate采用XMLProperties作为 底层支撑,所以界面消息字符串并非写在.properties文件中,而是在XML格式的文件中。 XmlTranslate的定位是尽可能替代掉UIC中TranslationInterface接口的缺省实现类。
典型用法是在UIC生成的类的子类中,覆盖掉父类的translate()方法:
public TranslationInterface translate() { return new XmlTranslate(this.getClass()); }
net.sf.appfw.common.util包中与状态机有关的一些类
SimpleStateMachine是一个状态机机制的工具类。
AbstractSimpleStateKeeper是一个抽象类,定义了在状态机机制下,对状态进行保管的机制。
SimpleStateKeeperTransitionListener定义了对状态变化进行监听的接口。
net.sf.appfw.common.util.HttpClientUtil
对jakarta的HttpClient类进行了进一步的封装,以简化功能调用。