You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by it...@apache.org on 2010/08/31 16:11:20 UTC

svn commit: r991200 - /incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java

Author: ito
Date: Tue Aug 31 14:11:20 2010
New Revision: 991200

URL: http://svn.apache.org/viewvc?rev=991200&view=rev
Log:
SocketException catched and thread sleep used

Modified:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java?rev=991200&r1=991199&r2=991200&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.tools.offline/src/main/java/org/apache/clerezza/tools/offline/Generator.java Tue Aug 31 14:11:20 2010
@@ -18,12 +18,14 @@
  */
 package org.apache.clerezza.tools.offline;
 
+import java.util.logging.Level;
 import org.apache.clerezza.tools.offline.utils.ConditionalOutputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.net.SocketException;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.text.DateFormat;
@@ -58,6 +60,8 @@ 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.apache.commons.codec.binary.Base64;
+import org.osgi.service.component.ComponentContext;
 import org.wymiwyg.commons.util.dirbrowser.PathNode;
 
 /**
@@ -66,7 +70,7 @@ import org.wymiwyg.commons.util.dirbrows
  *
  * @author reto
  */
-@Component
+@Component(metatype=true)
 @Service(Object.class)
 @Property(name = "javax.ws.rs", boolValue = true)
 @Path("/admin/offline")
@@ -229,28 +233,40 @@ public class Generator {
 
 	private byte[] getVariant(UriRef uriRef, MediaType mediaType) throws 
 			IOException, VariantUnavailableException {
-		final URL url = new URL(uriRef.getUnicodeString());
-		final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
-		urlConnection.setRequestProperty("Accept", mediaType.toString());
-		urlConnection.connect();
-		final int responseCode = urlConnection.getResponseCode();
-		if (responseCode != 200) {
-			throw new VariantUnavailableException("response code: "+responseCode);
-		}
-		final String responseContentType = urlConnection.getContentType();
-		if (!responseContentType.startsWith(mediaType.toString())) {
-			throw new VariantUnavailableException("Got " + responseContentType + " and not " + mediaType);
-		}
-		final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-		final InputStream in = urlConnection.getInputStream();
-		try {
-			for (int ch = in.read(); ch != -1; ch = in.read()) {
-				baos.write(ch);
+		logger.info("requested uri " + uriRef.getUnicodeString() + ",mediatype " + mediaType.toString());
+		try{
+			final URL url = new URL(uriRef.getUnicodeString());
+
+			final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
+			urlConnection.setRequestProperty("Accept", mediaType.toString());
+			urlConnection.connect();
+			final int responseCode = urlConnection.getResponseCode();
+			if (responseCode != 200) {
+				throw new VariantUnavailableException("response code: "+responseCode);
+			}
+			final String responseContentType = urlConnection.getContentType();
+			if (!responseContentType.startsWith(mediaType.toString())) {
+				throw new VariantUnavailableException("Got " + responseContentType + " and not " + mediaType);
+			}
+			final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			final InputStream in = urlConnection.getInputStream();
+			try {
+				for (int ch = in.read(); ch != -1; ch = in.read()) {
+					baos.write(ch);
+				}
+			} finally {
+				in.close();
+			}
+			return baos.toByteArray();
+		} catch(SocketException ex) {
+			try {
+				logger.info("SocketException thrown");
+				Thread.sleep(5000);		
+			} catch (InterruptedException ex1) {
+				new RuntimeException(ex1);
 			}
-		} finally {
-			in.close();
+			return getVariant(uriRef, mediaType);
 		}
-		return baos.toByteArray();
 	}
 
 	private String getPathForUriRef(UriRef uriRef, String baseUri) {