jvanzyl     2002/07/22 12:17:04

  Modified:    src/java/org/apache/maven MavenUtils.java
  Log:
  o Adding better extension support.
  
  Revision  Changes    Path
  1.32      +38 -7     jakarta-turbine-maven/src/java/org/apache/maven/MavenUtils.java
  
  Index: MavenUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/MavenUtils.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- MavenUtils.java   21 Jul 2002 03:55:16 -0000      1.31
  +++ MavenUtils.java   22 Jul 2002 19:17:04 -0000      1.32
  @@ -148,7 +148,7 @@
           if (pomToExtend != null)
           {
               Project parent = (Project) projectBeanReader.parse(new 
File(pomToExtend));
  -            project = mergeProjects(project, parent);
  +            project = (Project) mergeBeans(project, parent);
           }
           
           project = getInterpolatedProject(project);
  @@ -205,8 +205,21 @@
   
       /**
        * Merge a child and parent Project object.
  +     *
  +     * I would like to use BeanUtils but it doesn't quite work the
  +     * way I need. So I will patch it later.
        */
  -    private static Project mergeProjects(Project child, Project parent)
  +    private static Object mergeBeansX(Object child, Object parent)
  +        throws Exception
  +    {
  +        BeanUtils.copyProperties(child, parent);
  +        return child;
  +    }
  +
  +    /**
  +     * Merge a child and parent Project object.
  +     */
  +    private static Object mergeBeans(Object child, Object parent)
       {
           BeanMap parentBeanMap = new BeanMap(parent);
           BeanMap childBeanMap = new BeanMap(child);
  @@ -221,11 +234,18 @@
               {   
                   // If the childs property is null then take it from
                   // the parent.
  -                Object o = childBeanMap.get(property);
  -                if (valueNeedsPopulating(o))
  +                Object c = childBeanMap.get(property);
  +                Object p = parentBeanMap.get(property);
  +                
  +                if (valueNeedsPopulating(c))
  +                {
  +                    childBeanMap.put(property, p);
  +                }
  +                else if (c != null && p != null && !valuePrimitive(c))
                   {
  -                    childBeanMap.put(property, parentBeanMap.get(property));
  -                }                    
  +                    Object mergedBean = mergeBeans(c, p);
  +                    childBeanMap.put(property, mergedBean);
  +                }
               }
               catch (IllegalArgumentException e)
               {
  @@ -233,6 +253,17 @@
               }
           }
           return child;
  +    }
  +    
  +    /** Hack-a-roo */
  +    private static boolean valuePrimitive(Object o)
  +    {
  +        if (o instanceof Boolean) return true;
  +        if (o instanceof String) return true;
  +        if (o instanceof Class) return true;
  +        if (o instanceof Integer) return true;
  +        
  +        return false;
       }
       
       /**
  
  
  

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

Reply via email to