plynch      2002/09/22 02:16:49

  Modified:    jelly/src/java/org/apache/commons/jelly/tags/ant AntTag.java
  Log:
  o it is possible that an AntTag attribute may contain a composite expression. The 
old code simply called the toString on such an object which printed whatever the 
toString of the CompositeExpression gives which is gobblygook - instead now we use the 
new evaluateAsValue method to hopefully get something more useful - I can't think of a 
case where this would be bad and it plays better with maven so I add this fix
  o trimmed some line endings
  
  Revision  Changes    Path
  1.11      +27 -20    
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/ant/AntTag.java
  
  Index: AntTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/ant/AntTag.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AntTag.java       11 Sep 2002 07:18:34 -0000      1.10
  +++ AntTag.java       22 Sep 2002 09:16:49 -0000      1.11
  @@ -76,6 +76,7 @@
   import org.apache.commons.jelly.MapTagSupport;
   import org.apache.commons.jelly.Tag;
   import org.apache.commons.jelly.XMLOutput;
  +import org.apache.commons.jelly.expression.Expression;
   import org.apache.commons.jelly.impl.BeanSource;
   import org.apache.commons.jelly.impl.StaticTag;
   import org.apache.commons.logging.Log;
  @@ -132,7 +133,7 @@
           Project project = getAntProject();
           String tagName = getTagName();
           Object parentObject = null;
  -        
  +
           // must be a datatype.
           TaskSource ancestor = (TaskSource) findAncestorWithClass( TaskSource.class 
);
           if ( ancestor != null ) {
  @@ -140,14 +141,14 @@
           }
   
           // lets assume that Task instances are not nested inside other Task 
instances
  -        // for example <manifest> inside a <jar> should be a nested object, where 
as 
  +        // for example <manifest> inside a <jar> should be a nested object, where as
           // if the parent is not a Task the <manifest> should create a ManifestTask
   
  -        if ( ! ( parentObject instanceof Task ) && 
  -            project.getTaskDefinitions().containsKey( tagName ) ) {                 
           
  -            
  +        if ( ! ( parentObject instanceof Task ) &&
  +            project.getTaskDefinitions().containsKey( tagName ) ) {
  +
               if ( log.isDebugEnabled() ) {
  -                log.debug( "Creating an ant Task for name: " + tagName );           
 
  +                log.debug( "Creating an ant Task for name: " + tagName );
               }
               // the following algorithm follows the lifetime of a tag
               // http://jakarta.apache.org/ant/manual/develop.html#writingowntask
  @@ -199,8 +200,8 @@
           }
           else {
   
  -            if ( log.isDebugEnabled() ) {                            
  -                log.debug( "Creating a nested object name: " + tagName );           
 
  +            if ( log.isDebugEnabled() ) {
  +                log.debug( "Creating a nested object name: " + tagName );
               }
   
               if ( parentObject == null ) {
  @@ -230,10 +231,10 @@
   
                   // now lets invoke the body
                   String body = getBodyText();
  -    
  +
                   // now lets set any attributes of this tag...
                   setBeanProperties();
  -    
  +
                   // now lets add it to its parent
                   if ( parentObject != null ) {
                       IntrospectionHelper ih = IntrospectionHelper.getHelper( 
parentObject.getClass() );
  @@ -246,24 +247,24 @@
                   }
               }
               else {
  -                // lets treat this tag as static XML...                
  +                // lets treat this tag as static XML...
                   StaticTag tag = new StaticTag("", tagName, tagName);
                   tag.setParent( getParent() );
                   tag.setBody( getBody() );
  -    
  +
                   tag.setContext(context);
  -        
  +
                   for (Iterator iter = getAttributes().entrySet().iterator(); 
iter.hasNext();) {
                       Map.Entry entry = (Map.Entry) iter.next();
                       String name = (String) entry.getKey();
                       Object value = entry.getValue();
  -        
  +
                       tag.setAttribute(name, value);
                   }
  -            
  +
                   tag.doTag(output);
               }
  -        }        
  +        }
       }
   
   
  @@ -318,9 +319,15 @@
               super.setAttribute( name, "" );
           }
           else {
  -            super.setAttribute( name, value.toString() );
  +            if ( value instanceof Expression )
  +            {
  +                super.setAttribute( name, ((Expression) 
value).evaluateAsValue(context) );
  +            }
  +            else
  +            {
  +                super.setAttribute( name, value.toString() );
  +            }
           }
  -                            
       }
   
       public void setBeanProperty(Object object, String name, Object value) throws 
Exception {
  @@ -425,7 +432,7 @@
   
       public Task createTask(String taskName,
                              Class taskType) throws Exception {
  -                            
  +
           if (taskType == null) {
               return null;
           }
  @@ -446,7 +453,7 @@
   
           return task;
       }
  -    
  +
       /**
        * Attempts to look up in the parent hierarchy for a tag that implements the 
BeanSource interface
        * which creates a dynamic bean, or will return the parent tag, which is also a 
bean.
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to