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