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]>