You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/09/05 13:58:34 UTC
svn commit: r692416 -
/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Author: sisbell
Date: Fri Sep 5 04:58:34 2008
New Revision: 692416
URL: http://svn.apache.org/viewvc?rev=692416&view=rev
Log:
XML marshaller determines whether a node is terminal by a non-null value in the ModelProperty. Since the marshaller is binary in it's decision (null/non-null), put logic into transformer context that will detect and properly set the value prior to any marshaller.
Modified:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Modified: maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=692416&r1=692415&r2=692416&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java (original)
+++ maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java Fri Sep 5 04:58:34 2008
@@ -127,6 +127,7 @@
List<ModelProperty> modelProperties =
sort( transformedProperties, baseUriForModel );
+ modelProperties = determineLeafNodes(modelProperties);
ModelDataSource modelDataSource = new DefaultModelDataSource();
modelDataSource.init( modelProperties, factories );
@@ -302,6 +303,10 @@
? (position.indexOf( parentUri.replaceAll("#property", "") ) + 1) : (position.indexOf( parentUri ) + 1);
if(pst == 0 && !uri.equals(properties.get(0).getUri()) )
{
+ for(ModelProperty mp : properties)
+ {
+ System.out.println(mp);
+ }
throw new IllegalArgumentException("Could not locate parent: Parent URI = " + parentUri
+ ": Child - " + p.toString());
}
@@ -311,4 +316,38 @@
}
return processedProperties;
}
+
+ private static List<ModelProperty> determineLeafNodes(List<ModelProperty> modelProperties)
+ {
+ List<ModelProperty> mps = new ArrayList<ModelProperty>();
+ for(ModelProperty mp : modelProperties)
+ {
+ if(mp.getValue() != null && mp.getValue().trim().equals("") && isLeafNode( mp, modelProperties) )
+ {
+ mps.add( new ModelProperty(mp.getUri(), null) );
+ }
+ else
+ {
+ mps.add(mp);
+ }
+ }
+ return mps;
+ }
+
+ private static boolean isLeafNode(ModelProperty modelProperty, List<ModelProperty> modelProperties)
+ {
+ for(int i = modelProperties.indexOf(modelProperty); i < modelProperties.size() - 1 ; i++)
+ {
+ ModelProperty peekProperty = modelProperties.get( i + 1 );
+ if(modelProperty.isParentOf( peekProperty ) && !peekProperty.getUri().contains( "#property") )
+ {
+ return true;
+ }
+ else if(!modelProperty.isParentOf( peekProperty ) )
+ {
+ return modelProperty.getDepth() < peekProperty.getDepth();
+ }
+ }
+ return true;
+ }
}
\ No newline at end of file