use of javax.ws.rs.WebApplicationException in project opennms by OpenNMS.
the class ValidatingMessageBodyReader method readFrom.
@Override
public T readFrom(final Class<T> clazz, final Type type, final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, String> parameters, final InputStream stream) throws IOException, WebApplicationException {
LOG.debug("readFrom: {}/{}/{}", clazz.getSimpleName(), type, mediaType);
JAXBContext jaxbContext = null;
final ContextResolver<JAXBContext> resolver = providers.getContextResolver(JAXBContext.class, mediaType);
try {
if (resolver != null) {
jaxbContext = resolver.getContext(clazz);
}
if (jaxbContext == null) {
jaxbContext = JAXBContext.newInstance(clazz);
}
return JaxbUtils.unmarshal(clazz, new InputSource(stream), jaxbContext);
} catch (final JAXBException e) {
LOG.warn("An error occurred while unmarshaling a {} object", clazz.getSimpleName(), e);
throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
}
}
use of javax.ws.rs.WebApplicationException in project opennms by OpenNMS.
the class NCSComponentServiceImpl method deleteComponent.
private void deleteComponent(final ComponentIdentifier id, final ComponentEventQueue ceq, final boolean deleteOrphans) {
final NCSComponent component = getComponent(id);
if (component == null) {
throw new WebApplicationException(Status.BAD_REQUEST);
}
final Set<NCSComponent> parentComponents = component.getParentComponents();
final Set<ComponentIdentifier> childrenIdentifiers = getIdentifiers(component.getSubcomponents());
// first, we deal with orphans
if (deleteOrphans) {
for (final ComponentIdentifier subId : childrenIdentifiers) {
handleOrphanedComponents(component, subId, ceq, deleteOrphans);
}
}
// first, we remove this component from each of its parents
for (final NCSComponent parent : parentComponents) {
parent.getSubcomponents().remove(component);
m_componentDao.update(parent);
}
// then we delete this component
component.setSubcomponents(EMPTY_COMPONENT_SET);
m_componentDao.delete(component);
// and any events or alarms depending on it
deleteEvents(id.getForeignSource(), id.getForeignId());
deleteAlarms(id.getForeignSource(), id.getForeignId());
// alert that the component is deleted
ceq.componentDeleted(getIdentifier(component));
// then alert about the parents
sendUpdateEvents(ceq, getIdentifiers(parentComponents));
}
use of javax.ws.rs.WebApplicationException in project OpenAM by OpenRock.
the class AccessTokenResource method getAccessToken.
/**
* GET method for retrieving a specific Service Consumer instance
* and obtaining corresponding metadata (consumer name, URI, secret).
*
* @param sub (@link int) to retrieve the principal's id. Expected
* value is either 1 (yes) or 0 (no) (e.g <PRE>&subject=1</PRE>).
* @param shsec (@link int) to retrieve the shared secret (same
* value as subject parameter).
*
* @return an HTTP response with URL encoded value of the service metadata.
*/
@GET
public //@Consumes(MediaType.TEXT_PLAIN)
Response getAccessToken(@QueryParam(OAUTH_SUBJECT) int sub, @QueryParam(OAUTH_SHARED_SECRET) int shsec) {
OAuthResourceManager oauthResMgr = OAuthResourceManager.getInstance();
try {
String resp = "";
String secret = null;
String principalId = null;
String tokenUri = context.getAbsolutePath().toString();
Map<String, String> searchMap = new HashMap<String, String>();
searchMap.put(ACCESS_TOKEN_URI, tokenUri);
List<AccessToken> accTokens = oauthResMgr.searchAccessTokens(searchMap);
AccessToken token = null;
if ((accTokens != null) && (!accTokens.isEmpty())) {
token = accTokens.get(0);
}
if (token == null) {
throw new WebApplicationException(new Throwable("Token invalid."));
}
if ((sub == 1) && (token.getAcctPpalid() != null)) {
principalId = URLEncoder.encode(token.getAcctPpalid());
resp = OAUTH_SUBJECT + "=" + principalId;
}
if ((shsec == 1) && (token.getAcctSecret() != null)) {
secret = URLEncoder.encode(token.getAcctSecret());
if (principalId != null) {
resp += "&";
}
resp += OAUTH_SHARED_SECRET + "=" + secret;
}
return Response.ok(resp, MediaType.TEXT_PLAIN).build();
} catch (OAuthServiceException e) {
Logger.getLogger(AccessTokenResource.class.getName()).log(Level.SEVERE, null, e);
throw new WebApplicationException(e);
}
}
use of javax.ws.rs.WebApplicationException in project OpenAM by OpenRock.
the class ConsumerRequest method postConsumerRegistrations.
/**
* POST method for registering a Service Consumer
* and obtaining corresponding consumer key & secret.
*
* @param formParams {@link String} containing the service
* consumer's description.
* This description takes the form of name=value pairs separated by &.
* The following parameters are supported:
* <OL>
* <LI>name - the service consumer's name.</LI>
* <LI>icon - the service consumer's URI for its icon (MUST be unique).</LI>
* <LI>service - the service consumer's URI for its service</LI>
* <LI>rsapublickey - (optional) the RSA public key of the Service Consumer.</LI>
* </OL>
* <p>
*
* Example of string:
* <pre>
* name=Service XYZ&icon=http://www.example.com/icon.jpg&service=http://www.example.com
* </pre>
*
*
* @return an HTTP response with content of the created resource.
* The location URI is set to the newly created OAuth consumer key.
* The body of the response is of the form:
* <pre>
* consumer_key=http://serviceprovider/0123456762121
* consumer_secret=12345633
* </pre>
* Both values are URL encoded.
*/
@POST
@Consumes("application/x-www-form-urlencoded")
public Response postConsumerRegistrations(MultivaluedMap<String, String> formParams) {
OAuthResourceManager oauthResMgr = OAuthResourceManager.getInstance();
try {
Consumer cons = new Consumer();
String cert = null;
String tmpsecret = null;
Boolean keyed = false;
Set<String> pnames = formParams.keySet();
Iterator<String> iter = pnames.iterator();
Encoder enc = ESAPI.encoder();
Validator validator = ESAPI.validator();
while (iter.hasNext()) {
String key = iter.next();
String val = formParams.getFirst(key);
if (key.equalsIgnoreCase(C_NAME)) {
String consumerName = enc.canonicalize(val);
if (!validator.isValidInput(C_NAME, consumerName, "HTTPParameterValue", 512, true)) {
String resp = "Invalid name entered entered. Please try again.";
return Response.ok().entity(resp).type(MediaType.APPLICATION_FORM_URLENCODED).build();
}
// Check if a consumer with the same name is already registered,
// if so, will not do the registration again.
Map<String, String> searchMap = new HashMap<String, String>();
searchMap.put(CONSUMER_NAME, consumerName);
List<Consumer> consumers = oauthResMgr.searchConsumers(searchMap);
if ((consumers != null) && (!consumers.isEmpty())) {
String resp = "A consumer is already registered with name " + enc.encodeForHTML(consumerName) + ".";
return Response.ok().entity(resp).type(MediaType.APPLICATION_FORM_URLENCODED).build();
}
cons.setConsName(consumerName);
} else if (key.equalsIgnoreCase(C_CERT)) {
// The cert is in PEM format (no URL decode needed)
cert = val;
} else if (key.equalsIgnoreCase(C_SECRET)) {
tmpsecret = URLDecoder.decode(val);
} else if (key.equalsIgnoreCase(C_KEY)) {
keyed = true;
String consumerKey = enc.canonicalize(val);
if (!validator.isValidInput(C_KEY, consumerKey, "HTTPParameterValue", 512, true)) {
String resp = "Invalid key entered entered. Please try again.";
return Response.ok().entity(resp).type(MediaType.APPLICATION_FORM_URLENCODED).build();
}
// Check if a consumer with the same key is already registered,
// if so, will not do the registration again.
cons.setConsKey(consumerKey);
Map<String, String> searchMap = new HashMap<String, String>();
searchMap.put(CONSUMER_KEY, consumerKey);
List<Consumer> consumers = oauthResMgr.searchConsumers(searchMap);
if ((consumers != null) && (!consumers.isEmpty())) {
String resp = "A consumer is already registered with key " + enc.encodeForHTML(consumerKey) + ".";
return Response.ok().entity(resp).type(MediaType.APPLICATION_FORM_URLENCODED).build();
}
} else {
// anything else is ignored for the time being
}
}
if (cert != null) {
cons.setConsRsakey(cert);
}
if (tmpsecret != null) {
cons.setConsSecret(tmpsecret);
} else {
cons.setConsSecret(new UniqueRandomString().getString());
}
if (!keyed) {
String baseUri = context.getBaseUri().toString();
if (baseUri.endsWith("/"))
baseUri = baseUri.substring(0, baseUri.length() - 1);
URI loc = URI.create(baseUri + PathDefs.CONSUMERS_PATH + "/" + new UniqueRandomString().getString());
String consKey = loc.toString();
cons.setConsKey(consKey);
}
oauthResMgr.createConsumer(null, cons);
String resp = "consumer_key=" + URLEncoder.encode(cons.getConsKey()) + "&consumer_secret=" + URLEncoder.encode(cons.getConsSecret());
return Response.created(URI.create(cons.getConsKey())).entity(resp).type(MediaType.APPLICATION_FORM_URLENCODED).build();
} catch (OAuthServiceException e) {
Logger.getLogger(ConsumerRequest.class.getName()).log(Level.SEVERE, null, e);
throw new WebApplicationException(e);
} catch (IntrusionException e) {
Logger.getLogger(ConsumerRequest.class.getName()).log(Level.SEVERE, null, e);
throw new WebApplicationException(e);
} catch (EncodingException e) {
Logger.getLogger(ConsumerRequest.class.getName()).log(Level.SEVERE, null, e);
throw new WebApplicationException(e);
}
}
use of javax.ws.rs.WebApplicationException in project OpenAM by OpenRock.
the class ConsumerResource method getRegistration.
/**
* GET method for retrieving a specific Service Consumer instance
* and obtaining corresponding metadata (consumer name, URI, secret).
*
* @param consID The comsumer ID
* @param sigmethod {@link String} to choose the signature algorithm
* of interest (e.g. <PRE>?signature_method=RSA-SHA1</PRE> will return
* the RSA public key of the service consumer).
*
* @return an HTTP response with URL encoded value of the service metadata.
*/
@GET
@Consumes(MediaType.TEXT_PLAIN)
public Response getRegistration(@PathParam(C_ID) String consID, @QueryParam(C_SIGNATURE_METHOD) String sigmethod) {
OAuthResourceManager oauthResMgr = OAuthResourceManager.getInstance();
try {
String name = null;
String icon = null;
String ckey = context.getAbsolutePath().toString();
Map<String, String> searchMap = new HashMap<String, String>();
searchMap.put(CONSUMER_KEY, ckey);
List<Consumer> consumers = oauthResMgr.searchConsumers(searchMap);
if ((consumers == null) || consumers.isEmpty()) {
throw new WebApplicationException(new Throwable("Consumer key is missing."), BAD_REQUEST);
}
Consumer consumer = consumers.get(0);
String cs = null;
if (sigmethod != null) {
if (sigmethod.equalsIgnoreCase(RSA_SHA1.NAME)) {
cs = URLEncoder.encode(consumer.getConsRsakey());
} else {
cs = URLEncoder.encode(consumer.getConsSecret());
}
}
if (consumer.getConsName() != null) {
name = URLEncoder.encode(consumer.getConsName());
}
String resp = C_KEY + "=" + URLEncoder.encode(ckey);
if (name != null) {
resp += "&" + C_NAME + "=" + name;
}
if (cs != null) {
resp += "&" + C_SECRET + "=" + cs;
}
return Response.ok(resp, MediaType.TEXT_PLAIN).build();
} catch (OAuthServiceException e) {
Logger.getLogger(ConsumerResource.class.getName()).log(Level.SEVERE, null, e);
throw new WebApplicationException(e);
}
}
Aggregations