You are viewing a plain text version of this content. The canonical link for it is here.
Posted to easyant-commits@incubator.apache.org by jl...@apache.org on 2012/10/22 19:37:29 UTC

svn commit: r1401042 - in /incubator/easyant/core/trunk/src: main/java/org/apache/easyant/core/descriptor/ main/java/org/apache/easyant/core/parser/ test/java/org/apache/easyant/core/ test/resources/org/apache/easyant/core/multimodule/

Author: jlboudart
Date: Mon Oct 22 19:37:29 2012
New Revision: 1401042

URL: http://svn.apache.org/viewvc?rev=1401042&view=rev
Log:
Add support to bindtarget in module inheritance

Modified:
    incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/descriptor/ExtensionPointMappingDescriptor.java
    incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/DefaultEasyAntXmlModuleDescriptorParser.java
    incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java
    incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy

Modified: incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/descriptor/ExtensionPointMappingDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/descriptor/ExtensionPointMappingDescriptor.java?rev=1401042&r1=1401041&r2=1401042&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/descriptor/ExtensionPointMappingDescriptor.java (original)
+++ incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/descriptor/ExtensionPointMappingDescriptor.java Mon Oct 22 19:37:29 2012
@@ -17,42 +17,79 @@
  */
 package org.apache.easyant.core.descriptor;
 
-public class ExtensionPointMappingDescriptor {
-    
+import org.apache.easyant.core.ivy.InheritableScope;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+
+public class ExtensionPointMappingDescriptor implements AdvancedInheritableItem {
+
     private String target;
     private String extensionPoint;
     private String buildConfigurations;
+    private InheritableScope inheritScope = InheritableScope.BOTH;
+    private boolean inheritable = true;
+    private final ModuleRevisionId sourceModule;
+
+    public ExtensionPointMappingDescriptor() {
+        this.sourceModule = null;
+    }
+
+    public ExtensionPointMappingDescriptor(ModuleRevisionId sourceModule) {
+        this.sourceModule = sourceModule;
+    }
+
     public String getTarget() {
         return target;
     }
+
     public void setTarget(String target) {
         this.target = target;
     }
-    
+
     public String getExtensionPoint() {
         return extensionPoint;
     }
+
     public void setExtensionPoint(String extensionPoint) {
         this.extensionPoint = extensionPoint;
     }
-    
+
     /**
      * Return a build configuration name bound to this plugin
+     * 
      * @return a build configuration name
      */
     public String getBuildConfigurations() {
         return buildConfigurations;
     }
-    
+
     /**
      * set a build configuration name bound to this plugin
-     * @param buildConfigurationName a build configuration name
+     * 
+     * @param buildConfigurationName
+     *            a build configuration name
      */
     public void setBuildConfigurations(String buildConfigurations) {
         this.buildConfigurations = buildConfigurations;
     }
-    
-    
-    
+
+    public InheritableScope getInheritScope() {
+        return inheritScope;
+    }
+
+    public void setInheritScope(InheritableScope inheritScope) {
+        this.inheritScope = inheritScope;
+    }
+
+    public boolean isInheritable() {
+        return inheritable;
+    }
+
+    public void setInheritable(boolean inheritable) {
+        this.inheritable = inheritable;
+    }
+
+    public ModuleRevisionId getSourceModule() {
+        return sourceModule;
+    }
 
 }

Modified: incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/DefaultEasyAntXmlModuleDescriptorParser.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/DefaultEasyAntXmlModuleDescriptorParser.java?rev=1401042&r1=1401041&r2=1401042&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/DefaultEasyAntXmlModuleDescriptorParser.java (original)
+++ incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/DefaultEasyAntXmlModuleDescriptorParser.java Mon Oct 22 19:37:29 2012
@@ -456,13 +456,13 @@ public class DefaultEasyAntXmlModuleDesc
                 }
 
             }
-            // put this variable on the context
             ExtensionPointMappingDescriptor extensionPointMappingDescriptor = new ExtensionPointMappingDescriptor();
             extensionPointMappingDescriptor.setBuildConfigurations(conf);
-            // TODO: add a facility to get plugin alias if this is a
-            // declared as a subelement
             extensionPointMappingDescriptor.setTarget(target);
             extensionPointMappingDescriptor.setExtensionPoint(toExtensionPoint);
+
+            handleInheritedScopeAttribute(attributes, extensionPointMappingDescriptor);
+
             easyAntModuleDescriptor.addExtensionPointMapping(extensionPointMappingDescriptor);
 
         }
@@ -557,6 +557,7 @@ public class DefaultEasyAntXmlModuleDesc
                         .getParser();
                 mergeEasyantProperties(parser.getEasyAntModuleDescriptor().getProperties());
                 mergeEasyantPlugins(parser.getEasyAntModuleDescriptor().getPlugins());
+                mergeBindTargets(parser.getEasyAntModuleDescriptor().getExtensionPointsMappings());
             }
         }
 
@@ -576,13 +577,14 @@ public class DefaultEasyAntXmlModuleDesc
                         .getParser();
 
                 if (extendTypes.contains("properties")) {
-
                     mergeEasyantProperties(parser.getEasyAntModuleDescriptor().getProperties());
-
                 }
                 if (extendTypes.contains("plugins")) {
                     mergeEasyantPlugins(parser.getEasyAntModuleDescriptor().getPlugins());
                 }
+                if (extendTypes.contains("bindtarget")) {
+                    mergeBindTargets(parser.getEasyAntModuleDescriptor().getExtensionPointsMappings());
+                }
             }
 
         }
@@ -631,6 +633,20 @@ public class DefaultEasyAntXmlModuleDesc
             }
         }
 
+        protected void mergeBindTargets(List<ExtensionPointMappingDescriptor> extensionPointsMappings) {
+            for (ExtensionPointMappingDescriptor extensionPointMappingDescriptor : extensionPointsMappings) {
+                if (extensionPointMappingDescriptor.isInheritable()) {
+                    StringBuilder sb = new StringBuilder("Merging extension-point binding : ");
+                    sb.append(extensionPointMappingDescriptor.toString());
+                    if (extensionPointMappingDescriptor.getSourceModule() != null) {
+                        sb.append(" from ").append(extensionPointMappingDescriptor.getSourceModule().toString());
+                    }
+                    Message.debug(sb.toString());
+                    easyAntModuleDescriptor.addExtensionPointMapping(extensionPointMappingDescriptor);
+                }
+            }
+        }
+
         /**
          * Get the default parent location
          * 
@@ -640,5 +656,4 @@ public class DefaultEasyAntXmlModuleDesc
             return "../parent.ivy";
         }
     }
-
 }

Modified: incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java?rev=1401042&r1=1401041&r2=1401042&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java (original)
+++ incubator/easyant/core/trunk/src/test/java/org/apache/easyant/core/ModuleInheritanceTest.java Mon Oct 22 19:37:29 2012
@@ -52,4 +52,10 @@ public class ModuleInheritanceTest exten
         expectPropertyUnset("validate", "my.property");
     }
 
+    @Test
+    public void shouldInheritBindTarget() {
+        // this property is loaded by source-jar:init and should be bind to validate extensionPoint only if bindtarget
+        // has been inherited
+        expectPropertySet("validate", "src.publish.conf", "source");
+    }
 }

Modified: incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy?rev=1401042&r1=1401041&r2=1401042&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy (original)
+++ incubator/easyant/core/trunk/src/test/resources/org/apache/easyant/core/multimodule/parent.ivy Mon Oct 22 19:37:29 2012
@@ -19,6 +19,7 @@
         <ea:property name="test.property" value="myvalue"/>
         <ea:plugin module="source-jar" revision="0.9" inherit-scope="child" />
         <ea:plugin module="documentation" revision="0.9" inheritable="false" my.property="myvalue"/>
+        <ea:bindtarget target="source-jar:init" extensionOf="validate" inherit-scope="child"/>
     </info>
     <configurations>
         <conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf"/>