summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2012-08-18 02:30:44 -0500
committerEndi Sukma Dewata <edewata@redhat.com>2012-08-29 23:42:53 -0500
commit60835ed008586f85a22737d0161cb026f2dbffec (patch)
tree363e447f38aa7bfe9835955e7f1f7345228c14ff /base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java
parent88176c5c8caf146a1a408dc3a7f6b23e1a8e63b7 (diff)
downloadpki-60835ed008586f85a22737d0161cb026f2dbffec.tar.gz
pki-60835ed008586f85a22737d0161cb026f2dbffec.tar.xz
pki-60835ed008586f85a22737d0161cb026f2dbffec.zip
Moved REST CLI into pki-tools.
The pki-client.jar has been split and merged into pki-certsrv.jar and pki-tools.jar. The REST client classes are now packaged in com.netscape.certsrv.<component> packages. The REST CLI classes are now packaged in com.netscape.cmstools.<component> packages. The "pki" script has been moved into pki-tools RPM package. Ticket #215
Diffstat (limited to 'base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java')
-rw-r--r--base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java b/base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java
new file mode 100644
index 000000000..7d29b9fd9
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/client/PKIErrorInterceptor.java
@@ -0,0 +1,62 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.client;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+
+import org.jboss.resteasy.client.ClientResponse;
+import org.jboss.resteasy.client.core.ClientErrorInterceptor;
+
+import com.netscape.certsrv.base.PKIException;
+
+public class PKIErrorInterceptor implements ClientErrorInterceptor {
+
+ public void handle(ClientResponse<?> response) {
+
+ // handle HTTP code 4xx and 5xx
+ int code = response.getResponseStatus().getStatusCode();
+ if (code < 400)
+ return;
+
+ MultivaluedMap<String, String> headers = response.getHeaders();
+ String contentType = headers.getFirst("Content-Type");
+
+ // handle XML content only
+ if (contentType == null || !contentType.startsWith(MediaType.APPLICATION_XML))
+ return;
+
+ PKIException exception;
+
+ try {
+ // Requires RESTEasy 2.3.2
+ // https://issues.jboss.org/browse/RESTEASY-652
+ PKIException.Data data = response.getEntity(PKIException.Data.class);
+
+ Class<?> clazz = Class.forName(data.className);
+ exception = (PKIException) clazz.getConstructor(PKIException.Data.class).newInstance(data);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return;
+ }
+
+ throw exception;
+ }
+
+}