You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ni...@apache.org on 2009/09/10 12:06:12 UTC

svn commit: r813343 - in /maven/release/trunk/maven-release-manager/src: main/java/org/apache/maven/shared/release/phase/ test/java/org/apache/maven/shared/release/phase/ test/resources/projects/rewrite-for-release/cdata-section/

Author: nicolas
Date: Thu Sep 10 10:06:11 2009
New Revision: 813343

URL: http://svn.apache.org/viewvc?rev=813343&view=rev
Log:
[MRELEASE-383] svn inconsistent line ending style

CDATA sections after transformation use "\n" as line ending style and break the xml file consistency
fix : Filter CDATA sections from jdom tree (like allready done for comments) to apply platform line ending style
testcase included

Added:
    maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/
    maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/expected-pom.xml
    maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/pom.xml
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/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.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=813343&r1=813342&r2=813343&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 Thu Sep 10 10:06:11 2009
@@ -19,6 +19,18 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Extension;
@@ -44,6 +56,7 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.WriterFactory;
+import org.jdom.CDATA;
 import org.jdom.Comment;
 import org.jdom.Document;
 import org.jdom.Element;
@@ -57,18 +70,6 @@
 import org.jdom.output.XMLOutputter;
 import org.jdom.xpath.XPath;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 /**
  * Base class for rewriting phases.
  *
@@ -224,6 +225,11 @@
             Comment c = (Comment) i.next();
             c.setText( ReleaseUtil.normalizeLineEndings( c.getText(), ReleaseUtil.LS ) );
         }
+        for ( Iterator i = document.getDescendants( new ContentFilter( ContentFilter.CDATA ) ); i.hasNext(); )
+        {
+            CDATA c = (CDATA) i.next();
+            c.setText( ReleaseUtil.normalizeLineEndings( c.getText(), ReleaseUtil.LS ) );
+        }
     }
 
     private void transformDocument( MavenProject project, Element rootElement, ReleaseDescriptor releaseDescriptor,

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java?rev=813343&r1=813342&r2=813343&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java Thu Sep 10 10:06:11 2009
@@ -19,6 +19,17 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -51,17 +62,6 @@
 import org.codehaus.plexus.util.ReaderFactory;
 import org.jmock.Mock;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-
 /**
  * Base class for some release tests.
  *
@@ -227,7 +227,13 @@
     protected boolean comparePomFiles( List reactorProjects )
         throws IOException
     {
-        comparePomFiles( reactorProjects, "" );
+        return comparePomFiles( reactorProjects, true );
+    }
+
+    protected boolean comparePomFiles( List reactorProjects, boolean normalizeLineEndings )
+        throws IOException
+    {
+        comparePomFiles( reactorProjects, "", normalizeLineEndings );
 
         // TODO: return void since this is redundant
         return true;
@@ -236,28 +242,46 @@
     protected void comparePomFiles( List reactorProjects, String expectedFileSuffix )
         throws IOException
     {
+        comparePomFiles( reactorProjects, expectedFileSuffix, true );
+    }
+
+    protected void comparePomFiles( List reactorProjects, String expectedFileSuffix, boolean normalizeLineEndings )
+        throws IOException
+    {
         for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
         {
             MavenProject project = (MavenProject) i.next();
 
-            comparePomFiles( project, expectedFileSuffix );
+            comparePomFiles( project, expectedFileSuffix, normalizeLineEndings );
         }
     }
 
     protected void comparePomFiles( MavenProject project, String expectedFileSuffix )
         throws IOException
     {
+        comparePomFiles( project, expectedFileSuffix, true );
+    }
+
+    protected void comparePomFiles( MavenProject project, String expectedFileSuffix, boolean normalizeLineEndings )
+        throws IOException
+    {
         File actualFile = project.getFile();
         File expectedFile = new File( actualFile.getParentFile(), "expected-pom" + expectedFileSuffix + ".xml" );
 
-        comparePomFiles( expectedFile, actualFile );
+        comparePomFiles( expectedFile, actualFile, normalizeLineEndings );
     }
 
     protected void comparePomFiles( File expectedFile, File actualFile )
         throws IOException
     {
-        String actual = read( actualFile );
-        String expected = read( expectedFile );
+        comparePomFiles( expectedFile, actualFile, true );
+    }
+
+    protected void comparePomFiles( File expectedFile, File actualFile, boolean normalizeLineEndings )
+        throws IOException
+    {
+        String actual = read( actualFile, normalizeLineEndings );
+        String expected = read( expectedFile, normalizeLineEndings );
         expected = expected.replaceAll( "\\$\\{remoterepo\\}", getRemoteRepositoryURL() );
         assertEquals( "Check the transformed POM", expected, actual );
     }
@@ -270,11 +294,24 @@
     private String read( File file )
         throws IOException
     {
+        return read( file, true );
+    }
+
+    /**
+     * Mock-up of {@link ReleaseUtil#readXmlFile(File)}, except this one REMOVES line endings. There is something fishy
+     * about the line ending conversion in that method, and it's not the class under test in these test cases.
+     * 
+     * @param normalizeLineEndings TODO
+     */
+    private String read( File file, boolean normalizeLineEndings )
+        throws IOException
+    {
         Reader reader = null;
         try
         {
             reader = ReaderFactory.newXmlReader( file );
-            return ReleaseUtil.normalizeLineEndings( IOUtil.toString( reader ), "" );
+            String xml = IOUtil.toString( reader );
+            return normalizeLineEndings ? ReleaseUtil.normalizeLineEndings( xml, "" ) : xml;
         }
         finally
         {

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java?rev=813343&r1=813342&r2=813343&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java Thu Sep 10 10:06:11 2009
@@ -19,6 +19,13 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.maven.Maven;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.scm.ScmFileSet;
@@ -35,13 +42,6 @@
 import org.jmock.core.matcher.InvokeOnceMatcher;
 import org.jmock.core.stub.ReturnStub;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Test the generate release POMs phase.
  *
@@ -198,12 +198,14 @@
     /*
      * @see org.apache.maven.shared.release.phase.AbstractReleaseTestCase#compareFiles(org.apache.maven.project.MavenProject, java.lang.String)
      */
-    protected void comparePomFiles( MavenProject project, String expectedFileSuffix ) throws IOException
+    // @Override
+    protected void comparePomFiles( MavenProject project, String expectedFileSuffix, boolean normalizeLineEndings )
+        throws IOException
     {
         File actualFile = ReleaseUtil.getReleasePom( project );
         File expectedFile = new File( actualFile.getParentFile(), "expected-release-pom" + expectedFileSuffix + ".xml" );
 
-        comparePomFiles( expectedFile, actualFile );
+        comparePomFiles( expectedFile, actualFile, normalizeLineEndings );
 
         // verify scm provider expectations here
         // TODO: can we move this somewhere better?

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java?rev=813343&r1=813342&r2=813343&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java Thu Sep 10 10:06:11 2009
@@ -19,16 +19,16 @@
  * under the License.
  */
 
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.release.config.ReleaseDescriptor;
-import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
-import org.apache.maven.shared.release.util.ReleaseUtil;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
+import org.apache.maven.shared.release.util.ReleaseUtil;
+
 /**
  * Test the SCM modification check phase.
  *
@@ -279,7 +279,7 @@
             // skip subproject1 - we don't need to worry about its version mapping change, it has no deps of any kind
             if ( !"groupId".equals( project.getGroupId() ) || !"subproject1".equals( project.getArtifactId() ) )
             {
-                comparePomFiles( project, "-different-version" );
+                comparePomFiles( project, "-different-version", true );
             }
         }
     }
@@ -325,10 +325,10 @@
 
         assertTrue( comparePomFiles( reactorProjects ) );
     }
-    
+
     public void testRewritePomForFlatMultiModule()
         throws Exception
-    {   
+    {
         List reactorProjects = createReactorProjects( "rewrite-for-release/pom-with-parent-flat", "/root-project", true );
         ReleaseDescriptor config = createConfigurationForPomWithParentAlternateNextVersion( reactorProjects );
 
@@ -337,6 +337,20 @@
         assertTrue( comparePomFiles( reactorProjects ) );
     }
 
+    // MRELEASE-383
+    public void testRewritePomWithCDATASection()
+        throws Exception
+    {
+        List reactorProjects = createReactorProjects( "cdata-section" );
+        ReleaseDescriptor config = createDescriptorFromProjects( reactorProjects );
+        mapNextVersion( config, "groupId:artifactId" );
+
+        phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
+
+        // compare POMS without line ending normalization
+        assertTrue( comparePomFiles( reactorProjects, false ) );
+    }
+
     protected ReleaseDescriptor createDescriptorFromProjects( List reactorProjects )
     {
         ReleaseDescriptor descriptor = super.createDescriptorFromProjects( reactorProjects );

Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/expected-pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/expected-pom.xml?rev=813343&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/expected-pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/expected-pom.xml Thu Sep 10 10:06:11 2009
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>groupId</groupId>
+  <artifactId>artifactId</artifactId>
+  <version>1.0</version>
+
+  <prerequisites>
+    <maven>2.0.4</maven>
+  </prerequisites>
+
+  <scm>
+    <connection>scm:svn:file://localhost/tmp/scm-repo/tags/release-label</connection>
+    <developerConnection>scm:svn:file://localhost/tmp/scm-repo/tags/release-label</developerConnection>
+    <url>file://localhost/tmp/scm-repo/tags/release-label</url>
+  </scm>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <configuration>
+          <downloadSources>true</downloadSources>
+          <additionalBuildcommands>
+            <buildcommand>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</buildcommand>
+          </additionalBuildcommands>
+          <additionalProjectnatures>
+            <projectnature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</projectnature>
+          </additionalProjectnatures>
+          <additionalConfig>
+            <file>
+              <name>.checkstyle</name>
+              <content>
+                <![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+   <fileset name="all" enabled="true" check-config-name="QifCon" local="false">
+       <file-match-pattern match-pattern="." include-pattern="true" />
+   </fileset>
+</fileset-config>
+]]>
+              </content>
+            </file>
+          </additionalConfig>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
\ No newline at end of file

Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/pom.xml?rev=813343&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/cdata-section/pom.xml Thu Sep 10 10:06:11 2009
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>groupId</groupId>
+  <artifactId>artifactId</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <prerequisites>
+    <maven>2.0.4</maven>
+  </prerequisites>
+
+  <scm>
+    <connection>scm:svn:file://localhost/tmp/scm-repo/trunk</connection>
+    <developerConnection>scm:svn:file://localhost/tmp/scm-repo/trunk</developerConnection>
+    <url>file://localhost/tmp/scm-repo/trunk</url>
+  </scm>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <configuration>
+          <downloadSources>true</downloadSources>
+          <additionalBuildcommands>
+            <buildcommand>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</buildcommand>
+          </additionalBuildcommands>
+          <additionalProjectnatures>
+            <projectnature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</projectnature>
+          </additionalProjectnatures>
+          <additionalConfig>
+            <file>
+              <name>.checkstyle</name>
+              <content>
+                <![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+   <fileset name="all" enabled="true" check-config-name="QifCon" local="false">
+       <file-match-pattern match-pattern="." include-pattern="true" />
+   </fileset>
+</fileset-config>
+]]>
+              </content>
+            </file>
+          </additionalConfig>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
\ No newline at end of file



Re: svn commit: r813343 - in /maven/release/trunk/maven-release-manager/src: main/java/org/apache/maven/shared/release/phase/ test/java/org/apache/maven/shared/release/phase/ test/resources/projects/rewrite-for-release/cdata-section/

Posted by Benjamin Bentmann <be...@udo.edu>.
Hi Nicolas,

> Author: nicolas
> Date: Thu Sep 10 10:06:11 2009
> New Revision: 813343
> 
> URL: http://svn.apache.org/viewvc?rev=813343&view=rev
> Log:
> [MRELEASE-383] svn inconsistent line ending style
> 
> CDATA sections after transformation use "\n" as line ending style and break the xml file consistency
> fix : Filter CDATA sections from jdom tree (like allready done for comments) to apply platform line ending style
> testcase included

The build on the grid started to fail on Ubuntu [0] after your commit 
which matches the comment by Mike Dillon on MRELEASE-383 [1]. Can you 
have a look?

Thanks,


Benjamin


[0] https://grid.sonatype.org/ci/job/maven-release/jdk=1.5,label=ubuntu/86/
[1] 
http://jira.codehaus.org/browse/MRELEASE-383?focusedCommentId=190546&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_190546

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org