Repository: incubator-unomi
Updated Branches:
  refs/heads/master 8f6f2472d -> be379f8ec


UNOMI-101 : Add Exception mapper for error handling


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/be379f8e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/be379f8e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/be379f8e

Branch: refs/heads/master
Commit: be379f8eca0a6f804b89d380c5c938dd684bf234
Parents: 8f6f247
Author: Abdelkader Midani <amid...@apache.org>
Authored: Thu Jul 6 02:54:45 2017 +0200
Committer: Abdelkader Midani <amid...@apache.org>
Committed: Thu Jul 6 02:54:45 2017 +0200

----------------------------------------------------------------------
 .../router/rest/ConfigRestExceptionMapper.java  | 33 +++++++++
 .../ExportConfigurationServiceEndPoint.java     | 17 +++--
 .../ImportConfigurationServiceEndPoint.java     | 11 ++-
 .../router/rest/PartialContentException.java    | 74 ++++++++++++++++++++
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  4 ++
 5 files changed, 131 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/be379f8e/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
new file mode 100644
index 0000000..179f3d4
--- /dev/null
+++ 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.router.rest;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+
+/**
+ * Created by amidani on 06/07/2017.
+ */
+public class ConfigRestExceptionMapper implements 
ExceptionMapper<PartialContentException> {
+
+    @Override
+    public Response toResponse(PartialContentException exception) {
+        return 
Response.status(Response.Status.PARTIAL_CONTENT).header("Content-Type", 
MediaType.TEXT_PLAIN).entity(new String(exception.getMessage())).build();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/be379f8e/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
index 98dbe18..35d4f34 100644
--- 
a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
+++ 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
@@ -32,10 +32,12 @@ import org.slf4j.LoggerFactory;
 
 import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -85,11 +87,16 @@ public class ExportConfigurationServiceEndPoint extends 
AbstractConfigurationSer
                 HttpResponse response = httpClient.execute(httpPut);
 
                 if (response.getStatusLine().getStatusCode() != 200) {
-                    throw new RuntimeException("Failed : HTTP error code : "
-                            + response.getStatusLine().getStatusCode());
+                    logger.error("Failed to update the running config: Please 
check the acceccibilty to the URI: \n{}",
+                            "http://localhost:"; + 
configSharingService.getProperty("internalServerPort") + 
"/configUpdate/importConfigAdmin");
+                    logger.error("HTTP Status code returned {}", 
response.getStatusLine().getStatusCode());
+                    throw new 
PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
                 }
-            } catch (IOException e) {
+            } catch (Exception e) {
                 logger.warn("Unable to update Camel route [{}]", 
exportConfiguration.getItemId());
+                e.printStackTrace();
+                throw new 
PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
+
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/be379f8e/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
index 25ab70d..dec61e0 100644
--- 
a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
+++ 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
@@ -83,11 +83,16 @@ public class ImportConfigurationServiceEndPoint extends 
AbstractConfigurationSer
                 HttpResponse response = httpClient.execute(httpPut);
 
                 if (response.getStatusLine().getStatusCode() != 200) {
-                    throw new RuntimeException("Failed : HTTP error code : "
-                            + response.getStatusLine().getStatusCode());
+                    logger.error("Failed to update the running config: Please 
check the acceccibilty to the URI: \n{}",
+                            "http://localhost234:"; + 
configSharingService.getProperty("internalServerPort") + 
"/configUpdate/importConfigAdmin");
+                    logger.error("HTTP Status code returned {}", 
response.getStatusLine().getStatusCode());
+                    throw new 
PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
                 }
-            } catch (IOException e) {
+            } catch (Exception e) {
                 logger.warn("Unable to update Camel route [{}]", 
importConfiguration.getItemId());
+                e.printStackTrace();
+                throw new 
PartialContentException("RUNNING_CONFIG_UPDATE_FAILED");
+
             }
         }
         return importConfigSaved;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/be379f8e/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/PartialContentException.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/PartialContentException.java
 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/PartialContentException.java
new file mode 100644
index 0000000..e9f0635
--- /dev/null
+++ 
b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/PartialContentException.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.router.rest;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
+
+public class PartialContentException extends WebApplicationException {
+
+    private static final long serialVersionUID = -6820343767511628388L;
+
+    /**
+     * Construct a new "partial content" exception.
+     */
+    public PartialContentException() {
+        super((Throwable) null, Response.Status.PARTIAL_CONTENT);
+    }
+
+    /**
+     * Construct a new "partial content" exception.
+     *
+     * @param message the detail message (which is saved for later retrieval
+     *                by the {@link #getMessage()} method).
+     */
+    public PartialContentException(String message) {
+        super(message, (Throwable) null, Response.Status.PARTIAL_CONTENT);
+    }
+
+    public PartialContentException(String message, Response response) {
+        super(message, (Throwable) null, Response.Status.PARTIAL_CONTENT);
+    }
+
+    /**
+     * Construct a new "partial content" exception.
+     *
+     * @param cause the underlying cause of the exception.
+     */
+    public PartialContentException(Throwable cause) {
+        super(cause, Response.Status.PARTIAL_CONTENT);
+    }
+
+    /**
+     * Construct a new "partial content" exception.
+     *
+     * @param message the detail message (which is saved for later retrieval
+     *                by the {@link #getMessage()} method).
+     * @param cause   the underlying cause of the exception.
+     */
+    public PartialContentException(String message, Throwable cause) {
+        super(message, cause, Response.Status.PARTIAL_CONTENT);
+    }
+
+    public PartialContentException(Response response, Throwable cause) {
+        super(cause, Response.Status.PARTIAL_CONTENT);
+    }
+
+    public PartialContentException(String message, Response response, 
Throwable cause) {
+        super(message, cause, Response.Status.PARTIAL_CONTENT);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/be379f8e/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
 
b/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 9be4a07..ebf1daf 100644
--- 
a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ 
b/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -36,11 +36,14 @@
         <property name="realmName" value="cxs"/>
     </bean>
 
+    <bean id="exceptionMapper" 
class="org.apache.unomi.router.rest.ConfigRestExceptionMapper"/>
+
     <jaxrs:server address="/importConfiguration" 
id="restImportConfigurationService">
         <jaxrs:providers>
             <ref component-id="json-provider"/>
             <ref component-id="cors-filter"/>
             <ref component-id="jaas-filter"/>
+            <ref component-id="exceptionMapper"/>
         </jaxrs:providers>
 
         <jaxrs:serviceBeans>
@@ -53,6 +56,7 @@
             <ref component-id="json-provider"/>
             <ref component-id="cors-filter"/>
             <ref component-id="jaas-filter"/>
+            <ref component-id="exceptionMapper"/>
         </jaxrs:providers>
 
         <jaxrs:serviceBeans>

Reply via email to