You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2016/05/07 22:24:40 UTC

svn commit: r1742759 - in /maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release: phase/AbstractRewritePomsPhase.java transform/jdom/JDomModelETL.java

Author: rfscholte
Date: Sat May  7 22:24:40 2016
New Revision: 1742759

URL: http://svn.apache.org/viewvc?rev=1742759&view=rev
Log:
[MRELEASE-952] Replace JDom as XML transformer
Implement loading of ETL, Phases are now free from org.jdom classes

Modified:
    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/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=1742759&r1=1742758&r2=1742759&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 Sat May  7 22:24:40 2016
@@ -21,10 +21,8 @@ package org.apache.maven.shared.release.
 
 import java.io.File;
 import java.io.IOException;
-import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -59,15 +57,7 @@ import org.apache.maven.shared.release.s
 import org.apache.maven.shared.release.transform.MavenCoordinate;
 import org.apache.maven.shared.release.transform.jdom.JDomModelETL;
 import org.apache.maven.shared.release.util.ReleaseUtil;
-import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.WriterFactory;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.Namespace;
-import org.jdom.filter.ElementFilter;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
 
 /**
  * Base class for rewriting phases.
@@ -182,6 +172,8 @@ public abstract class AbstractRewritePom
         
         JDomModelETL etl = new JDomModelETL();
         etl.setLs( ls );
+        etl.setProject( project );
+        etl.setReleaseDescriptor( releaseDescriptor );
         
         etl.extract( pomFile );
 
@@ -210,20 +202,18 @@ public abstract class AbstractRewritePom
         transformDocument( project, etl.getModel(), releaseDescriptor, reactorProjects, scmRepository,
                            result, simulate );
 
-        Document document = etl.getDocument();
-        String intro = etl.getIntro();
-        String outtro = etl.getOuttro();
-        
+        File outputFile;
         if ( simulate )
         {
-            File outputFile = new File( pomFile.getParentFile(), pomFile.getName() + "." + pomSuffix );
-            writePom( outputFile, document, releaseDescriptor, project.getModelVersion(), intro, outtro );
+            outputFile = new File( pomFile.getParentFile(), pomFile.getName() + "." + pomSuffix );
         }
         else
         {
-            writePom( pomFile, document, releaseDescriptor, project.getModelVersion(), intro, outtro, scmRepository,
-                      provider );
+            outputFile = pomFile;
+            prepareScm( pomFile, releaseDescriptor, scmRepository, provider );
         }
+        etl.load( outputFile );
+    
     }
 
     private void transformDocument( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
@@ -547,8 +537,8 @@ public abstract class AbstractRewritePom
         }
     }
 
-    private void writePom( File pomFile, Document document, ReleaseDescriptor releaseDescriptor, String modelVersion,
-                           String intro, String outtro, ScmRepository repository, ScmProvider provider )
+    private void prepareScm( File pomFile, ReleaseDescriptor releaseDescriptor, ScmRepository repository,
+                           ScmProvider provider )
         throws ReleaseExecutionException, ReleaseScmCommandException
     {
         try
@@ -568,67 +558,9 @@ public abstract class AbstractRewritePom
         {
             throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
         }
-
-        writePom( pomFile, document, releaseDescriptor, modelVersion, intro, outtro );
     }
 
-    private void writePom( File pomFile, Document document, ReleaseDescriptor releaseDescriptor, String modelVersion,
-                           String intro, String outtro )
-        throws ReleaseExecutionException
-    {
-        Element rootElement = document.getRootElement();
-
-        if ( releaseDescriptor.isAddSchema() )
-        {
-            Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
-            rootElement.setNamespace( pomNamespace );
-            Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
-            rootElement.addNamespaceDeclaration( xsiNamespace );
-
-            if ( rootElement.getAttribute( "schemaLocation", xsiNamespace ) == null )
-            {
-                rootElement.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion
-                    + " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
-            }
-
-            // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
-            ElementFilter elementFilter = new ElementFilter( Namespace.getNamespace( "" ) );
-            for ( Iterator<?> i = rootElement.getDescendants( elementFilter ); i.hasNext(); )
-            {
-                Element e = (Element) i.next();
-                e.setNamespace( pomNamespace );
-            }
-        }
-
-        Writer writer = null;
-        try
-        {
-            writer = WriterFactory.newXmlWriter( pomFile );
-
-            if ( intro != null )
-            {
-                writer.write( intro );
-            }
-
-            Format format = Format.getRawFormat();
-            format.setLineSeparator( ls );
-            XMLOutputter out = new XMLOutputter( format );
-            out.output( document.getRootElement(), writer );
-
-            if ( outtro != null )
-            {
-                writer.write( outtro );
-            }
-        }
-        catch ( IOException e )
-        {
-            throw new ReleaseExecutionException( "Error writing POM: " + e.getMessage(), e );
-        }
-        finally
-        {
-            IOUtil.close( writer );
-        }
-    }
+    
     protected abstract String getResolvedSnapshotVersion( String artifactVersionlessKey,
                                                           Map<String, Map<String, String>> resolvedSnapshots );
 

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=1742759&r1=1742758&r2=1742759&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 Sat May  7 22:24:40 2016
@@ -23,18 +23,26 @@ import java.io.File;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.io.Writer;
 import java.util.Iterator;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 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.util.ReleaseUtil;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.WriterFactory;
 import org.jdom.CDATA;
 import org.jdom.Comment;
 import org.jdom.Document;
+import org.jdom.Element;
 import org.jdom.JDOMException;
+import org.jdom.Namespace;
 import org.jdom.filter.ContentFilter;
+import org.jdom.filter.ElementFilter;
 import org.jdom.input.SAXBuilder;
 import org.jdom.output.Format;
 import org.jdom.output.XMLOutputter;
@@ -47,6 +55,10 @@ import org.jdom.output.XMLOutputter;
  */
 public class JDomModelETL
 {
+    private ReleaseDescriptor releaseDescriptor;
+    
+    private MavenProject project;
+    
     private Document document;
     
     private String intro = null;
@@ -59,6 +71,16 @@ public class JDomModelETL
         this.ls = ls;
     }
     
+    public void setReleaseDescriptor( ReleaseDescriptor releaseDescriptor )
+    {
+        this.releaseDescriptor = releaseDescriptor;
+    }
+    
+    public void setProject( MavenProject project )
+    {
+        this.project = project;
+    }
+    
     public void extract( File pomFile ) throws ReleaseExecutionException
     {
         try
@@ -133,9 +155,9 @@ public class JDomModelETL
         
     }
     
-    public void load()
+    public void load( File targetFile ) throws ReleaseExecutionException
     {
-        
+        writePom( targetFile, document, releaseDescriptor, project.getModelVersion(), intro, outtro );
     }
     
     // will be removed once transform() is implemented
@@ -144,24 +166,6 @@ public class JDomModelETL
         return new JDomModel( document );
     }
     
-    // will be removed once load() is implemented
-    public Document getDocument()
-    {
-        return document;
-    }
-    
-    // will be removed once load() is implemented
-    public String getIntro()
-    {
-        return intro;
-    }
-    
-    // will be removed once load() is implemented
-    public String getOuttro()
-    {
-        return outtro;
-    }
-    
     private void normaliseLineEndings( Document document )
     {
         for ( Iterator<?> i = document.getDescendants( new ContentFilter( ContentFilter.COMMENT ) ); i.hasNext(); )
@@ -175,5 +179,63 @@ public class JDomModelETL
             c.setText( ReleaseUtil.normalizeLineEndings( c.getText(), ls ) );
         }
     }
+    
+    private void writePom( File pomFile, Document document, ReleaseDescriptor releaseDescriptor, String modelVersion,
+                           String intro, String outtro )
+        throws ReleaseExecutionException
+    {
+        Element rootElement = document.getRootElement();
+
+        if ( releaseDescriptor.isAddSchema() )
+        {
+            Namespace pomNamespace = Namespace.getNamespace( "", "http://maven.apache.org/POM/" + modelVersion );
+            rootElement.setNamespace( pomNamespace );
+            Namespace xsiNamespace = Namespace.getNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
+            rootElement.addNamespaceDeclaration( xsiNamespace );
+
+            if ( rootElement.getAttribute( "schemaLocation", xsiNamespace ) == null )
+            {
+                rootElement.setAttribute( "schemaLocation", "http://maven.apache.org/POM/" + modelVersion
+                    + " http://maven.apache.org/maven-v" + modelVersion.replace( '.', '_' ) + ".xsd", xsiNamespace );
+            }
+
+            // the empty namespace is considered equal to the POM namespace, so match them up to avoid extra xmlns=""
+            ElementFilter elementFilter = new ElementFilter( Namespace.getNamespace( "" ) );
+            for ( Iterator<?> i = rootElement.getDescendants( elementFilter ); i.hasNext(); )
+            {
+                Element e = (Element) i.next();
+                e.setNamespace( pomNamespace );
+            }
+        }
+
+        Writer writer = null;
+        try
+        {
+            writer = WriterFactory.newXmlWriter( pomFile );
+
+            if ( intro != null )
+            {
+                writer.write( intro );
+            }
+
+            Format format = Format.getRawFormat();
+            format.setLineSeparator( ls );
+            XMLOutputter out = new XMLOutputter( format );
+            out.output( document.getRootElement(), writer );
+
+            if ( outtro != null )
+            {
+                writer.write( outtro );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new ReleaseExecutionException( "Error writing POM: " + e.getMessage(), e );
+        }
+        finally
+        {
+            IOUtil.close( writer );
+        }
+    }
 
 }