change exception stuff a bit
[jSite2.git] / src / net / pterodactylus / jsite / core / RequestManager.java
index d2b1bde..4e23d79 100644 (file)
@@ -32,6 +32,7 @@ import net.pterodactylus.fcp.highlevel.GetRequestResult;
 import net.pterodactylus.fcp.highlevel.HighLevelCallback;
 import net.pterodactylus.fcp.highlevel.HighLevelCallbackListener;
 import net.pterodactylus.fcp.highlevel.HighLevelClient;
+import net.pterodactylus.fcp.highlevel.HighLevelException;
 import net.pterodactylus.fcp.highlevel.HighLevelProgress;
 import net.pterodactylus.fcp.highlevel.HighLevelProgressListener;
 import net.pterodactylus.fcp.highlevel.PutDirRequestResult;
@@ -155,8 +156,10 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
         *            The node to get all requests for
         * @throws IOException
         *             if an I/O error occurs while communicating with the node
+        * @throws JSiteException
+        *             if there is a problem with the node
         */
-       private void getRequests(final Node node) throws IOException {
+       private void getRequests(final Node node) throws IOException, JSiteException {
                HighLevelClient highLevelClient = nodeManager.getHighLevelClient(node);
                if (highLevelClient == null) {
                        logger.log(Level.WARNING, "no client for node: " + node);
@@ -164,19 +167,21 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                }
                final Map<String, Request> identifierRequests = Collections.synchronizedMap(new HashMap<String, Request>());
                nodeRequests.put(node, identifierRequests);
-               HighLevelCallback<RequestListResult> requestListCallback = highLevelClient.getRequests();
-               requestListCallback.addHighLevelCallbackListener(new HighLevelCallbackListener<RequestListResult>() {
+               HighLevelCallback<RequestListResult> requestListCallback;
+               try {
+                       requestListCallback = highLevelClient.getRequests();
+                       requestListCallback.addHighLevelCallbackListener(new HighLevelCallbackListener<RequestListResult>() {
 
-                       @SuppressWarnings("synthetic-access")
-                       public void gotResult(HighLevelCallback<RequestListResult> highLevelCallback) {
-                               RequestListResult requestListResult;
-                               try {
-                                       requestListResult = highLevelCallback.getResult();
-                               } catch (InterruptedException e) {
-                                       logger.log(Level.SEVERE, "getResult() blocked and was interrupted");
-                                       return;
-                               }
-                               for (RequestResult requestResult: requestListResult) {
+                               @SuppressWarnings("synthetic-access")
+                               public void gotResult(HighLevelCallback<RequestListResult> highLevelCallback) {
+                                       RequestListResult requestListResult;
+                                       try {
+                                               requestListResult = highLevelCallback.getResult();
+                                       } catch (InterruptedException e) {
+                                               logger.log(Level.SEVERE, "getResult() blocked and was interrupted");
+                                               return;
+                                       }
+                                       for (RequestResult requestResult: requestListResult) {
                                                String identifier = requestResult.getIdentifier();
                                                logger.log(Level.FINER, "got identifier: " + identifier);
                                                Request request = identifierRequests.get(identifier);
@@ -197,9 +202,12 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                                                }
                                                identifierRequests.put(requestResult.getIdentifier(), request);
                                                fireRequestAdded(request);
+                                       }
                                }
-                       }
-               });
+                       });
+               } catch (HighLevelException hle1) {
+                       throw new BackendException(hle1);
+               }
        }
 
        //
@@ -242,6 +250,10 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                try {
                        highLevelClient.setWatchGlobal(true);
                        getRequests(node);
+               } catch (HighLevelException hle1) {
+                       logger.log(Level.WARNING, "error in backend", hle1);
+               } catch (JSiteException jse1) {
+                       logger.log(Level.WARNING, "error in backend", jse1);
                } catch (IOException e) {
                        /* ignore exception, disconnects are handled elsewhere. */
                }
@@ -290,12 +302,12 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                        nodeRequests.put(node, identifierRequests);
                }
                Request request = identifierRequests.get(identifier);
-                       if (request == null) {
-                               logger.warning("got progress for unknown request: " + identifier);
-                               request = new Request(node, identifier);
-                               identifierRequests.put(identifier, request);
-                               fireRequestAdded(request);
-                       }
+               if (request == null) {
+                       logger.warning("got progress for unknown request: " + identifier);
+                       request = new Request(node, identifier);
+                       identifierRequests.put(identifier, request);
+                       fireRequestAdded(request);
+               }
                request.setTotalBlocks(highLevelProgress.getTotalBlocks());
                request.setRequiredBlocks(highLevelProgress.getRequiredBlocks());
                request.setSuccessfulBlocks(highLevelProgress.getSuccessfulBlocks());