You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Jason van Zyl <ja...@maven.org> on 2008/07/13 19:04:49 UTC

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

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