Author: sisbell
Date: Tue Apr 14 01:50:15 2009
New Revision: 764661

URL: http://svn.apache.org/viewvc?rev=764661&view=rev
Log:
Lazy loading of model input stream.

Modified:
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=764661&r1=764660&r2=764661&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 Tue Apr 14 01:50:15 2009
@@ -111,7 +111,6 @@
            }  
            
            initializeProperties( model );
-
     }    
 
     public PomClassicDomainModel(Model model) throws IOException {
@@ -122,23 +121,9 @@
                this.model = model;
                this.isMostSpecialized = b;
                
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        Writer out = null;
-        MavenXpp3Writer writer = new MavenXpp3Writer();
-        try
-        {
-            out = WriterFactory.newXmlWriter( baos );
-            writer.write( out, model );
-        }
-        finally
-        {
-            if ( out != null )
-            {
-                out.close();
-            }
-        }
+
         initializeProperties( model );
-        inputBytes = baos.toByteArray();
+        
     }
 
        public File getParentFile()
@@ -213,27 +198,62 @@
      *
      * @return XML model as string
      */
-    public String asString()
+    public String asString() throws IOException
     {
-        try
-        {
-            return IOUtil.toString( ReaderFactory.newXmlReader( new 
ByteArrayInputStream( inputBytes ) ) );
-        }
-        catch ( IOException ioe )
-        {
-            // should not occur: everything is in-memory
-            return "";
-        }
+       if(inputBytes == null)
+       {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            Writer out = null;
+            MavenXpp3Writer writer = new MavenXpp3Writer();
+            try
+            {
+                out = WriterFactory.newXmlWriter( baos );
+                writer.write( out, model );
+            }
+            finally
+            {
+                if ( out != null )
+                {
+                    out.close();
+                }
+            }
+            inputBytes = baos.toByteArray();           
+       }
+
+           return IOUtil.toString( ReaderFactory.newXmlReader( new 
ByteArrayInputStream( inputBytes ) ) );
     }
 
     /**
      * @see 
org.apache.maven.shared.model.InputStreamDomainModel#getInputStream()
      */
-    public InputStream getInputStream()
+    public InputStream getInputStream() throws IOException
     {
-        byte[] copy = new byte[inputBytes.length];
-        System.arraycopy( inputBytes, 0, copy, 0, inputBytes.length );
-        return new ByteArrayInputStream( copy );
+       if(inputBytes != null)
+       {
+            byte[] copy = new byte[inputBytes.length];
+            System.arraycopy( inputBytes, 0, copy, 0, inputBytes.length );
+            return new ByteArrayInputStream( copy );                   
+       }
+       else
+       {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            Writer out = null;
+            MavenXpp3Writer writer = new MavenXpp3Writer();
+            try
+            {
+                out = WriterFactory.newXmlWriter( baos );
+                writer.write( out, model );
+            }
+            finally
+            {
+                if ( out != null )
+                {
+                    out.close();
+                }
+            }
+            inputBytes = baos.toByteArray();
+            return new ByteArrayInputStream(inputBytes);
+       }
     }
 
     /**


Reply via email to