Search in sources :

Example 66 with WebApplicationException

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);
    }
}
Also used : InputSource(org.xml.sax.InputSource) WebApplicationException(javax.ws.rs.WebApplicationException) JAXBException(javax.xml.bind.JAXBException) JAXBContext(javax.xml.bind.JAXBContext)

Example 67 with WebApplicationException

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));
}
Also used : NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) WebApplicationException(javax.ws.rs.WebApplicationException)

Example 68 with WebApplicationException

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);
    }
}
Also used : WebApplicationException(javax.ws.rs.WebApplicationException) HashMap(java.util.HashMap) AccessToken(com.sun.identity.oauth.service.models.AccessToken) GET(javax.ws.rs.GET)

Example 69 with WebApplicationException

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);
    }
}
Also used : UniqueRandomString(com.sun.identity.oauth.service.util.UniqueRandomString) WebApplicationException(javax.ws.rs.WebApplicationException) HashMap(java.util.HashMap) EncodingException(org.owasp.esapi.errors.EncodingException) UniqueRandomString(com.sun.identity.oauth.service.util.UniqueRandomString) URI(java.net.URI) Consumer(com.sun.identity.oauth.service.models.Consumer) Encoder(org.owasp.esapi.Encoder) URLEncoder(java.net.URLEncoder) List(java.util.List) IntrusionException(org.owasp.esapi.errors.IntrusionException) HashMap(java.util.HashMap) Map(java.util.Map) MultivaluedMap(javax.ws.rs.core.MultivaluedMap) Validator(org.owasp.esapi.Validator) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes)

Example 70 with WebApplicationException

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);
    }
}
Also used : Consumer(com.sun.identity.oauth.service.models.Consumer) WebApplicationException(javax.ws.rs.WebApplicationException) HashMap(java.util.HashMap) Consumes(javax.ws.rs.Consumes) GET(javax.ws.rs.GET)

Aggregations

WebApplicationException (javax.ws.rs.WebApplicationException)276 Produces (javax.ws.rs.Produces)77 GET (javax.ws.rs.GET)71 Path (javax.ws.rs.Path)69 IOException (java.io.IOException)47 POST (javax.ws.rs.POST)47 Consumes (javax.ws.rs.Consumes)44 ResponseBuilder (javax.ws.rs.core.Response.ResponseBuilder)43 Response (javax.ws.rs.core.Response)30 MediaType (javax.ws.rs.core.MediaType)26 URI (java.net.URI)25 HashMap (java.util.HashMap)20 JSONObject (org.codehaus.jettison.json.JSONObject)20 Test (org.junit.Test)19 JSONException (org.codehaus.jettison.json.JSONException)18 ApiOperation (io.swagger.annotations.ApiOperation)17 ArrayList (java.util.ArrayList)17 ByteArrayInputStream (java.io.ByteArrayInputStream)15 Viewable (org.apache.stanbol.commons.web.viewable.Viewable)15 List (java.util.List)14