commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kurt Xu" <fxbird1...@163.com>
Subject Re: Re: Re: [digester]How to use SimpleRegexMatcher?
Date Fri, 01 Apr 2011 11:08:57 GMT
Ok, let me change the asking way. How to set RulesA and RulesB at the same  
time?

btw:r u the digester developer?  :)

Thanks.



On Fri, 01 Apr 2011 18:48:09 +0800, Simone Tripodi  
<simonetripodi@apache.org> wrote:

> Sorry, I lost you, didn't understand :( Please provide me a more
> concrete sample, please
> Simo
>
> http://people.apache.org/~simonetripodi/
> http://www.99soft.org/
>
>
>
> On Fri, Apr 1, 2011 at 9:37 AM, Kurt Xu <fxbird1978@163.com> wrote:
>> Hi Simone:
>>  Maybe you got me wrong. Two RulesX needs calling setRules twice  
>> ,right? How
>> could be just set once.
>>
>>  Thanks
>>
>> Kurt
>>
>>
>> On Fri, 01 Apr 2011 15:27:09 +0800, Simone Tripodi
>> <simonetripodi@apache.org> wrote:
>>
>>> Hi Kurt
>>> Ok now I get it: exactly, calling Digetser.setRules() you loose all
>>> the already set Rules instance, so it would be better if you call it
>>> first.
>>> HTH,
>>> Simo
>>>
>>> http://people.apache.org/~simonetripodi/
>>> http://www.99soft.org/
>>>
>>>
>>>
>>> On Fri, Apr 1, 2011 at 9:14 AM, Kurt Xu <fxbird1978@163.com> wrote:
>>>>
>>>> Hi Simone:
>>>>  I mean if I implement rules ,say RulesA, RulesB , then setRules(new
>>>> RulesA()),setRules(new RulesB()).
>>>>  the second calling setRules would reset the first call, right?
>>>>
>>>>
>>>> Thanks.
>>>>
>>>> Kurt
>>>>
>>>>
>>>>
>>>>> Hi Kurt,
>>>>> glad you fixed your issue, but honestly I didn't understand your last
>>>>> question, apologizes :( Can you provide more details/some sample?
>>>>> Thanks!
>>>>> Simo
>>>>>
>>>>> PS nope, I'm from Italy :P
>>>>>
>>>>> http://people.apache.org/~simonetripodi/
>>>>> http://www.99soft.org/
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Apr 1, 2011 at 3:21 AM, Kurt Xu <fxbird1978@163.com> wrote:
>>>>>>
>>>>>> Hi Simone:
>>>>>>
>>>>>>  I tried by myself after emailing and resovled it . the method is
 
>>>>>> the
>>>>>> same
>>>>>> as your reply. I have a question still though.  What if I want do
 
>>>>>> set
>>>>>> two
>>>>>> customized rule . The second setRules can reset or override the 

>>>>>> first
>>>>>> calling, can't it?
>>>>>>
>>>>>>  btw: why u say ni hao, r u from China?
>>>>>>
>>>>>>  Many thanks.
>>>>>>
>>>>>>
>>>>>> Kurt
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, 31 Mar 2011 14:39:59 +0800, Simone Tripodi
>>>>>> <simonetripodi@apache.org> wrote:
>>>>>>
>>>>>>> Ni hao again Kurt,
>>>>>>> just realized that the ParaItemRule implementation is incomplete,
 
>>>>>>> use
>>>>>>> the one below.
>>>>>>> Simo
>>>>>>>
>>>>>>> public final class ParaItemRule extends
>>>>>>> org.apache.commons.digester.Rule
>>>>>>> {
>>>>>>>
>>>>>>>  @Override
>>>>>>>  public void body(String namespace, String name, String text)
>>>>>>> throws Exception {
>>>>>>>     digester.push(new ParaItem(name, text));
>>>>>>>  }
>>>>>>>
>>>>>>>  @Override
>>>>>>>  public void end() throws Exception {
>>>>>>>      digester.pop();
>>>>>>> }
>>>>>>>
>>>>>>> http://people.apache.org/~simonetripodi/
>>>>>>> http://www.99soft.org/
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Mar 31, 2011 at 8:36 AM, Simone Tripodi
>>>>>>> <simonetripodi@apache.org> wrote:
>>>>>>>>
>>>>>>>> Hi Kurt,
>>>>>>>> calling the setRules() method in the way you did, makes the
Rules
>>>>>>>> instance is reset, so you loose the already set patterns.
>>>>>>>> modify the code in order that the setRules() method is invoked
 
>>>>>>>> before
>>>>>>>> setting patterns/rules.
>>>>>>>> HTH,
>>>>>>>> Simo
>>>>>>>>
>>>>>>>> private void parseProject2(URL url) throws IOException, 

>>>>>>>> SAXException
>>>>>>>> {
>>>>>>>>    Digester d = new Digester();
>>>>>>>>    d.setRules(new RegexRules(new SimpleRegexMatcher()));
>>>>>>>>
>>>>>>>>    String pathFunc = "Project/Functionality";
>>>>>>>>    String pathClass = pathFunc + "/Class";
>>>>>>>>    String pathPara = pathClass + "/Parameter";
>>>>>>>>
>>>>>>>>    d.addObjectCreate("Project", Project.class);
>>>>>>>>    d.addSetProperties("Project");
>>>>>>>>
>>>>>>>>    d.addObjectCreate(pathFunc, Functionality.class);
>>>>>>>>    d.addSetNext(pathFunc, "addFunctionality");
>>>>>>>>    d.addSetProperties(pathFunc);
>>>>>>>> //        d.addSetProperties(pathFunc + "/BasicInfo");
>>>>>>>>
>>>>>>>>    d.addObjectCreate(pathClass, ClassItem.class);
>>>>>>>>    d.addSetNext(pathClass, "addClassItem");
>>>>>>>>    d.addSetProperties(pathClass);
>>>>>>>>
>>>>>>>>
>>>>>>>>    d.addObjectCreate(pathPara, Parameter.class);
>>>>>>>>    d.addSetNext(pathPara, "addParameter");
>>>>>>>>
>>>>>>>>
>>>>>>>>    d.addRule(pathPara+"/Main/*", new ParaItemRule());
>>>>>>>>    d.addSetNext(pathPara+"/Main/*", "addMainParaItem");
>>>>>>>>
>>>>>>>>    d.addRule(pathPara +"SubText/*", new ParaItemRule());
>>>>>>>>    d.addSetNext(pathPara +"SubText/*", "addSubParaItem");
>>>>>>>>
>>>>>>>>    d.parse(url);
>>>>>>>>    Project project = (Project) d.getRoot();
>>>>>>>>
>>>>>>>>    System.out.println();
>>>>>>>>  }
>>>>>>>>
>>>>>>>>
>>>>>>>> http://people.apache.org/~simonetripodi/
>>>>>>>> http://www.99soft.org/
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Mar 31, 2011 at 5:44 AM, Kurt Xu <fxbird1978@163.com>
 
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Sorry Simone:
>>>>>>>>>
>>>>>>>>>  I need to paste the full xml and java file to help u
locate the
>>>>>>>>> error,:)
>>>>>>>>>
>>>>>>>>> xml:
>>>>>>>>>
>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>>
>>>>>>>>> <Project name="project1">
>>>>>>>>>  <Functionality description="add comment"
>>>>>>>>> url="http://dev.mygame.co.jp/user/register.do"
>>>>>>>>>                actionName="com.mygame.action.UserAction"
>>>>>>>>> actionMethod="register">
>>>>>>>>>
>>>>>>>>>     <Class name="com.mygame.bo.UserBOImpl" method="register">
>>>>>>>>>         <Parameter name="user" index="0" type="insert">
>>>>>>>>>             <Main>
>>>>>>>>>                 <DeviceType constant="true">pc</DeviceType>
>>>>>>>>>                 <CheckStatus constant="true">N</CheckStatus>
>>>>>>>>>                 <ValidCheck constant="true">Yes</ValidCheck>
>>>>>>>>>                 <CheckDesc>first check desc</CheckDesc>
>>>>>>>>>                 <UserId>userid</UserId>
>>>>>>>>>                 <PrimaryKey1>cmtno</PrimaryKey1>
>>>>>>>>>             </Main>
>>>>>>>>>             <SubText>
>>>>>>>>>                 <!--<Type constant="true/false"></Type>-->
>>>>>>>>>                 <!--<Title>title</Title>-->
>>>>>>>>>                 <Content>contents</Content>
>>>>>>>>>                 <WriterId>writeid</WriterId>
>>>>>>>>>                 <WriterUserName>userid</WriterUserName>
>>>>>>>>>             </SubText>
>>>>>>>>>         </Parameter>
>>>>>>>>>         <Parameter name="postVO" index="1" type="update"
>>>>>>>>> table="MOCO_CODICMT">
>>>>>>>>>             .....
>>>>>>>>>         </Parameter>
>>>>>>>>>     </Class>
>>>>>>>>>  </Functionality>
>>>>>>>>> </Project>
>>>>>>>>>
>>>>>>>>> java code:
>>>>>>>>>
>>>>>>>>> parser method:
>>>>>>>>> private void parseProject2(URL url) throws IOException,
 
>>>>>>>>> SAXException
>>>>>>>>> {
>>>>>>>>>     Digester d = new Digester();
>>>>>>>>>
>>>>>>>>>     String pathFunc = "Project/Functionality";
>>>>>>>>>     String pathClass = pathFunc + "/Class";
>>>>>>>>>     String pathPara = pathClass + "/Parameter";
>>>>>>>>>
>>>>>>>>>     d.addObjectCreate("Project", Project.class);
>>>>>>>>>     d.addSetProperties("Project");
>>>>>>>>>
>>>>>>>>>     d.addObjectCreate(pathFunc, Functionality.class);
>>>>>>>>>     d.addSetNext(pathFunc, "addFunctionality");
>>>>>>>>>     d.addSetProperties(pathFunc);
>>>>>>>>> //        d.addSetProperties(pathFunc + "/BasicInfo");
>>>>>>>>>
>>>>>>>>>     d.addObjectCreate(pathClass, ClassItem.class);
>>>>>>>>>     d.addSetNext(pathClass, "addClassItem");
>>>>>>>>>     d.addSetProperties(pathClass);
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>     d.addObjectCreate(pathPara, Parameter.class);
>>>>>>>>>     d.addSetNext(pathPara, "addParameter");
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>     d.setRules(new RegexRules(new SimpleRegexMatcher()));
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>     d.addRule(pathPara+"/Main/*", new ParaItemRule());
>>>>>>>>>     d.addSetNext(pathPara+"/Main/*", "addMainParaItem");
>>>>>>>>>
>>>>>>>>>     d.addRule(pathPara +"SubText/*", new ParaItemRule());
>>>>>>>>>     d.addSetNext(pathPara +"SubText/*", "addSubParaItem");
>>>>>>>>>
>>>>>>>>>     d.parse(url);
>>>>>>>>>     Project project = (Project) d.getRoot();
>>>>>>>>>
>>>>>>>>>     System.out.println();
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>> ClassItem.java ---a pojo for saving all its Parameters
>>>>>>>>>
>>>>>>>>> public class ClassItem {
>>>>>>>>>
>>>>>>>>>     private String method;
>>>>>>>>>     private String name;
>>>>>>>>>  private String handler="";
>>>>>>>>>  private List<Parameter> parameters;
>>>>>>>>>
>>>>>>>>>  public ClassItem(String name, String method, List<Parameter>
>>>>>>>>> parameters)
>>>>>>>>> {
>>>>>>>>>     this.name = name;
>>>>>>>>>     this.method = method;
>>>>>>>>>     this.parameters = parameters;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public ClassItem() {
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public String getMethod() {
>>>>>>>>>     return method;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public void setMethod(String method) {
>>>>>>>>>     this.method = method;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public String getName() {
>>>>>>>>>     return name;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public void setName(String name) {
>>>>>>>>>     this.name = name;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public void addParameter(Parameter parameter){
>>>>>>>>>     System.out.println("add parameter");
>>>>>>>>>     if (parameters==null){
>>>>>>>>>         parameters=new ArrayList<Parameter>();
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>>     parameters.add(parameter);
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public List<Parameter> getParameters() {
>>>>>>>>>     return parameters;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public String getHandler() {
>>>>>>>>>     return handler;
>>>>>>>>>  }
>>>>>>>>>
>>>>>>>>>  public void setHandler(String handler) {
>>>>>>>>>     this.handler = handler;
>>>>>>>>>  }
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> thanks.
>>>>>>>>>
>>>>>>>>> Kurt
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi Kurt,
>>>>>>>>>> I suggest you first creating a digester rule that
helps you
>>>>>>>>>> handling
>>>>>>>>>> a
>>>>>>>>>> generic ParaItem element:
>>>>>>>>>>
>>>>>>>>>> public final class ParaItemRule extends
>>>>>>>>>> org.apache.commons.digester.Rule {
>>>>>>>>>>
>>>>>>>>>>  @Override
>>>>>>>>>>  public void body(String namespace, String name,
String text)
>>>>>>>>>> throws Exception {
>>>>>>>>>>     digester.push(new ParaItem(name, text));
>>>>>>>>>>  }
>>>>>>>>>>
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> then plug the digester rules in the following way:
>>>>>>>>>>
>>>>>>>>>>     Digester digester = new Digester();
>>>>>>>>>>
>>>>>>>>>>     /* take a look at
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> http://commons.apache.org/digester/apidocs/org/apache/commons/digester/SimpleRegexMatcher.html
>>>>>>>>>> */
>>>>>>>>>>     digester.setRules(new RegexRules(new SimpleRegexMatcher()));
>>>>>>>>>>
>>>>>>>>>>     digester.addRule("Class/Parameter/Main/*", new
 
>>>>>>>>>> ParaItemRule());
>>>>>>>>>>     digester.addSetNext("Class/Parameter/Main/*",
>>>>>>>>>> "addMainParaItem");
>>>>>>>>>>
>>>>>>>>>>     digester.addRule("Class/Parameter/SubText/*",
new
>>>>>>>>>> ParaItemRule());
>>>>>>>>>>     digester.addSetNext("Class/Parameter/SubText/*",
>>>>>>>>>> "addSubParaItem");
>>>>>>>>>>
>>>>>>>>>> THT, let me know! ;)
>>>>>>>>>> Simo
>>>>>>>>>>
>>>>>>>>>> http://people.apache.org/~simonetripodi/
>>>>>>>>>> http://www.99soft.org/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Mar 30, 2011 at 11:49 AM, fxbird <fxbird@gmail.com>
 
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi all:
>>>>>>>>>>>
>>>>>>>>>>> I want to match some unknow elements nested some
parent element
>>>>>>>>>>> where
>>>>>>>>>>> some newly defined element might be added sometime.
>>>>>>>>>>>
>>>>>>>>>>> The sample xml is as below:
>>>>>>>>>>>
>>>>>>>>>>> <Class
>>>>>>>>>>> name="jp.hangame.motecoorde.coordinate.bo.CoordinateCommentBoImpl"
>>>>>>>>>>> method="entry">
>>>>>>>>>>>        <Parameter name="comment" index="0"
type="insert"
>>>>>>>>>>> table="MOCO_CODICMT">
>>>>>>>>>>>            <Main>
>>>>>>>>>>>                <DeviceType constant="true">pc</DeviceType>
>>>>>>>>>>>                <CheckStatus constant="true">N</CheckStatus>
>>>>>>>>>>>                <ValidCheck constant="true">Yes</ValidCheck>
>>>>>>>>>>>                <CheckDesc></CheckDesc>
>>>>>>>>>>>                <UserId>userid</UserId>
>>>>>>>>>>>                <PrimaryKey1>cmtno</PrimaryKey1>
>>>>>>>>>>>            </Main>
>>>>>>>>>>>            <SubText>
>>>>>>>>>>>                <!--<Type constant="true/false"></Type>-->
>>>>>>>>>>>                <!--<Title>title</Title>-->
>>>>>>>>>>>                <Content>contents</Content>
>>>>>>>>>>>                <WriterId>writeid</WriterId>
>>>>>>>>>>>                <WriterUserName>userid</WriterUserName>
>>>>>>>>>>>            </SubText>
>>>>>>>>>>>        </Parameter>
>>>>>>>>>>> </Class>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  The elements under <Main> and <SubText>
are all variable  
>>>>>>>>>>> someday,
>>>>>>>>>>> both
>>>>>>>>>>> name and amounts. So I define a ParaItem pojo
to wrap sub  
>>>>>>>>>>> elements
>>>>>>>>>>> of
>>>>>>>>>>> the
>>>>>>>>>>> two element.  That means I want to create a Paraitem
for every  
>>>>>>>>>>> sub
>>>>>>>>>>> element
>>>>>>>>>>> ,whatever its name is, then add the object to
paraent object
>>>>>>>>>>> Parameter's
>>>>>>>>>>> list property saving all the related Paraitem.
>>>>>>>>>>>
>>>>>>>>>>>  The Paraitem source code is following:
>>>>>>>>>>>
>>>>>>>>>>> public class ParaItem {
>>>>>>>>>>>  private String elemName;
>>>>>>>>>>>  private String argPropNameOrValue;
>>>>>>>>>>>  private boolean isConstant;
>>>>>>>>>>>  public ParaItem() {
>>>>>>>>>>>  }
>>>>>>>>>>>  public ParaItem(String elemName, String argPropNameOrValue,
>>>>>>>>>>>  boolean
>>>>>>>>>>> constant) {
>>>>>>>>>>>    this.elemName = elemName;
>>>>>>>>>>>    this.argPropNameOrValue = argPropNameOrValue;
>>>>>>>>>>>    isConstant = constant;
>>>>>>>>>>>  }
>>>>>>>>>>>  public ParaItem(String elemName, String argPropNameOrValue)
{
>>>>>>>>>>>    this.elemName = elemName;
>>>>>>>>>>>    this.argPropNameOrValue = argPropNameOrValue;
>>>>>>>>>>>  }
>>>>>>>>>>>  public String getElemName() {
>>>>>>>>>>>    return elemName;
>>>>>>>>>>>  }
>>>>>>>>>>>  public String getArgPropNameOrValue() {
>>>>>>>>>>>    return argPropNameOrValue;
>>>>>>>>>>>  }
>>>>>>>>>>>  public boolean isConstant() {
>>>>>>>>>>>    return isConstant;
>>>>>>>>>>>  }
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  The Parameter source code is below:
>>>>>>>>>>> public class Parameter {
>>>>>>>>>>>  private String index;
>>>>>>>>>>>  private String operType;
>>>>>>>>>>>  private String dataType;
>>>>>>>>>>>  private List<ParaItem> listMainFiled =new
 
>>>>>>>>>>> ArrayList<ParaItem>();
>>>>>>>>>>>  private List<ParaItem> listSubField =new
 
>>>>>>>>>>> ArrayList<ParaItem>();
>>>>>>>>>>>  public Parameter(String operType) {
>>>>>>>>>>>    this.operType = operType;
>>>>>>>>>>>  }
>>>>>>>>>>>  public List<ParaItem> getListMainFiled()
{
>>>>>>>>>>>    return listMainFiled;
>>>>>>>>>>>  }
>>>>>>>>>>>  public void setListMainFiled(List<ParaItem>
listMainFiled) {
>>>>>>>>>>>    this.listMainFiled = listMainFiled;
>>>>>>>>>>>  }
>>>>>>>>>>>  public List<ParaItem> getListSubField()
{
>>>>>>>>>>>    return listSubField;
>>>>>>>>>>>  }
>>>>>>>>>>>  public void setListSubField(List<ParaItem>
listSubField) {
>>>>>>>>>>>    this.listSubField = listSubField;
>>>>>>>>>>>  }
>>>>>>>>>>>  public String getIndex() {
>>>>>>>>>>>    return index;
>>>>>>>>>>>  }
>>>>>>>>>>>  public void setIndex(String index) {
>>>>>>>>>>>    this.index = index;
>>>>>>>>>>>  }
>>>>>>>>>>>  public String getOperType() {
>>>>>>>>>>>    return operType;
>>>>>>>>>>>  }
>>>>>>>>>>>  public void setOperType(String operType) {
>>>>>>>>>>>    this.operType = operType;
>>>>>>>>>>>  }
>>>>>>>>>>>  public String getDataType() {
>>>>>>>>>>>    return dataType;
>>>>>>>>>>>  }
>>>>>>>>>>>  public void setDataType(String dataType) {
>>>>>>>>>>>    this.dataType = dataType;
>>>>>>>>>>>  }
>>>>>>>>>>>  public void addMainParaItem(ParaItem pi){
>>>>>>>>>>>   getListMainFiled().add(pi);
>>>>>>>>>>>  }
>>>>>>>>>>>  public void addSubParaItem(ParaItem pi){
>>>>>>>>>>>    getListSubField().add(pi);
>>>>>>>>>>>  }
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>>  I suppose regex rule is the best way to make
it , but googling
>>>>>>>>>>> and
>>>>>>>>>>> the
>>>>>>>>>>> javadoc doesn't tell me how to set a regex expression
for a
>>>>>>>>>>> pattern.
>>>>>>>>>>> No way
>>>>>>>>>>> out, who knows the solotion , thanks.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  Kurt
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>>>>>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Using Opera's revolutionary email client:  
>>>>>>>>> http://www.opera.com/mail/
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>>>>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Using Opera's revolutionary email client: http://www.opera.com/mail/
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>>
>>>>
>>>>
>>>> --
>>>> Using Opera's revolutionary email client: http://www.opera.com/mail/
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>> For additional commands, e-mail: user-help@commons.apache.org
>>>
>>
>>
>> --
>> Using Opera's revolutionary email client: http://www.opera.com/mail/
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>


-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message