You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/01/11 19:23:24 UTC
svn commit: r1057784 - in /maven/shared/trunk/maven-filtering/src:
main/java/org/apache/maven/shared/filtering/
test/java/org/apache/maven/shared/filtering/
test/units-files/escape-remove-char/
Author: olamy
Date: Tue Jan 11 18:23:24 2011
New Revision: 1057784
URL: http://svn.apache.org/viewvc?rev=1057784&view=rev
Log:
[MSHARED-181] escapeString non follow by startToken remove character
Added:
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java (with props)
maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/
maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml (with props)
Modified:
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java?rev=1057784&r1=1057783&r2=1057784&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java Tue Jan 11 18:23:24 2011
@@ -87,6 +87,8 @@ public class MultiDelimiterInterpolatorF
private boolean supportMultiLineFiltering;
+ private Character preserveChar = null;
+
/**
* This constructor uses default begin token ${ and default end token }.
*
@@ -219,6 +221,13 @@ public class MultiDelimiterInterpolatorF
}
return ch;
}
+ if (preserveChar != null )
+ {
+ char copy = Character.valueOf( preserveChar.charValue() ).charValue();
+ preserveChar = null;
+ replaceIndex = -1;
+ return copy;
+ }
int ch = -1;
if ( previousIndex != -1 && previousIndex < this.endToken.length() )
@@ -264,8 +273,12 @@ public class MultiDelimiterInterpolatorF
ch = in.read();
if ( !reselectDelimiterSpec( ch ) )
{
+ // here we are after the escape but didn't found the a startToken
+ // but we have read this means it will be removed
+ // so we preserve it
replaceData = key.toString();
replaceIndex = 1;
+ preserveChar = Character.valueOf( (char)ch );
return replaceData.charAt( 0 );
}
else
Added: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java?rev=1057784&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java (added)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java Tue Jan 11 18:23:24 2011
@@ -0,0 +1,109 @@
+package org.apache.maven.shared.filtering;
+/*
+ * 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 java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.maven.model.Resource;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+
+/**
+ * @author Olivier Lamy
+ *
+ */
+public class EscapeStringTest
+ extends PlexusTestCase
+{
+
+ File outputDirectory = new File( getBasedir(), "target/EscapeStringTest" );
+
+ File unitDirectory = new File( getBasedir(), "src/test/units-files/escape-remove-char" );
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ if ( outputDirectory.exists() )
+ {
+ FileUtils.forceDelete( outputDirectory );
+ }
+ outputDirectory.mkdirs();
+ }
+
+ public void testEscape()
+ throws Exception
+ {
+ File baseDir = new File( "c:\\foo\\bar" );
+ StubMavenProject mavenProject = new StubMavenProject( baseDir );
+ mavenProject.setVersion( "1.0" );
+ mavenProject.setGroupId( "org.apache" );
+ mavenProject.setName( "test project" );
+
+ Properties projectProperties = new Properties();
+ projectProperties.put( "foo", "bar" );
+ projectProperties.put( "java.version", "zloug" );
+ projectProperties.put( "replaceThis", "I am the replacement" );
+ mavenProject.setProperties( projectProperties );
+ MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class
+ .getName() );
+
+ Resource resource = new Resource();
+ List resources = new ArrayList();
+ resources.add( resource );
+ resource.setDirectory( unitDirectory.getPath() );
+ resource.setFiltering( true );
+
+ List filtersFile = new ArrayList();
+
+ List nonFilteredFileExtensions = Collections.singletonList( "gif" );
+
+ MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory,
+ mavenProject, "UTF-8",
+ filtersFile,
+ nonFilteredFileExtensions,
+ new StubMavenSession() );
+ mavenResourcesExecution.setUseDefaultFilterWrappers( true );
+
+ mavenResourcesExecution.setEscapeString( "!" );
+
+ mavenResourcesFiltering.filterResources( mavenResourcesExecution );
+
+ FileInputStream in = null;
+ try
+ {
+ String content = IOUtil.toString( new FileInputStream( new File( outputDirectory, "content.xml" ) ) );
+
+ System.out.println( "content " + content );
+ assertTrue( content.contains( "<broken-tag>Content with replacement: I am the replacement !</broken-tag>" ) );
+ assertTrue( content.contains( "<broken-tag>Content with escaped replacement: Do not ${replaceThis} !</broken-tag>") );
+ }
+ finally
+ {
+ IOUtil.close( in );
+ }
+
+ }
+}
Propchange: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml?rev=1057784&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml (added)
+++ maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml Tue Jan 11 18:23:24 2011
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+ <!-- This is a comment ... until filtering ... -->
+ <broken-tag>Why are my !\${\}\! static.content broken if the escapeString occure ?!?</broken-tag>
+ <broken-tag>Content with replacement: ${replaceThis} !</broken-tag>
+ <broken-tag>Content with escaped replacement: Do not !${replaceThis} !</broken-tag>
+</root>
Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/escape-remove-char/content.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision