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 );
+ }
+ }
}