2021SC@SDUSC山东大学软件学院软件工程应用与实践 COCOON 第十六篇

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;        
    }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值