Author: rfscholte
Date: Wed May 18 21:34:08 2016
New Revision: 1744457

URL: http://svn.apache.org/viewvc?rev=1744457&view=rev
Log:
[MRELEASE-952] Replace JDom as XML transformer
Introduce Factory

Added:
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETL.java
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLFactory.java
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLRequest.java
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETLFactory.java
Modified:
    maven/release/trunk/maven-release-manager/src/main/components-fragment.xml
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETL.java

Modified: 
maven/release/trunk/maven-release-manager/src/main/components-fragment.xml
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/components-fragment.xml?rev=1744457&r1=1744456&r2=1744457&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/components-fragment.xml 
(original)
+++ maven/release/trunk/maven-release-manager/src/main/components-fragment.xml 
Wed May 18 21:34:08 2016
@@ -153,6 +153,10 @@
           
<role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
         </requirement>
         <requirement>
+          
<role>org.apache.maven.shared.release.transform.ModelETLFactory</role>
+          <field-name>modelETLFactories</field-name>
+        </requirement>
+        <requirement>
           <role>org.apache.maven.shared.release.scm.ScmTranslator</role>
           <field-name>scmTranslators</field-name>
         </requirement>
@@ -210,6 +214,10 @@
           
<role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
         </requirement>
         <requirement>
+          
<role>org.apache.maven.shared.release.transform.ModelETLFactory</role>
+          <field-name>modelETLFactories</field-name>
+        </requirement>
+        <requirement>
           <role>org.apache.maven.shared.release.scm.ScmTranslator</role>
           <field-name>scmTranslators</field-name>
         </requirement>
@@ -226,6 +234,10 @@
         <requirement>
           
<role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
         </requirement>
+        <requirement>
+          
<role>org.apache.maven.shared.release.transform.ModelETLFactory</role>
+          <field-name>modelETLFactories</field-name>
+        </requirement>
       </requirements>
     </component>
     <component>
@@ -253,6 +265,10 @@
           
<role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
         </requirement>
         <requirement>
+          
<role>org.apache.maven.shared.release.transform.ModelETLFactory</role>
+          <field-name>modelETLFactories</field-name>
+        </requirement>
+        <requirement>
           <role>org.apache.maven.shared.release.scm.ScmTranslator</role>
           <field-name>scmTranslators</field-name>
         </requirement>

Modified: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java?rev=1744457&r1=1744456&r2=1744457&view=diff
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
 Wed May 18 21:34:08 2016
@@ -54,8 +54,11 @@ import org.apache.maven.shared.release.s
 import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
 import org.apache.maven.shared.release.scm.ScmTranslator;
+import org.apache.maven.shared.release.transform.ModelETLRequest;
 import org.apache.maven.shared.release.transform.MavenCoordinate;
-import org.apache.maven.shared.release.transform.jdom.JDomModelETL;
+import org.apache.maven.shared.release.transform.ModelETL;
+import org.apache.maven.shared.release.transform.ModelETLFactory;
+import org.apache.maven.shared.release.transform.jdom.JDomModelETLFactory;
 import org.apache.maven.shared.release.util.ReleaseUtil;
 import org.codehaus.plexus.util.StringUtils;
 
@@ -71,6 +74,10 @@ public abstract class AbstractRewritePom
      * Tool that gets a configured SCM repository from release configuration.
      */
     private ScmRepositoryConfigurator scmRepositoryConfigurator;
+    
+    private Map<String, ModelETLFactory> modelETLFactories;
+    
+    private String defaultModelETLFactoryHint = JDomModelETLFactory.ROLE_HINT;
 
     /**
      * SCM URL translators mapped by provider name.
@@ -169,11 +176,13 @@ public abstract class AbstractRewritePom
         throws ReleaseExecutionException, ReleaseFailureException
     {
         File pomFile = ReleaseUtil.getStandardPom( project );
+
+        ModelETLRequest request = new ModelETLRequest();
+        request.setLineSeparator( ls );
+        request.setProject( project );
+        request.setReleaseDescriptor( releaseDescriptor );
         
-        JDomModelETL etl = new JDomModelETL();
-        etl.setLs( ls );
-        etl.setProject( project );
-        etl.setReleaseDescriptor( releaseDescriptor );
+        ModelETL etl = modelETLFactories.get( defaultModelETLFactoryHint 
).newInstance( request );
         
         etl.extract( pomFile );
 

Added: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETL.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETL.java?rev=1744457&view=auto
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETL.java
 (added)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETL.java
 Wed May 18 21:34:08 2016
@@ -0,0 +1,43 @@
+package org.apache.maven.shared.release.transform;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.shared.release.ReleaseExecutionException;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 3.0
+ */
+public interface ModelETL
+{
+    void extract( File pomFile ) throws ReleaseExecutionException;
+    
+    void transform();
+    
+    void load( File pomFile ) throws ReleaseExecutionException;
+
+    // will be removed once transform() is implemented
+    @Deprecated
+    Model getModel();
+}

Added: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLFactory.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLFactory.java?rev=1744457&view=auto
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLFactory.java
 (added)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLFactory.java
 Wed May 18 21:34:08 2016
@@ -0,0 +1,30 @@
+package org.apache.maven.shared.release.transform;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 3.0
+ */
+public interface ModelETLFactory
+{
+    ModelETL newInstance( ModelETLRequest request );
+}

Added: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLRequest.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLRequest.java?rev=1744457&view=auto
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLRequest.java
 (added)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/ModelETLRequest.java
 Wed May 18 21:34:08 2016
@@ -0,0 +1,67 @@
+package org.apache.maven.shared.release.transform;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 3.0
+ */
+public class ModelETLRequest
+{
+    private String lineSeparator;
+
+    private MavenProject project;
+    
+    private ReleaseDescriptor releaseDescriptor;
+
+    public String getLineSeparator()
+    {
+        return lineSeparator;
+    }
+    
+    public void setLineSeparator( String lineSeparator )
+    {
+        this.lineSeparator = lineSeparator;
+    }
+    
+    public MavenProject getProject()
+    {
+        return project;
+    }
+
+    public void setProject( MavenProject project )
+    {
+        this.project = project;
+    }
+
+    public ReleaseDescriptor getReleaseDescriptor()
+    {
+        return releaseDescriptor;
+    }
+
+    public void setReleaseDescriptor( ReleaseDescriptor releaseDescriptor )
+    {
+        this.releaseDescriptor = releaseDescriptor;
+    }
+}
\ No newline at end of file

Modified: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETL.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETL.java?rev=1744457&r1=1744456&r2=1744457&view=diff
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETL.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETL.java
 Wed May 18 21:34:08 2016
@@ -32,6 +32,7 @@ import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.transform.ModelETL;
 import org.apache.maven.shared.release.util.ReleaseUtil;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.WriterFactory;
@@ -53,7 +54,7 @@ import org.jdom.output.XMLOutputter;
  * @author Robert Scholte
  * @since 3.0
  */
-public class JDomModelETL
+public class JDomModelETL implements ModelETL
 {
     private ReleaseDescriptor releaseDescriptor;
     
@@ -160,7 +161,7 @@ public class JDomModelETL
         writePom( targetFile, document, releaseDescriptor, 
project.getModelVersion(), intro, outtro );
     }
     
-    // will be removed once transform() is implemented
+    @Override
     public Model getModel()
     {
         return new JDomModel( document );

Added: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETLFactory.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETLFactory.java?rev=1744457&view=auto
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETLFactory.java
 (added)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom/JDomModelETLFactory.java
 Wed May 18 21:34:08 2016
@@ -0,0 +1,46 @@
+package org.apache.maven.shared.release.transform.jdom;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.transform.ModelETLRequest;
+import org.apache.maven.shared.release.transform.ModelETLFactory;
+import org.codehaus.plexus.component.annotations.Component;
+
+/**
+ * @author Robert Scholte
+ * @since 3.0
+ */
+@Component( role = ModelETLFactory.class, hint = JDomModelETLFactory.ROLE_HINT 
)
+public class JDomModelETLFactory implements ModelETLFactory
+{
+    public static final String ROLE_HINT = "jdom-sax";
+    
+    @Override
+    public JDomModelETL newInstance( ModelETLRequest request )
+    {
+        JDomModelETL result = new JDomModelETL();
+        
+        result.setLs( request.getLineSeparator() );
+        result.setProject( request.getProject() );
+        result.setReleaseDescriptor( request.getReleaseDescriptor() );
+        
+        return result;
+    }
+}


Reply via email to