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/07/17 05:06:45 UTC

svn commit: r677491 - in /maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model: ModelMarshaller.java ModelTransformerContext.java

Author: sisbell
Date: Wed Jul 16 20:06:45 2008
New Revision: 677491

URL: http://svn.apache.org/viewvc?rev=677491&view=rev
Log:
Better sort for orginal order of properties.

Modified:
    maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java
    maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java

Modified: maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java?rev=677491&r1=677490&r2=677491&view=diff
==============================================================================
--- maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java (original)
+++ maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java Wed Jul 16 20:06:45 2008
@@ -113,21 +113,29 @@
         int n = 1;
         for (ModelProperty mp : modelProperties) {
             String uri = mp.getUri();
+            System.out.println(mp);
             if (!uri.startsWith(baseUri)) {
                 throw new IllegalArgumentException("Passed in model property that does not match baseUri: Property URI = "
                         + uri + ", Base URI = " + baseUri);
             }
             List<String> tagNames = getTagNamesFromUri(basePosition, uri);
+           // System.out.println(lastUriTags.size() + ":" + tagNames.size());
+           // String s = (lastUriTags.size() > 0) ? "LAST = " + lastUriTags.get(lastUriTags.size()-1) : "";
+           // String t = ((tagNames.size() > 0) ? ", CURRENT = " + tagNames.get(tagNames.size()-1) : ":");
+           // System.out.println(s + t);
             if (lastUriTags.size() > tagNames.size()) {
                 for (int i = lastUriTags.size() - 1; i >= tagNames.size(); i--) {
+             //       System.out.println("End tag without value: "+ toEndTag(lastUriTags.get(i - 1).trim()));
                     sb.append(toEndTag(lastUriTags.get(i - 1)));
                 }
             }
             String tag = tagNames.get(tagNames.size() - 1);
             sb.append(toStartTag(tag));
+           // System.out.println(toStartTag(tag).trim());
             if (mp.getResolvedValue() != null) {
                 sb.append(mp.getResolvedValue());
                 sb.append(toEndTag(tag));
+             //   System.out.println("End tag with value: "+ tag.trim() + ", value = " +  mp.getResolvedValue().trim());
                 n = 2;
             } else {
                 n = 1;
@@ -135,13 +143,14 @@
             lastUriTags = tagNames;
         }
         for (int i = lastUriTags.size() - n; i >= 1; i--) {
+            //System.out.println("END T = " + toEndTag(lastUriTags.get(i)) );
             sb.append(toEndTag(lastUriTags.get(i)));
         }
         return sb.toString();
     }
 
     private static List<String> getTagNamesFromUri(int basePosition, String uri) {
-        return Arrays.asList(uri.substring(basePosition).replace("#collection", "").split("/"));
+        return Arrays.asList(uri.substring(basePosition).replaceAll("#collection", "").split("/"));
     }
 
     private static String toStartTag(String value) {

Modified: maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=677491&r1=677490&r2=677491&view=diff
==============================================================================
--- maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java (original)
+++ maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java Wed Jul 16 20:06:45 2008
@@ -53,10 +53,10 @@
                                  ModelTransformer toModelTransformer,
                                  Collection<InterpolatorProperty> interpolatorProperties) throws IOException {
         List<InterpolatorProperty> properties = new ArrayList<InterpolatorProperty>(interpolatorProperties);
+        List<ModelProperty> originalProperties = fromModelTransformer.transformToModelProperties(domainModels);
 
         String baseUriForModel = fromModelTransformer.getBaseUri();
-        List<ModelProperty> modelProperties = sort(fromModelTransformer.transformToModelProperties(domainModels),
-                baseUriForModel);
+        List<ModelProperty> modelProperties = sort(originalProperties, baseUriForModel);
         ModelDataSource modelDataSource = new DefaultModelDataSource();
         modelDataSource.init(modelProperties, factories);
 
@@ -124,11 +124,8 @@
         }
 
 
-
-        mps = reverseSort(mps);
-
+        Collections.sort(mps, new ModelPropertyCompator(originalProperties));
         try {
-            validate(mps);
             DomainModel domainModel = toModelTransformer.transformToDomainModel(mps);
             domainModel.setEventHistory(modelDataSource.getEventHistory());
             return domainModel;
@@ -155,7 +152,6 @@
         return this.transform(domainModels, fromModelTransformer, toModelTransformer, systemInterpolatorProperties);
     }
 
-
     /**
      * Sorts specified list of model properties. Typically the list contain property information from the entire
      * hierarchy of models, with most specialized model first in the list.
@@ -192,51 +188,21 @@
         return processedProperties;
     }
 
-    protected List<ModelProperty> reverseSort(List<ModelProperty> properties) {
-        if (properties == null) {
-            throw new IllegalArgumentException("properties");
-        }
-        LinkedList<ModelProperty> processedProperties = new LinkedList<ModelProperty>();
+    private class ModelPropertyCompator implements Comparator {
 
-        int currentIndex = -1;
-        String currentUri = "";
-        for (ModelProperty p : properties) {
-            String uri = p.getUri();
-            String parentUri = uri.substring(0, uri.lastIndexOf("/"));
+        private List<ModelProperty> original;
 
-            if (parentUri.endsWith("#collection")) {
-                for (int j = processedProperties.size(); j >= 0; j--) {
-                    if (properties.get(j).getUri().equals(parentUri)) {
-                        currentIndex = j + 1;
-                        break;
-                    }
-                }
-                currentUri = p.getUri();
-                processedProperties.add(currentIndex, p);
-            }  else if(p.getUri().startsWith(currentUri)){
-                currentIndex++;
-                processedProperties.add(currentIndex, p);
-            } else {
-                currentIndex++;
-                processedProperties.add(p);
-            }
+        public ModelPropertyCompator(List<ModelProperty> original) {
+            this.original = original;
         }
-        logger.info("Properties removed through reverse sort: " + (properties.size() - processedProperties.size()));
-        return processedProperties;
-    }
 
-    private static void validate(List<ModelProperty> modelProperties) throws IOException {
-        for (int i = 1; i < modelProperties.size(); i++) {
-            ModelProperty previous = modelProperties.get(i - 1);
-            ModelProperty current = modelProperties.get(i);
-            if ((!previous.isParentOf(current) && current.getDepth() > previous.getDepth())
-                    || (current.getDepth() - previous.getDepth() > 1)) {
-                int j = 0;
-                for (ModelProperty mp : modelProperties) {
-                    System.out.println((j++) + ":" + mp);
-                }
-                throw new IOException("Invalid Model Property: Property " + current + ", Line = " + i);
+        public int compare(Object o1, Object o2) {
+            if(original.indexOf(o1) > original.indexOf(o2)) {
+                return 1;
+            } else {
+                return -1;
             }
+
         }
     }
 }