Author: reto
Date: Thu Apr  8 15:21:51 2010
New Revision: 931970

URL: http://svn.apache.org/viewvc?rev=931970&view=rev
Log:
CLEREZZA-96: using ReplacingOutputStream

Modified:
    
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/pom.xml
    
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java

Modified: 
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/pom.xml?rev=931970&r1=931969&r2=931970&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/pom.xml 
(original)
+++ 
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/pom.xml 
Thu Apr  8 15:21:51 2010
@@ -59,6 +59,10 @@
                        <groupId>org.apache.clerezza</groupId>
                        
<artifactId>org.apache.clerezza.web.fileserver</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>org.apache.clerezza.utils</artifactId>
+               </dependency>
        </dependencies>
 </project>
 

Modified: 
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java?rev=931970&r1=931969&r2=931970&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java
 Thu Apr  8 15:21:51 2010
@@ -21,6 +21,7 @@ package org.apache.clerezza.tools.offlin
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.nio.charset.Charset;
@@ -30,6 +31,7 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.logging.Level;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
@@ -53,6 +55,7 @@ import org.apache.felix.scr.annotations.
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.clerezza.rdf.core.serializedform.Serializer;
+import org.apache.clerezza.utils.ReplacingOutputStream;
 import org.apache.clerezza.web.fileserver.util.MediaTypeGuesser;
 import org.wymiwyg.commons.util.dirbrowser.PathNode;
 
@@ -120,7 +123,7 @@ public class Generator {
                if (targetUri == null) {
                        targetUri = baseUri;
                }
-               if (targetUri == null) {
+               if (rootLinkPrefix == null) {
                        rootLinkPrefix = "";
                }
                if (formatExtensions == null) {
@@ -150,7 +153,7 @@ public class Generator {
 
        private PathNode createFileHierarchy(String baseUri, String targetUri,
                        String rootLinkPrefix, List<String> formatExtensions) 
throws IOException {
-               Hierarchy result = new Hierarchy("generated-site");
+               Hierarchy result = new Hierarchy("");
                MGraph contentGraph = cgp.getContentGraph();
                Set<UriRef> matchingUri = new HashSet<UriRef>();
                for (Triple triple : contentGraph) {
@@ -161,6 +164,9 @@ public class Generator {
                        }
                }
                for (UriRef uriRef : matchingUri) {
+                       if (matchingUri.contains(new 
UriRef(uriRef.getUnicodeString()+"index"))) {
+                               continue;
+                       }
                        generateFilesForResource(baseUri, targetUri,
                                        rootLinkPrefix, uriRef, contentGraph, 
formatExtensions,
                                        result);
@@ -181,19 +187,41 @@ public class Generator {
                        MediaType mediaType = 
mediaTypeGuesser.getTypeForExtension(formatExtension);
                        try {
                                final byte[] variant = getVariant(uriRef, 
mediaType);
+                               if (mediaType.getSubtype().equals("png"))
+                                       logger.info("Got variant of length : 
{}",variant.length);
                                final byte[] dataPrefixApplied = 
applyRootLinkPrefic(variant, 
                                                rootLinkPrefix, mediaType);
                                final String filePath = 
uriRef.getUnicodeString().endsWith("/") ? path+"index" : path;
                                final String dottedExtension = 
"."+formatExtension;
                                final String extendedPath = 
filePath.endsWith(dottedExtension) ?
                                        filePath : filePath + dottedExtension;
-                               hierarchy.addChild(extendedPath, 
dataPrefixApplied);
+                               if (mediaType.getSubtype().equals("png"))
+                                       logger.info("Processed length : 
{}",dataPrefixApplied.length);
+                               hierarchy.addChild(extendedPath, 
+                                               
changeBaseUri(dataPrefixApplied, baseUri, targetBaseUri));
                        } catch (VariantUnavailableException ex) {
-                               logger.info("{} not available as {}", uriRef, 
mediaType);
+                               logger.debug("{} not available as {}", uriRef, 
mediaType);
                        }
                }       
        }
 
+       private byte[] changeBaseUri(byte[] variant, String baseUri,
+                       String targetBaseUri) {
+               try {
+                       //here we should locate some mediaType specific handlers
+                       //a quick hack
+                       final ByteArrayOutputStream resultWriter = new 
ByteArrayOutputStream(variant.length + 1000);
+                       final OutputStream out = new 
ReplacingOutputStream(resultWriter,
+                                               baseUri.getBytes(UTF8),
+                                               targetBaseUri.getBytes(UTF8));
+                       out.write(variant);
+                       out.close();
+                       return resultWriter.toByteArray();
+               } catch (IOException ex) {
+                       throw new RuntimeException(ex);
+               }
+       }
+
        private byte[] getVariant(UriRef uriRef, MediaType mediaType) throws 
                        IOException, VariantUnavailableException {
                final URL url = new URL(uriRef.getUnicodeString());
@@ -236,16 +264,26 @@ public class Generator {
 
        private byte[] applyRootLinkPrefic(byte[] variant, String 
rootLinkPrefix,
                        MediaType mediaType) {
-               //here we should locate some mediaType specific handlers
-               //a quick hack
-               String stringVersion = new String(variant, UTF8);
-               for (String rootLinkIndicator : rootLinkIndicators) {
-                       stringVersion = 
stringVersion.replaceAll(rootLinkIndicator+"/",
-                                       rootLinkIndicator+rootLinkPrefix+"/");
+               try {
+                       //here we should locate some mediaType specific handlers
+                       //a quick hack
+                       final ByteArrayOutputStream resultWriter = new 
ByteArrayOutputStream(variant.length + 1000);
+                       OutputStream out = resultWriter;
+                       for (String rootLinkIndicator : rootLinkIndicators) {
+                               out = new ReplacingOutputStream(out, 
+                                               (rootLinkIndicator + 
"/").getBytes(UTF8),
+                                               (rootLinkIndicator + 
rootLinkPrefix + "/").getBytes(UTF8));
+                       }
+                       out.write(variant);
+                       out.close();
+                       return resultWriter.toByteArray();
+               } catch (IOException ex) {
+                       throw new RuntimeException(ex);
                }
-               return stringVersion.getBytes(UTF8);
        }
 
+
+
        private static class VariantUnavailableException extends Exception {
 
                VariantUnavailableException(String message) {


Reply via email to