You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2008/07/13 18:34:06 UTC

svn commit: r676354 - /maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java

Author: hboutemy
Date: Sun Jul 13 09:34:06 2008
New Revision: 676354

URL: http://svn.apache.org/viewvc?rev=676354&view=rev
Log:
improved encoding support

Modified:
    maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java

Modified: maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=676354&r1=676353&r2=676354&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Sun Jul 13 09:34:06 2008
@@ -6,6 +6,8 @@
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.shared.model.InputStreamDomainModel;
 import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.WriterFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.*;
@@ -15,7 +17,7 @@
  */
 public final class PomClassicDomainModel implements InputStreamDomainModel {
 
-    private byte[] inputStream;
+    private byte[] inputBytes;
 
     private String eventHistory;
 
@@ -29,16 +31,18 @@
             throw new IllegalArgumentException("model: null");
         }
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        Writer out = WriterFactory.newXmlWriter( baos );
         MavenXpp3Writer writer = new MavenXpp3Writer();
-        writer.write(new OutputStreamWriter(baos), model);
-        inputStream = removeIllegalCharacters(baos.toByteArray());
+        writer.write( out, model );
+        out.close();
+        inputBytes = removeIllegalCharacters(baos.toByteArray());
     }
 
     public PomClassicDomainModel(InputStream inputStream) throws IOException {
         if (inputStream == null) {
             throw new IllegalArgumentException("inputStream: null");
         }
-        this.inputStream = removeIllegalCharacters(IOUtil.toByteArray(inputStream));
+        this.inputBytes = removeIllegalCharacters(IOUtil.toByteArray(inputStream));
     }
 
     public boolean matchesParent(Parent parent) {
@@ -58,7 +62,15 @@
     }
 
     public String asString() {
-        return new String(inputStream);
+        try
+        {
+            return IOUtil.toString( ReaderFactory.newXmlReader( new ByteArrayInputStream( inputBytes ) ) );
+        }
+        catch ( IOException ioe )
+        {
+            // should not occur: everything is in-memory
+            return "";
+        }
     }
 
     /**
@@ -68,7 +80,7 @@
      */
     public Model getModel() throws IOException {
         try {                                                                
-            return new MavenXpp3Reader().read(new StringReader(new String(inputStream)));
+            return new MavenXpp3Reader().read( new ByteArrayInputStream( inputBytes ) );
         }
         catch (XmlPullParserException e) {
             e.printStackTrace();
@@ -77,8 +89,8 @@
     }
 
     public InputStream getInputStream() {
-        byte[] copy = new byte[inputStream.length];
-        System.arraycopy(inputStream, 0, copy, 0, inputStream.length);
+        byte[] copy = new byte[inputBytes.length];
+        System.arraycopy(inputBytes, 0, copy, 0, inputBytes.length);
         return new ByteArrayInputStream(copy);
     }
 
@@ -92,6 +104,8 @@
 
     //TODO: Workaround
     private byte[] removeIllegalCharacters(byte[] bytes) {
+        // what is it supposed to do? which are the illegal characters to remove?
+        // for encoding support, new String(bytes) and String.getBytes() should not be used
         return new String(bytes).replaceAll("ø", "").replaceAll("&(?![a-zA-Z]{1,8};)", "&").getBytes();
     }
 }



Re: svn commit: r676354 - /maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java

Posted by Jason van Zyl <ja...@maven.org>.
Cool, thanks Hervé.

On 13-Jul-08, at 12:34 PM, hboutemy@apache.org wrote:

> Author: hboutemy
> Date: Sun Jul 13 09:34:06 2008
> New Revision: 676354
>
> URL: http://svn.apache.org/viewvc?rev=676354&view=rev
> Log:
> improved encoding support
>
> Modified:
>    maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/ 
> org/apache/maven/project/builder/PomClassicDomainModel.java
>
> Modified: maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/ 
> java/org/apache/maven/project/builder/PomClassicDomainModel.java
> URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=676354&r1=676353&r2=676354&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/ 
> org/apache/maven/project/builder/PomClassicDomainModel.java (original)
> +++ maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/ 
> org/apache/maven/project/builder/PomClassicDomainModel.java Sun Jul  
> 13 09:34:06 2008
> @@ -6,6 +6,8 @@
> import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
> import org.apache.maven.shared.model.InputStreamDomainModel;
> import org.codehaus.plexus.util.IOUtil;
> +import org.codehaus.plexus.util.ReaderFactory;
> +import org.codehaus.plexus.util.WriterFactory;
> import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
>
> import java.io.*;
> @@ -15,7 +17,7 @@
>  */
> public final class PomClassicDomainModel implements  
> InputStreamDomainModel {
>
> -    private byte[] inputStream;
> +    private byte[] inputBytes;
>
>     private String eventHistory;
>
> @@ -29,16 +31,18 @@
>             throw new IllegalArgumentException("model: null");
>         }
>         ByteArrayOutputStream baos = new ByteArrayOutputStream();
> +        Writer out = WriterFactory.newXmlWriter( baos );
>         MavenXpp3Writer writer = new MavenXpp3Writer();
> -        writer.write(new OutputStreamWriter(baos), model);
> -        inputStream = removeIllegalCharacters(baos.toByteArray());
> +        writer.write( out, model );
> +        out.close();
> +        inputBytes = removeIllegalCharacters(baos.toByteArray());
>     }
>
>     public PomClassicDomainModel(InputStream inputStream) throws  
> IOException {
>         if (inputStream == null) {
>             throw new IllegalArgumentException("inputStream: null");
>         }
> -        this.inputStream =  
> removeIllegalCharacters(IOUtil.toByteArray(inputStream));
> +        this.inputBytes =  
> removeIllegalCharacters(IOUtil.toByteArray(inputStream));
>     }
>
>     public boolean matchesParent(Parent parent) {
> @@ -58,7 +62,15 @@
>     }
>
>     public String asString() {
> -        return new String(inputStream);
> +        try
> +        {
> +            return IOUtil.toString( ReaderFactory.newXmlReader( new  
> ByteArrayInputStream( inputBytes ) ) );
> +        }
> +        catch ( IOException ioe )
> +        {
> +            // should not occur: everything is in-memory
> +            return "";
> +        }
>     }
>
>     /**
> @@ -68,7 +80,7 @@
>      */
>     public Model getModel() throws IOException {
>         try {
> -            return new MavenXpp3Reader().read(new StringReader(new  
> String(inputStream)));
> +            return new MavenXpp3Reader().read( new  
> ByteArrayInputStream( inputBytes ) );
>         }
>         catch (XmlPullParserException e) {
>             e.printStackTrace();
> @@ -77,8 +89,8 @@
>     }
>
>     public InputStream getInputStream() {
> -        byte[] copy = new byte[inputStream.length];
> -        System.arraycopy(inputStream, 0, copy, 0,  
> inputStream.length);
> +        byte[] copy = new byte[inputBytes.length];
> +        System.arraycopy(inputBytes, 0, copy, 0, inputBytes.length);
>         return new ByteArrayInputStream(copy);
>     }
>
> @@ -92,6 +104,8 @@
>
>     //TODO: Workaround
>     private byte[] removeIllegalCharacters(byte[] bytes) {
> +        // what is it supposed to do? which are the illegal  
> characters to remove?
> +        // for encoding support, new String(bytes) and  
> String.getBytes() should not be used
>         return new String(bytes).replaceAll("&oslash;",  
> "").replaceAll("&(?![a-zA-Z]{1,8};)", "&amp;").getBytes();
>     }
> }
>
>

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
jason at sonatype dot com
----------------------------------------------------------

Our achievements speak for themselves. What we have to keep track
of are our failures, discouragements and doubts. We tend to forget
the past difficulties, the many false starts, and the painful
groping. We see our past achievements as the end result of a
clean forward thrust, and our present difficulties as
signs of decline and decay.

  -- Eric Hoffer, Reflections on the Human Condition


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