You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2002/12/11 23:12:11 UTC

cvs commit: jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester IDBean.java IDTest1.xml SimpleReadTest.xml TestIDRead.java

rdonkin     2002/12/11 14:12:11

  Modified:    betwixt/src/java/org/apache/commons/betwixt
                        ElementDescriptor.java
               betwixt/src/java/org/apache/commons/betwixt/digester
                        XMLIntrospectorHelper.java
               betwixt/src/java/org/apache/commons/betwixt/expression
                        MethodUpdater.java
               betwixt/src/java/org/apache/commons/betwixt/io
                        BeanCreateRule.java BeanReader.java
               betwixt/src/test/org/apache/commons/betwixt
                        TestBeanReader.java
               betwixt/src/test/org/apache/commons/betwixt/digester
                        IDBean.java IDTest1.xml SimpleReadTest.xml
                        TestIDRead.java
  Log:
  Big changes for what was a small problem. I think that there was a bad fix to a bug which had broken an untested part of the system. Note that the xml produced by these changes differs from that created before. I'm pretty sure that this is how it used to work but this may break some things.
  
  Revision  Changes    Path
  1.4       +3 -2      jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/ElementDescriptor.java
  
  Index: ElementDescriptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/ElementDescriptor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElementDescriptor.java	1 Jul 2002 18:43:00 -0000	1.3
  +++ ElementDescriptor.java	11 Dec 2002 22:12:10 -0000	1.4
  @@ -129,8 +129,9 @@
   
       public String toString() {
           return 
  -            "ElementDescriptor[qname=" + getQualifiedName() + ",class=" + getPropertyType() 
  -            + ",singular=" + getSingularPropertyType() + "]";
  +            "ElementDescriptor[qname=" + getQualifiedName() + ",pname=" + getPropertyName() 
  +            + ",class=" + getPropertyType() + ",singular=" + getSingularPropertyType()
  +            + ",updater=" + getUpdater() + "]";
       }
       
       /** Creates a <code>ElementDescriptor</code> with namespace URI and qualified name */
  
  
  
  1.10      +15 -5     jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/digester/XMLIntrospectorHelper.java
  
  Index: XMLIntrospectorHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/digester/XMLIntrospectorHelper.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XMLIntrospectorHelper.java	7 Nov 2002 16:15:08 -0000	1.9
  +++ XMLIntrospectorHelper.java	11 Dec 2002 22:12:11 -0000	1.10
  @@ -351,16 +351,21 @@
                       Class[] types = method.getParameterTypes();
                       if ( types != null && types.length == 1 ) {
                           String propertyName = Introspector.decapitalize( name.substring(3) );
  +                        if ( log.isTraceEnabled() ) {
  +                            log.trace( name + "->" + propertyName );
  +                        }
   
                           // now lets try find the ElementDescriptor which displays
                           // a property which starts with propertyName
                           // and if so, we'll set a new Updater on it if there
                           // is not one already
  -                        ElementDescriptor descriptor = findGetCollectionDescriptor( introspector, rootDescriptor, propertyName );
  +                        ElementDescriptor descriptor = 
  +                            findGetCollectionDescriptor( introspector, rootDescriptor, propertyName );
                               
  -                            if ( log.isDebugEnabled() ) {
  -                                log.debug( "!! " + propertyName + " -> " + descriptor);
  -                            }
  +                        if ( log.isDebugEnabled() ) {	
  +                            log.debug( "!! " + propertyName + " -> " + descriptor );
  +                            log.debug( "!! " + name + " -> " + descriptor.getPropertyName() );
  +                        }
                           
                           if ( descriptor != null ) {
                               descriptor.setUpdater( new MethodUpdater( method ) );
  @@ -440,7 +445,12 @@
           // create the Map of propertyName -> descriptor that the PluralStemmer will choose
           Map map = new HashMap();
           //String propertyName = rootDescriptor.getPropertyName();
  -        if (propertyName != null) {
  +        if ( log.isTraceEnabled() ) {
  +            log.trace( "findPluralDescriptor( " + propertyName 
  +                + " ):root property name=" + rootDescriptor.getPropertyName() );
  +        }
  +        
  +        if (rootDescriptor.getPropertyName() != null) {
               map.put(propertyName, rootDescriptor);
           }
           makeElementDescriptorMap( rootDescriptor, map );
  
  
  
  1.4       +6 -1      jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java
  
  Index: MethodUpdater.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MethodUpdater.java	9 Jul 2002 21:50:31 -0000	1.3
  +++ MethodUpdater.java	11 Dec 2002 22:12:11 -0000	1.4
  @@ -78,7 +78,12 @@
   public class MethodUpdater implements Updater {
   
       /** Logger */
  -    private static final Log log = LogFactory.getLog( MethodUpdater.class );
  +    private static Log log = LogFactory.getLog( MethodUpdater.class );
  +
  +    /** Programmatically set log */
  +    public static void setLog( Log aLog ) {
  +        log = aLog;
  +    }
       
       /** The method to call on the bean */
       private Method method;
  
  
  
  1.12      +47 -14    jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/io/BeanCreateRule.java
  
  Index: BeanCreateRule.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/io/BeanCreateRule.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- BeanCreateRule.java	29 Aug 2002 21:40:29 -0000	1.11
  +++ BeanCreateRule.java	11 Dec 2002 22:12:11 -0000	1.12
  @@ -94,11 +94,11 @@
   public class BeanCreateRule extends Rule {
   
       /** Logger */
  -    private static final Log log = LogFactory.getLog( BeanCreateRule.class );
  +    private static Log log = LogFactory.getLog( BeanCreateRule.class );
       
       /** Set log to be used by <code>BeanCreateRule</code> instances */
  -    public static void setLog(Log log) {
  -        log = log;
  +    public static void setLog(Log aLog) {
  +        log = aLog;
       }
       
       /** The descriptor of this element */
  @@ -113,8 +113,6 @@
       private Class beanClass;
       /** The prefix added to digester rules */
       private String pathPrefix;
  -    /** Beans digested indexed by <code>ID</code> */
  -    private Map beansById = new HashMap();
       /** Use id's to match beans? */
       private boolean matchIDs = true;
       
  @@ -297,7 +295,7 @@
                       // XXX so i'm leaving this till later
                       String id = attributes.getValue( "id" );
                       if ( id != null ) {
  -                        beansById.put( id, instance );
  +                        getBeansById().put( id, instance );
                       }
                   }
               }
  @@ -323,21 +321,23 @@
   
               if ( updater != null ) {
                   if ( log.isDebugEnabled() ) {
  -                    log.debug( "Calling updater for: " + descriptor + " with: " + instance + " on bean: " + context.getBean() );
  +                    log.debug( "Calling updater for: " + descriptor + " with: " 
  +                        + instance + " on bean: " + context.getBean() );
                   }
                   updater.update( context, instance );
  +            } else {
  +                if ( log.isDebugEnabled() ) {
  +                    log.debug( "No updater for: " + descriptor + " with: " 
  +                        + instance + " on bean: " + context.getBean() );
  +                }
               }
  -            
           }
       }
   
       /** 
        * Tidy up.
        */
  -    public void finish() {
  -        // clear beans map
  -        beansById.clear();
  -    }
  +    public void finish() {}
   
   
       // Implementation methods
  @@ -357,14 +357,22 @@
                   // XXX need to check up about ordering
                   // XXX this is a very simple system that assumes that id occurs before idrefs
                   // XXX would need some thought about how to implement a fuller system
  -                Object bean = beansById.get( idref );
  +                log.trace( "Found IDREF" );
  +                Object bean = getBeansById().get( idref );
                   if ( bean != null ) {
  +                    if (log.isTraceEnabled()) {
  +                        log.trace( "Matched bean " + bean );
  +                    }
                       return bean;
                   }
  +                log.trace( "No match found" );
               }
           }
           
           try {
  +            if (log.isTraceEnabled()) {
  +                log.trace( "Creating instance of " + beanClass );
  +            }
               return beanClass.newInstance();
           }
           catch (Exception e) {
  @@ -408,12 +416,13 @@
                   String propertyName = childDescriptor.getPropertyName();
                   String qualifiedName = childDescriptor.getQualifiedName();
                   if ( qualifiedName == null ) {
  -                    log.trace("Ignoring");
  +                    log.trace( "Ignoring" );
                       continue;
                   }
                   String path = prefix + qualifiedName;
                   // this code is for making sure that recursive elements
                   // can also be used..
  +                
                   if (qualifiedName.equals(currentDescriptor.getQualifiedName())) {
                       log.trace("Creating generic rule for recursive elements");
                       int index = -1;
  @@ -421,6 +430,7 @@
                           index = prefix.indexOf(qualifiedName);
                           if (index == -1) {
                               // shouldn't happen.. 
  +                            log.debug( "Oops - this shouldn't happen" );
                               continue;
                           }
                           int removeSlash = prefix.endsWith("/")?1:0;
  @@ -539,8 +549,31 @@
           else {
               if ( log.isDebugEnabled() ) {
                   log.debug( "Ignoring duplicate digester rule for path: " + path + " rule: " + rule );
  +                log.debug( "New rule (not added): " + rule );
  +                log.debug( "Existing rule:" + matches.get(0) );
               }
           }
  +    }    
  +
  +    /**
  +     * Get the map used to index beans (previously read in) by id.
  +     * This is stored in the evaluation context.
  +     */
  +    protected Map getBeansById() {
  +        //
  +        // we need a single index for beans read in by id
  +        // so that we can use them for idref-matching
  +        // store this in the context
  +        //
  +        Map beansById = (Map) context.getVariable( "beans-index" );
  +        if ( beansById == null ) {
  +            // lazy creation
  +            beansById = new HashMap();
  +            context.setVariable( "beans-index", beansById );
  +            log.trace( "Created new index-by-id map" );
  +        }
  +        
  +        return beansById;
       }
       
       /**
  
  
  
  1.6       +3 -0      jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/io/BeanReader.java
  
  Index: BeanReader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/io/BeanReader.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BeanReader.java	24 Oct 2002 11:13:22 -0000	1.5
  +++ BeanReader.java	11 Dec 2002 22:12:11 -0000	1.6
  @@ -134,6 +134,9 @@
        */
       public void registerBeanClass(Class beanClass) throws IntrospectionException {
           if ( ! registeredClasses.contains( beanClass ) ) {
  +            if ( log.isTraceEnabled() ) {
  +                log( "Registering class " + beanClass );
  +            }
               registeredClasses.add( beanClass );
               
               // introspect and find the ElementDescriptor to use as the root
  
  
  
  1.7       +58 -0     jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/TestBeanReader.java
  
  Index: TestBeanReader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/TestBeanReader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestBeanReader.java	7 Nov 2002 16:15:08 -0000	1.6
  +++ TestBeanReader.java	11 Dec 2002 22:12:11 -0000	1.7
  @@ -30,6 +30,9 @@
   
   import org.apache.commons.betwixt.io.BeanReader;
   import org.apache.commons.betwixt.io.BeanWriter;
  +import org.apache.commons.betwixt.io.BeanCreateRule;
  +
  +import org.apache.commons.betwixt.digester.XMLIntrospectorHelper;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -198,6 +201,61 @@
       
       private void checkBean(AdderButNoPropertyBean bean) throws Exception {
           assertEquals("Bad addString call count", 3, bean.stringCallCount());
  +    }
  +    
  +    private void checkBean(PersonListBean bean) throws Exception {
  +        assertEquals("PersonList size", 4, bean.getPersonList().size());
  +        assertEquals("PersonList value (1)", "Athos", ((PersonBean) bean.getPersonList().get(0)).getName());
  +        assertEquals("PersonList value (2)", "Porthos", ((PersonBean) bean.getPersonList().get(1)).getName());
  +        assertEquals("PersonList value (3)", "Aramis", ((PersonBean) bean.getPersonList().get(2)).getName());
  +        assertEquals("PersonList value (4)", "D'Artagnan", ((PersonBean) bean.getPersonList().get(3)).getName());
  +    }
  +    
  +    public void testPersonList() throws Exception {
  +
  +        PersonListBean people = new PersonListBean();
  +        people.addPerson(new PersonBean(22, "Athos"));
  +        people.addPerson(new PersonBean(25, "Porthos"));
  +        people.addPerson(new PersonBean(23, "Aramis"));
  +        people.addPerson(new PersonBean(18, "D'Artagnan"));
  +        
  +        checkBean(people);
  +//
  +// Logging and debugging code for this method commented out
  +//
  +//        writeBean(people);
  +
  +//        SimpleLog log = new SimpleLog("[TestPersonList:XMLIntrospectorHelper]");
  +//        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
  +//        XMLIntrospectorHelper.setLog(log);
  +        
  +        
  +//        log = new SimpleLog("[TestPersonList:BeanCreateRule]");
  +//        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
  +//        BeanCreateRule.setLog(log);
  +        
  +//        log = new SimpleLog("[TestPersonList:XMLIntrospector]");
  +//        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
  +        
  +        BeanReader reader = new BeanReader();
  +//        reader.getXMLIntrospector().setLog(log);
  +              
  +//        log = new SimpleLog("[TestPersonList:BeanReader]");
  +//        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
  +        
  +//        reader.setLog(log);
  +        reader.registerBeanClass( PersonListBean.class );
  +        
  +        InputStream in =  
  +            new FileInputStream( getTestFile("src/test/org/apache/commons/betwixt/person-list.xml") );
  +        try {
  +        
  +            checkBean((PersonListBean) reader.parse( in ));
  +            
  +        }
  +        finally {
  +            in.close();
  +        }   
       }
   }
   
  
  
  
  1.2       +11 -4     jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/IDBean.java
  
  Index: IDBean.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/IDBean.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IDBean.java	29 Aug 2002 19:28:50 -0000	1.1
  +++ IDBean.java	11 Dec 2002 22:12:11 -0000	1.2
  @@ -65,6 +65,9 @@
   import java.util.List;
   import java.util.ArrayList;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
  +
   /** Bean for testing ID-IDRef reading.
     *
     * @author Robert Burrell Donkin
  @@ -72,6 +75,8 @@
     */
   public class IDBean {
       
  +    static Log log = LogFactory.getLog( IDBean.class );
  +    
       private String id;
       private String name;
       
  @@ -79,7 +84,7 @@
       
       private List children = new ArrayList();
       
  -    public IDBean() {}
  +    public IDBean() { log.debug("Created"); }
       
       public IDBean(String id, String name) {
           setId(id);
  @@ -99,6 +104,7 @@
       }	
       
       public void setName(String name) {
  +        log.debug("Set name: " + name);
           this.name = name;
       }
   
  @@ -107,6 +113,7 @@
       }
       
       public void addChild(IDBean child) {
  +        log.debug("Added child " + child + " to bean " + this);
           children.add(child);
       }
       
  
  
  
  1.2       +7 -7      jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/IDTest1.xml
  
  Index: IDTest1.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/IDTest1.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IDTest1.xml	29 Aug 2002 21:22:52 -0000	1.1
  +++ IDTest1.xml	11 Dec 2002 22:12:11 -0000	1.2
  @@ -2,23 +2,23 @@
   <IDBean id="1">
       <name>alpha</name>
       <children>
  -        <IDBean id="2">
  +        <child id="2">
               <name>beta</name>
               <children/>
               <id>two</id>
  -        </IDBean>
  -        <IDBean id="3">
  +        </child>
  +        <child id="3">
               <name>gamma</name>
               <children>	
  -                <IDBean id="4">
  +                <child id="4">
                       <name>epsilon</name>
                       <children/>
                       <id>four</id>	
  -                </IDBean>
  -                <IDBean idref="2"/>
  +                </child>
  +                <child idref="2"/>
               </children>
               <id>three</id>
  -        </IDBean>
  +        </child>
       </children>
       <id>one</id>
   </IDBean>
  
  
  
  1.2       +5 -5      jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/SimpleReadTest.xml
  
  Index: SimpleReadTest.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/SimpleReadTest.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SimpleReadTest.xml	29 Aug 2002 19:28:50 -0000	1.1
  +++ SimpleReadTest.xml	11 Dec 2002 22:12:11 -0000	1.2
  @@ -2,16 +2,16 @@
   <IDBean id="1">
       <name>alpha</name>
       <children>
  -        <IDBean id="2">
  +        <child id="2">
               <name>beta</name>
               <children/>
               <id>two</id>
  -        </IDBean>
  -        <IDBean id="3">
  +        </child>
  +        <child id="3">
               <name>gamma</name>
               <children/>
               <id>three</id>
  -        </IDBean>
  +        </child>
       </children>
       <id>one</id>
  -</IDBean>
  \ No newline at end of file
  +</IDBean>
  
  
  
  1.3       +30 -16    jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/TestIDRead.java
  
  Index: TestIDRead.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/digester/TestIDRead.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestIDRead.java	29 Aug 2002 21:22:52 -0000	1.2
  +++ TestIDRead.java	11 Dec 2002 22:12:11 -0000	1.3
  @@ -65,6 +65,8 @@
   import java.io.FileInputStream;
   import java.io.InputStream;
   
  +import org.apache.commons.betwixt.expression.MethodUpdater;
  +
   import org.apache.commons.betwixt.io.BeanWriter;
   import org.apache.commons.betwixt.io.BeanReader;
   import org.apache.commons.betwixt.io.BeanCreateRule;
  @@ -107,19 +109,27 @@
           BeanReader reader = new BeanReader();
           
   //         logging just for this method
  -//        SimpleLog log = new SimpleLog("[XMLIntrospectorHelper]");
  +//        SimpleLog log = new SimpleLog("[testSimpleRead:XMLIntrospectorHelper]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
   //        XMLIntrospectorHelper.setLog(log);
   //        
  -//        log = new SimpleLog("[BeanCreateRule]");
  +//        log = new SimpleLog("[testSimpleRead:MethodUpdater]");
  +//        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
  +//        MethodUpdater.setLog(log);
  +        
  +//        log = new SimpleLog("[testSimpleRead:BeanCreateRule]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
   //        BeanCreateRule.setLog(log);
  -//
  -//        log = new SimpleLog("[BeanReader]");
  +
  +//        log = new SimpleLog("[testSimpleRead:IDBean]");
  +//        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
  +//        IDBean.log = log;
  +
  +//        log = new SimpleLog("[testSimpleRead:BeanReader]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);        
   //        reader.setLog(log);
  -//
  -//        log = new SimpleLog("[XMLIntrospector]");
  +
  +//        log = new SimpleLog("[testSimpleRead:XMLIntrospector]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
   //        reader.getXMLIntrospector().setLog(log);
           
  @@ -128,8 +138,11 @@
           InputStream in = new FileInputStream( 
               getTestFile("src/test/org/apache/commons/betwixt/digester/SimpleReadTest.xml") );
               
  -        try {
  +        try {        
  +//            log = new SimpleLog("[testSimpleRead]");
  +//            log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
               Object obj = reader.parse( in );
  +//            log.debug(obj);
               
               assertEquals("Read bean type is incorrect", true, (obj instanceof IDBean) );
               IDBean alpha = (IDBean) obj;
  @@ -152,19 +165,19 @@
           BeanReader reader = new BeanReader();
           
   //         logging just for this method
  -//        SimpleLog log = new SimpleLog("[XMLIntrospectorHelper]");
  +//        SimpleLog log = new SimpleLog("[testIDRead:XMLIntrospectorHelper]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
   //        XMLIntrospectorHelper.setLog(log);
   //        
  -//        log = new SimpleLog("[BeanCreateRule]");
  +//        log = new SimpleLog("[testIDRead:BeanCreateRule]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
   //        BeanCreateRule.setLog(log);
   //
  -//        log = new SimpleLog("[BeanReader]");
  +//        log = new SimpleLog("[testIDRead:BeanReader]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);        
   //        reader.setLog(log);
   //
  -//        log = new SimpleLog("[XMLIntrospector]");
  +//        log = new SimpleLog("[testIDRead:XMLIntrospector]");
   //        log.setLevel(SimpleLog.LOG_LEVEL_TRACE);
   //        reader.getXMLIntrospector().setLog(log);
           
  @@ -189,6 +202,7 @@
               assertEquals("Wrong list size (B)", 2 ,  gamma.getChildren().size());
               
               IDBean sonOfGamma = (IDBean) gamma.getChildren().get(1);
  +            
               assertEquals("Wrong id (A)", "two" ,  sonOfGamma.getId());
               assertEquals("Wrong name (C)", "beta" ,  sonOfGamma.getName());
               
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>