You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/04/08 17:21:52 UTC

svn commit: r931970 - in /incubator/clerezza/issues/CLEREZZA-96/org.apache.clerezza.tools.offline: pom.xml src/main/java/org/apache/clerezza/tools/offline/Generator.java

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) {