You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/10/25 09:09:38 UTC
svn commit: r1634185 - in /maven/shared/trunk/maven-filtering: ./
src/main/java/org/apache/maven/shared/filtering/
src/main/java/org/apache/maven/shared/filtering/streams/
src/test/java/org/apache/maven/shared/filtering/
src/test/java/org/apache/maven/...
Author: krosenvold
Date: Sat Oct 25 07:09:38 2014
New Revision: 1634185
URL: http://svn.apache.org/r1634185
Log:
Added inputstreams that convert to windows or linux line feeds. Taken from maven-assembly-plugin
Added:
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/BoundedReader.java
- copied, changed from r1633997, maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BoundedReader.java
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStream.java
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStream.java
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStreamTest.java
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStreamTest.java
Removed:
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BoundedReader.java
Modified:
maven/shared/trunk/maven-filtering/pom.xml
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MultiDelimiterInterpolatorFilterReaderLineEnding.java
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/BoundedReaderTest.java
Modified: maven/shared/trunk/maven-filtering/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/pom.xml?rev=1634185&r1=1634184&r2=1634185&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/pom.xml (original)
+++ maven/shared/trunk/maven-filtering/pom.xml Sat Oct 25 07:09:38 2014
@@ -129,7 +129,6 @@
<scope>test</scope>
<classifier>tests</classifier>
</dependency>
-
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
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=1634185&r1=1634184&r2=1634185&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 Sat Oct 25 07:09:38 2014
@@ -26,6 +26,7 @@ import java.io.Reader;
import java.util.LinkedHashSet;
import java.util.Set;
+import org.apache.maven.shared.filtering.streams.BoundedReader;
import org.codehaus.plexus.interpolation.InterpolationException;
import org.codehaus.plexus.interpolation.Interpolator;
import org.codehaus.plexus.interpolation.RecursionInterceptor;
Copied: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/BoundedReader.java (from r1633997, maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BoundedReader.java)
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/BoundedReader.java?p2=maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/BoundedReader.java&p1=maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BoundedReader.java&r1=1633997&r2=1634185&rev=1634185&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/BoundedReader.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/BoundedReader.java Sat Oct 25 07:09:38 2014
@@ -1,4 +1,4 @@
-package org.apache.maven.shared.filtering;
+package org.apache.maven.shared.filtering.streams;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,6 +19,7 @@ package org.apache.maven.shared.filterin
* under the License.
*/
+import javax.annotation.Nonnull;
import java.io.IOException;
import java.io.Reader;
@@ -83,7 +84,7 @@ public class BoundedReader
}
@Override
- public int read( char[] cbuf, int off, int len )
+ public int read( @Nonnull char[] cbuf, int off, int len )
throws IOException
{
int c;
Added: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStream.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStream.java?rev=1634185&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStream.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStream.java Sat Oct 25 07:09:38 2014
@@ -0,0 +1,109 @@
+package org.apache.maven.shared.filtering.streams;
+
+/*
+ * 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.IOException;
+import java.io.InputStream;
+
+/**
+ * @author Kristian Rosenvold
+ */
+class LinuxLineFeedInputStream
+ extends InputStream
+{
+
+ private boolean slashNSeen = false;
+
+ private boolean eofSeen = false;
+
+ private final InputStream target;
+
+ private final boolean ensureLineFeedAtEndOfFile;
+
+ public LinuxLineFeedInputStream( InputStream in, boolean ensureLineFeedAtEndOfFile )
+ {
+ this.target = in;
+ this.ensureLineFeedAtEndOfFile = ensureLineFeedAtEndOfFile;
+ }
+
+ private int readWithUpdate()
+ throws IOException
+ {
+ final int target = this.target.read();
+ eofSeen = target == -1;
+ if ( eofSeen )
+ {
+ return target;
+ }
+ slashNSeen = target == '\n';
+ return target;
+ }
+
+ @Override public int read()
+ throws IOException
+ {
+ if ( eofSeen )
+ {
+ return eofGame();
+ }
+ else
+ {
+ int target = readWithUpdate();
+ if ( eofSeen )
+ {
+ return eofGame();
+ }
+ if ( target == '\r' )
+ {
+ target = readWithUpdate();
+ }
+ return target;
+ }
+ }
+
+ private int eofGame()
+ {
+ if ( !ensureLineFeedAtEndOfFile )
+ {
+ return -1;
+ }
+ if ( !slashNSeen )
+ {
+ slashNSeen = true;
+ return '\n';
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ @Override public void close()
+ throws IOException
+ {
+ super.close();
+ target.close();
+ }
+
+ @Override public synchronized void mark( int readlimit )
+ {
+ throw new UnsupportedOperationException( "Mark not implemented yet" );
+ }
+}
Added: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStream.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStream.java?rev=1634185&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStream.java (added)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStream.java Sat Oct 25 07:09:38 2014
@@ -0,0 +1,130 @@
+package org.apache.maven.shared.filtering.streams;
+
+/*
+ * 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.IOException;
+import java.io.InputStream;
+
+/**
+ * @author Kristian Rosenvold
+ */
+class WindowsLineFeedInputStream
+ extends InputStream
+{
+
+ private boolean slashRSeen = false;
+
+ private boolean slashNSeen = false;
+
+ private boolean injectSlashN = false;
+
+ private boolean eofSeen = false;
+
+ private final InputStream target;
+
+ private final boolean ensureLineFeedAtEndOfFile;
+
+ public WindowsLineFeedInputStream( InputStream in, boolean ensureLineFeedAtEndOfFile )
+ {
+ this.target = in;
+ this.ensureLineFeedAtEndOfFile = ensureLineFeedAtEndOfFile;
+ }
+
+ private int readWithUpdate()
+ throws IOException
+ {
+ final int target = this.target.read();
+ eofSeen = target == -1;
+ if ( eofSeen )
+ {
+ return target;
+ }
+ slashRSeen = target == '\r';
+ slashNSeen = target == '\n';
+ return target;
+ }
+
+ @Override public int read()
+ throws IOException
+ {
+ if ( eofSeen )
+ {
+ return eofGame();
+ }
+ else if ( injectSlashN )
+ {
+ injectSlashN = false;
+ return '\n';
+ }
+ else
+ {
+ boolean prevWasSlashR = slashRSeen;
+ int target = readWithUpdate();
+ if ( eofSeen )
+ {
+ return eofGame();
+ }
+ if ( target == '\n' )
+ {
+ if ( !prevWasSlashR )
+ {
+ injectSlashN = true;
+ return '\r';
+ }
+ }
+ return target;
+ }
+ }
+
+ private int eofGame()
+ {
+ if ( !ensureLineFeedAtEndOfFile )
+ {
+ return -1;
+ }
+ if ( !slashNSeen && !slashRSeen )
+ {
+ slashRSeen = true;
+ return '\r';
+ }
+ if ( !slashNSeen )
+ {
+ slashRSeen = false;
+ slashNSeen = true;
+ return '\n';
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ @Override public void close()
+ throws IOException
+ {
+ super.close();
+ target.close();
+ }
+
+ @Override public synchronized void mark( int readlimit )
+ {
+ throw new UnsupportedOperationException( "Mark not implemented yet" );
+ }
+}
Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/BoundedReaderTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/BoundedReaderTest.java?rev=1634185&r1=1634184&r2=1634185&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/BoundedReaderTest.java (original)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/BoundedReaderTest.java Sat Oct 25 07:09:38 2014
@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
+import org.apache.maven.shared.filtering.streams.BoundedReader;
import org.junit.Test;
public class BoundedReaderTest
Added: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStreamTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStreamTest.java?rev=1634185&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStreamTest.java (added)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/LinuxLineFeedInputStreamTest.java Sat Oct 25 07:09:38 2014
@@ -0,0 +1,90 @@
+package org.apache.maven.shared.filtering.streams;
+/*
+ * 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.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class LinuxLineFeedInputStreamTest
+{
+
+ @Test
+ public void simpleString()
+ throws Exception
+ {
+ assertEquals( "abc\n", roundtrip( "abc" ) );
+ }
+
+ @Test
+ public void inTheMiddleOfTheLine()
+ throws Exception
+ {
+ assertEquals( "a\nbc\n", roundtrip( "a\r\nbc" ) );
+ }
+
+ @Test
+ public void multipleBlankLines()
+ throws Exception
+ {
+ assertEquals( "a\n\nbc\n", roundtrip( "a\r\n\r\nbc" ) );
+ }
+
+ @Test
+ public void twoLinesAtEnd()
+ throws Exception
+ {
+ assertEquals( "a\n\n", roundtrip( "a\r\n\r\n" ) );
+ }
+
+ @Test
+ public void malformed()
+ throws Exception
+ {
+ assertEquals( "abc", roundtrip( "a\rbc", false ) );
+ }
+
+ @Test
+ public void retainLineFeed()
+ throws Exception
+ {
+ assertEquals( "a\n\n", roundtrip( "a\r\n\r\n", false ) );
+ assertEquals( "a", roundtrip( "a", false ) );
+ }
+
+ private String roundtrip( String msg )
+ throws IOException
+ {
+ return roundtrip( msg, true );
+ }
+
+ private String roundtrip( String msg, boolean ensure )
+ throws IOException
+ {
+ ByteArrayInputStream baos = new ByteArrayInputStream( msg.getBytes() );
+ LinuxLineFeedInputStream lf = new LinuxLineFeedInputStream( baos, ensure );
+ byte[] buf = new byte[100];
+ final int read = lf.read( buf );
+ return new String( buf, 0, read );
+ }
+
+}
\ No newline at end of file
Added: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStreamTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStreamTest.java?rev=1634185&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStreamTest.java (added)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/streams/WindowsLineFeedInputStreamTest.java Sat Oct 25 07:09:38 2014
@@ -0,0 +1,100 @@
+package org.apache.maven.shared.filtering.streams;
+/*
+ * 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.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class WindowsLineFeedInputStreamTest
+{
+
+ @Test
+ public void simpleString()
+ throws Exception
+ {
+ assertEquals( "abc\r\n", roundtrip( "abc" ) );
+ }
+
+ @Test
+ public void inTheMiddleOfTheLine()
+ throws Exception
+ {
+ assertEquals( "a\r\nbc\r\n", roundtrip( "a\r\nbc" ) );
+ }
+
+ @Test
+ public void multipleBlankLines()
+ throws Exception
+ {
+ assertEquals( "a\r\n\r\nbc\r\n", roundtrip( "a\r\n\r\nbc" ) );
+ }
+
+ @Test
+ public void twoLinesAtEnd()
+ throws Exception
+ {
+ assertEquals( "a\r\n\r\n", roundtrip( "a\r\n\r\n" ) );
+ }
+
+ @Test
+ public void linuxLinefeeds()
+ throws Exception
+ {
+ final String roundtrip = roundtrip( "ab\nc", false );
+ assertEquals( "ab\r\nc", roundtrip );
+ }
+
+
+ @Test
+ public void malformed()
+ throws Exception
+ {
+ assertEquals( "a\rbc", roundtrip( "a\rbc", false ) );
+ }
+
+ @Test
+ public void retainLineFeed()
+ throws Exception
+ {
+ assertEquals( "a\r\n\r\n", roundtrip( "a\r\n\r\n", false ) );
+ assertEquals( "a", roundtrip( "a", false ) );
+ }
+
+ private String roundtrip( String msg )
+ throws IOException
+ {
+ return roundtrip( msg, true );
+ }
+
+ private String roundtrip( String msg, boolean ensure )
+ throws IOException
+ {
+ ByteArrayInputStream baos = new ByteArrayInputStream( msg.getBytes() );
+ WindowsLineFeedInputStream lf = new WindowsLineFeedInputStream( baos, ensure );
+ byte[] buf = new byte[100];
+ final int read = lf.read( buf );
+ return new String( buf, 0, read );
+ }
+
+
+}
\ No newline at end of file