From 1aa02e5207514d210e903d23e1d698b85fc29344 Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Sat, 11 Aug 2012 09:47:39 -0500 Subject: Reorganized REST common classes. The common classes used by REST client and services have been moved into the com.netscape.certsrv. packages. Ticket #215 --- .../netscape/certsrv/base/BadRequestException.java | 38 +++++ .../common/src/com/netscape/certsrv/base/Link.java | 88 ++++++++++ .../com/netscape/certsrv/base/PKIException.java | 182 +++++++++++++++++++++ .../certsrv/base/UnauthorizedException.java | 44 +++++ 4 files changed, 352 insertions(+) create mode 100644 base/common/src/com/netscape/certsrv/base/BadRequestException.java create mode 100644 base/common/src/com/netscape/certsrv/base/Link.java create mode 100644 base/common/src/com/netscape/certsrv/base/PKIException.java create mode 100644 base/common/src/com/netscape/certsrv/base/UnauthorizedException.java (limited to 'base/common/src/com/netscape/certsrv/base') diff --git a/base/common/src/com/netscape/certsrv/base/BadRequestException.java b/base/common/src/com/netscape/certsrv/base/BadRequestException.java new file mode 100644 index 000000000..48face306 --- /dev/null +++ b/base/common/src/com/netscape/certsrv/base/BadRequestException.java @@ -0,0 +1,38 @@ +// --- 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.base; +import javax.ws.rs.core.Response; + +public class BadRequestException extends PKIException { + + private static final long serialVersionUID = -4784839378360933483L; + + public BadRequestException(String message) { + super(Response.Status.BAD_REQUEST, message); + } + + public BadRequestException(String message, Throwable cause) { + super(Response.Status.BAD_REQUEST, message, cause); + } + + public BadRequestException(Data data) { + super(data); + } + +} + diff --git a/base/common/src/com/netscape/certsrv/base/Link.java b/base/common/src/com/netscape/certsrv/base/Link.java new file mode 100644 index 000000000..427d1c275 --- /dev/null +++ b/base/common/src/com/netscape/certsrv/base/Link.java @@ -0,0 +1,88 @@ +// --- 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) 2011 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK ---/** +package com.netscape.certsrv.base; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * @author alee + * + */ +@XmlRootElement(name = "Link") +public class Link { + protected String relationship; + protected String href; + protected String type; + + public Link() { + // required for jaxb + } + + public Link(String relationship, String href, String type) { + this.relationship = relationship; + this.href = href; + this.type = type; + } + + /** + * @return the relationship + */ + @XmlAttribute(name = "rel") + public String getRelationship() { + return relationship; + } + + /** + * @param relationship the relationship to set + */ + public void setRelationship(String relationship) { + this.relationship = relationship; + } + + /** + * @return the href + */ + @XmlAttribute + public String getHref() { + return href; + } + + /** + * @param href the href to set + */ + public void setHref(String href) { + this.href = href; + } + + /** + * @return the type + */ + @XmlAttribute + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + +} diff --git a/base/common/src/com/netscape/certsrv/base/PKIException.java b/base/common/src/com/netscape/certsrv/base/PKIException.java new file mode 100644 index 000000000..6afb8f72b --- /dev/null +++ b/base/common/src/com/netscape/certsrv/base/PKIException.java @@ -0,0 +1,182 @@ +// --- 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.base; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlValue; +import javax.xml.bind.annotation.adapters.XmlAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + +public class PKIException extends RuntimeException { + + private static final long serialVersionUID = 6000910362260369923L; + + public int code; + + public PKIException(String message) { + super(message); + code = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(); + } + + public PKIException(int code, String message) { + super(message); + this.code = code; + } + + public PKIException(Response.Status status, String message) { + super(message); + code = status.getStatusCode(); + } + + public PKIException(String message, Throwable cause) { + super(message, cause); + code = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(); + } + + public PKIException(int code, String message, Throwable cause) { + super(message, cause); + this.code = code; + } + + public PKIException(Response.Status status, String message, Throwable cause) { + super(message, cause); + code = status.getStatusCode(); + } + + public PKIException(Data data) { + super(data.message); + code = data.code; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public Data getData() { + Data data = new Data(); + data.className = getClass().getName(); + data.code = code; + data.message = getMessage(); + return data; + } + + @XmlRootElement(name="PKIException") + public static class Data { + + @XmlElement(name="ClassName") + public String className; + + @XmlElement(name="Code") + public int code; + + @XmlElement(name="Message") + public String message; + + @XmlElement(name="Attributes") + @XmlJavaTypeAdapter(MapAdapter.class) + public Map attributes = new LinkedHashMap(); + + public String getAttribute(String name) { + return attributes.get(name); + } + + public void setAttribute(String name, String value) { + attributes.put(name, value); + } + } + + public static class MapAdapter extends XmlAdapter> { + + public AttributeList marshal(Map map) { + AttributeList list = new AttributeList(); + for (Map.Entry entry : map.entrySet()) { + Attribute attribute = new Attribute(); + attribute.name = entry.getKey(); + attribute.value = entry.getValue(); + list.attributes.add(attribute); + } + return list; + } + + public Map unmarshal(AttributeList list) { + Map map = new LinkedHashMap(); + for (Attribute attribute : list.attributes) { + map.put(attribute.name, attribute.value); + } + return map; + } + } + + public static class AttributeList { + @XmlElement(name="Attribute") + public List attributes = new ArrayList(); + } + + public static class Attribute { + + @XmlAttribute + public String name; + + @XmlValue + public String value; + } + + @Provider + public static class Mapper implements ExceptionMapper { + + public Response toResponse(PKIException exception) { + // convert PKIException into HTTP response with XML content + return Response + .status(exception.getCode()) + .entity(exception.getData()) + .type(MediaType.APPLICATION_XML) + .build(); + } + } + + public static void main(String args[]) throws Exception { + Data data = new Data(); + data.className = PKIException.class.getName(); + data.code = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(); + data.message = "An error has occured"; + data.setAttribute("attr1", "value1"); + data.setAttribute("attr2", "value2"); + + JAXBContext context = JAXBContext.newInstance(Data.class); + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.marshal(data, System.out); + } +} diff --git a/base/common/src/com/netscape/certsrv/base/UnauthorizedException.java b/base/common/src/com/netscape/certsrv/base/UnauthorizedException.java new file mode 100644 index 000000000..f82c06754 --- /dev/null +++ b/base/common/src/com/netscape/certsrv/base/UnauthorizedException.java @@ -0,0 +1,44 @@ +// --- 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) 2012 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- + +package com.netscape.certsrv.base; + +import javax.ws.rs.core.Response; + + +/** + * @author Endi S. Dewata + */ +public class UnauthorizedException extends PKIException { + + private static final long serialVersionUID = -2025082875126996556L; + + public UnauthorizedException(String message) { + super(Response.Status.UNAUTHORIZED, message); + } + + public UnauthorizedException(String message, Throwable cause) { + super(Response.Status.UNAUTHORIZED, message, cause); + } + + public UnauthorizedException(Data data) { + super(data); + } + +} + -- cgit