2021SC@SDUSC
Sitemap-comonpents.compents.modules.input:
CookieModule:
1.总结:
公共类CookieModule,继承了 org.apache.cocoon.components.modules.input.AbstractInputModule,实现了ThreadSafe接口。cookies的输入模块。检索请求的cookie的值。
2.方法:
Object getAttribute(String name, Configuration modeConf, Map objectModel)
Iterator getAttributeNames(Configuration modeConf, Map objectModel)
Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
protected Map getCookieMap(Map objectModel)
DateInputModule:
1.总结:
公共类DateInputModule,继承了org.apache.cocoon.components.modules.input.AbstractInputModule,实现了ThreadSafe
DateInputModule返回当前日期,可以选择将其格式化为字符串。通过配置根节点的属性“Format”或模块声明上的嵌套<Format/>标记给出的格式。
2.方法:
Object getAttribute(String name, Configuration modeConf, Map objectModel)
Iterator getAttributeNames(Configuration modeConf, Map objectModel)
Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
DateMetaInputModule:
1.总结:
公共类DateMetaInputModule, 继承了 org.apache.cocoon.components.modules.input.AbstractMetaModule, 实现了 ThreadSafe
根据给定格式解析日期字符串并返回日期对象。配置选项:元素“format”用于保存SimpleDataFormat格式字符串,子元素“input module”用于保存InputModule以从中获取字符串。
2.方法:
void configure(Configuration config)
Object getAttribute(String name, Configuration modeConf, Map objectModel)
Iterator getAttributeNames(Configuration modeConf, Map objectModel)
Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
3.方法详细:
public Iterator getAttributeNames( Configuration modeConf, Map objectModel )
throws ConfigurationException {
if (!this.initialized) {
this.lazy_initialize();
}
if (this.defaultInput == null) {
if (getLogger().isWarnEnabled())
getLogger().warn("No input module given");
}
//获取正确的配置对象
//默认与动态
Configuration inputConfig = this.inputConf;
Configuration mConf = null;
String inputName=null;
if (modeConf!=null) {
mConf = modeConf.getChild("input-module");
inputName = modeConf.getChild("input-module").getAttribute("name",null);
if (inputName != null) {
inputConfig = modeConf.getChild("input-module");
}
}
//完成读取配置
//设置模块和读取值
Iterator enumeration = getNames(objectModel,
this.input, this.defaultInput, inputConfig,
null, inputName, mConf);
return enumeration;
}
DefaultsModule:
1.总结:
公共类DefaultsModule 继承了org.apache.cocoon.util.AbstractLogEnabled, 实现了org.apache.cocoon.components.modules.input.InputModule,Configurable,ThreadSafe
设置一些常量。要使用其他模块的输入覆盖这些值,请将此模块与ChainMetaModule和任意数量的其他模块组合。
<values>
<skin>myskin</skin>
<base>baseurl</base>
...
</values>
2.方法:
void configure(Configuration config)
Object getAttribute(String name, Configuration modeConf, Map objectModel)
Iterator getAttributeNames(Configuration modeConf, Map objectModel)
Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
DigestMetaModule:
1.总结:
公共类DigestMetaModule,继承了org.apache.cocoon.components.modules.input.AbstractMetaModule,实现了ThreadSafe接口
从其他模块获取值并返回值的消息摘要的元模块。对于存储和检查密码非常有用。通过嵌套元素“Input module”、消息摘要算法、安全提供程序、salt配置的输入模块,以及通过元素“algorithm”、“provider”、“salt”、“encode”配置的URL编码输出。默认值为“sha”、null、“salt”和“false”。编码的可用值为“无”(返回字节[])、“字符串”(返回哈希为字符串)、“url”(返回url编码字符串)、“十六进制”(返回十六进制值字符串)。
2.方法:
void configure(Configuration config)
Object getAttribute(String name, Configuration modeConf, Map objectModel)
Iterator getAttributeNames(Configuration modeConf, Map objectModel)
Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
3.方法详细:
public Object getAttribute( String name, Configuration modeConf, Map objectModel )
throws ConfigurationException {
if (!this.initialized) {
this.lazy_initialize();
}
if (this.defaultInput == null) {
if (getLogger().isWarnEnabled())
getLogger().warn("No input module given. FAILING");
return null;
}
//获取正确的配置对象
//默认与动态
Configuration inputConfig = null;
String inputName=null;
String algorithm = this.defaultAlgorithm;
String provider = this.defaultProvider;
String salt = this.defaultSalt;
int encode = ((Integer) encodingNames.get(this.defaultEncode)).intValue();
if (modeConf!=null) {
inputName = modeConf.getChild("input-module").getAttribute("name",null);
if (inputName != null) {
inputConfig = modeConf.getChild("input-module");
}
//读取必要的参数
algorithm = modeConf.getAttribute("algorithm", algorithm);
provider = modeConf.getAttribute("provider", provider);
salt = modeConf.getAttribute("salt", salt);
encode = ((Integer) encodingNames.get(modeConf.getAttribute("encode", this.defaultEncode))).intValue();
//首选
algorithm = modeConf.getChild("algorithm").getValue(algorithm);
provider = modeConf.getChild("provider").getValue(provider);
salt = modeConf.getChild("salt").getValue(salt);
encode = ((Integer) encodingNames.get(modeConf.getChild("encode").getValue(this.defaultEncode))).intValue();
}
Object value = getValue(name, objectModel,
this.input, this.defaultInput, this.inputConf,
null, inputName, inputConfig);
if (value != null)
try {
MessageDigest md = (provider==null ? MessageDigest.getInstance(algorithm) :
MessageDigest.getInstance(algorithm,provider));
md.update((salt+(value instanceof String? (String)value : value.toString())).getBytes());
return encodeByteArray(md.digest(),encode);
} catch (NoSuchAlgorithmException nsae) {
if (getLogger().isWarnEnabled())
getLogger().warn("A problem occurred acquiring digest algorithm '" + algorithm
+ (provider==null?"":"' from '"+provider) +"': " + nsae.getMessage());
} catch (NoSuchProviderException nspe) {
if (getLogger().isWarnEnabled())
getLogger().warn("A problem occurred acquiring digest algorithm '" + algorithm
+ (provider==null?"":"' from '"+provider) +"': " + nspe.getMessage());
}
return null;
}