commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simone Tripodi <simonetrip...@apache.org>
Subject Re: Re: Re: [digester]How to use SimpleRegexMatcher?
Date Fri, 01 Apr 2011 11:19:26 GMT
Hi Kurt,
OK now I got it :D The Digester instance supports only 1 Rules
instance at time, you can't use 2 or more Rules instance at the same
time.
BTW all Rules implementations should support the basic matching
pattern, so the Regexp one I suggested you would work as well for your
case.

Even if I joined the team on 2010, yes, I'm one of Digester
committers; there's a new version of Digester in Sandbox[1] I
developed, I would really appreciate if you users can provide
feedbacks, contains then same features but quite different APIs,
thanks in advance :)

Have a nice day,
Simo

[1] http://commons.apache.org/sandbox/digester3/

http://people.apache.org/~simonetripodi/
http://www.99soft.org/



On Fri, Apr 1, 2011 at 1:08 PM, Kurt Xu <fxbird1978@163.com> wrote:
> 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
>
>

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


Mime
View raw message