Search in sources :

Example 1 with ManagedSite

use of org.apache.stanbol.entityhub.servicesapi.site.ManagedSite in project stanbol by apache.

the class ReferencedSiteRootResource method handleCorsPreflightEntity.

@OPTIONS
@Path("/entity")
public Response handleCorsPreflightEntity(@PathParam(value = "site") String siteId, @Context HttpHeaders headers) {
    Site site = getSite(siteId);
    ResponseBuilder res = Response.ok();
    if (site instanceof ManagedSite) {
    //enableCORS(servletContext, res, headers, OPTIONS,GET,POST,PUT,DELETE);
    } else {
    //enableCORS(servletContext, res, headers,OPTIONS,GET);
    }
    return res.build();
}
Also used : ManagedSite(org.apache.stanbol.entityhub.servicesapi.site.ManagedSite) Site(org.apache.stanbol.entityhub.servicesapi.site.Site) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) ManagedSite(org.apache.stanbol.entityhub.servicesapi.site.ManagedSite) Path(javax.ws.rs.Path) EntityhubLDPath(org.apache.stanbol.entityhub.ldpath.EntityhubLDPath) OPTIONS(javax.ws.rs.OPTIONS)

Example 2 with ManagedSite

use of org.apache.stanbol.entityhub.servicesapi.site.ManagedSite in project stanbol by apache.

the class ReferencedSiteRootResource method deleteEntity.

@DELETE
@Path("entity/")
public Response deleteEntity(@PathParam(value = "site") String siteId, @QueryParam(value = "id") String id, @Context HttpHeaders headers) {
    MediaType accepted = getAcceptableMediaType(headers, JerseyUtils.ENTITY_SUPPORTED_MEDIA_TYPES, MediaType.APPLICATION_JSON_TYPE);
    ManagedSite managedSite;
    Site site = getSite(siteId);
    if (site instanceof ManagedSite) {
        managedSite = (ManagedSite) site;
    } else {
        ResponseBuilder builder = Response.status(Status.FORBIDDEN).entity(String.format("The Site '%s' is not managed and does not support " + "create/update nor delete operations", site.getId())).header(HttpHeaders.ACCEPT, accepted);
        //addCORSOrigin(servletContext, builder, headers);
        return builder.build();
    }
    if (id == null || id.isEmpty()) {
        ResponseBuilder builder = Response.status(Status.BAD_REQUEST).entity("The Request does" + "not provide the id of the Entity to delete (parameter 'id').").header(HttpHeaders.ACCEPT, accepted);
        //addCORSOrigin(servletContext, builder, headers);
        return builder.build();
    }
    ResponseBuilder builder;
    try {
        if ("*".equals(id)) {
            managedSite.deleteAll();
            builder = Response.ok();
        } else {
            Entity entity = managedSite.getEntity(id);
            if (entity != null) {
                //delete the entity
                managedSite.delete(id);
                //return the deleted data
                final MediaType acceptedMediaType = getAcceptableMediaType(headers, new HashSet<String>(JerseyUtils.ENTITY_SUPPORTED_MEDIA_TYPES), MediaType.APPLICATION_JSON_TYPE);
                builder = Response.ok(entity).header(HttpHeaders.CONTENT_TYPE, acceptedMediaType + "; charset=utf-8");
            } else {
                builder = Response.status(Status.NOT_FOUND).entity("No Entity with the parsed Id '" + id + "' is present on the ManagedSite '" + managedSite.getId() + "'!").header(HttpHeaders.ACCEPT, accepted);
            }
        }
    } catch (SiteException e) {
        String message = "Exception while deleting '" + id + "' from ManagedSite '" + managedSite.getId() + "'!";
        log.error(message, e);
        builder = Response.status(Status.INTERNAL_SERVER_ERROR).entity(message + ' ' + e.getClass().getSimpleName() + ": " + e.getMessage()).header(HttpHeaders.ACCEPT, accepted);
    }
    //addCORSOrigin(servletContext, builder, headers);
    return builder.build();
}
Also used : ManagedSite(org.apache.stanbol.entityhub.servicesapi.site.ManagedSite) Site(org.apache.stanbol.entityhub.servicesapi.site.Site) Entity(org.apache.stanbol.entityhub.servicesapi.model.Entity) MediaType(javax.ws.rs.core.MediaType) MediaTypeUtil.getAcceptableMediaType(org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) SiteException(org.apache.stanbol.entityhub.servicesapi.site.SiteException) ManagedSiteException(org.apache.stanbol.entityhub.servicesapi.site.ManagedSiteException) ManagedSite(org.apache.stanbol.entityhub.servicesapi.site.ManagedSite) Path(javax.ws.rs.Path) EntityhubLDPath(org.apache.stanbol.entityhub.ldpath.EntityhubLDPath) DELETE(javax.ws.rs.DELETE)

Example 3 with ManagedSite

use of org.apache.stanbol.entityhub.servicesapi.site.ManagedSite in project stanbol by apache.

the class ReferencedSiteRootResource method updateOrCreateEntity.

private Response updateOrCreateEntity(Site site, String id, Map<String, Representation> parsed, String requestMethod, boolean create, boolean update, HttpHeaders headers) {
    long start = System.currentTimeMillis();
    MediaType accepted = getAcceptableMediaType(headers, JerseyUtils.ENTITY_SUPPORTED_MEDIA_TYPES, MediaType.APPLICATION_JSON_TYPE);
    ManagedSite managedSite;
    if (site instanceof ManagedSite) {
        managedSite = (ManagedSite) site;
    } else {
        ResponseBuilder builder = Response.status(Status.FORBIDDEN).entity(String.format("The Site '%s' is not managed and does not support " + "create/update nor delete operations", site.getId())).header(HttpHeaders.ACCEPT, accepted);
        //addCORSOrigin(servletContext, builder, headers);
        return builder.build();
    }
    //(1) if an id is parsed we need to ignore all other representations
    if (id != null && !"*".equals(id)) {
        Representation r = parsed.get(id);
        if (r == null) {
            ResponseBuilder builder = Response.status(Status.BAD_REQUEST).entity(String.format("Parsed RDF data do not contain any " + "Information about the parsed id '%s'", id)).header(HttpHeaders.ACCEPT, accepted);
            //addCORSOrigin(servletContext, builder, headers);
            return builder.build();
        } else {
            parsed = Collections.singletonMap(id, r);
        }
    }
    //First check if all parsed Representation can be created/updated
    if (!(create && update)) {
        //if both create and update are enabled skip this
        log.debug("   ... validate parsed Representation state (create: {}| update: {})", create, update);
        for (Entry<String, Representation> entry : parsed.entrySet()) {
            boolean exists;
            try {
                exists = managedSite.getEntity(entry.getKey()) != null;
            } catch (SiteException e) {
                log.error(String.format("Exception while checking the existance " + "of an Entity with id  %s in the Entityhub.", entry.getKey()), e);
                ResponseBuilder builder = Response.status(Status.INTERNAL_SERVER_ERROR).entity(String.format("Unable to process Entity %s because of" + "an Error while checking the current version of that" + "Entity within the Entityhub (Message: %s)", entry.getKey(), e.getMessage())).header(HttpHeaders.ACCEPT, accepted);
                //addCORSOrigin(servletContext, builder, headers);
                return builder.build();
            }
            if ((exists && !update) || (!exists && !create)) {
                ResponseBuilder builder = Response.status(Status.BAD_REQUEST).entity(String.format("Unable to %s an Entity %s becuase it %s and %s is deactivated. " + " You might want to set the '%s' parameter to TRUE in your Request", exists ? "update" : "create", entry.getKey(), exists ? "does already exists " : "does not", exists ? "updateing existing" : "creating new", exists ? "does already" : "does not exists", exists ? "update" : "create")).header(HttpHeaders.ACCEPT, accepted);
                //addCORSOrigin(servletContext, builder, headers);
                return builder.build();
            }
        }
    }
    long validateCompleted = System.currentTimeMillis();
    log.info("   ... validate request data {}ms", validateCompleted - start);
    try {
        managedSite.store(parsed.values());
    } catch (ManagedSiteException e) {
        log.error(String.format("Exception while storing parsed Representations " + "in the ManagedSite %s", managedSite.getId()), e);
        ResponseBuilder builder = Response.status(Status.INTERNAL_SERVER_ERROR).entity("Unable to store parsed Entities to ManagedSite " + managedSite.getId() + " because of an error (Message: " + e.getMessage() + ")").header(HttpHeaders.ACCEPT, accepted);
        //addCORSOrigin(servletContext, builder, headers);
        return builder.build();
    }
    ResponseBuilder builder;
    if (create && parsed.size() == 1) {
        String createdId = parsed.keySet().iterator().next();
        URI created = uriInfo.getRequestUriBuilder().queryParam("id", createdId).build();
        builder = Response.created(created);
        builder.header(HttpHeaders.ACCEPT, accepted);
    } else {
        builder = Response.noContent();
    }
    log.info("   ... create/update {} entities in {}ms", parsed.size(), System.currentTimeMillis() - validateCompleted);
    //addCORSOrigin(servletContext, builder, headers);
    return builder.build();
}
Also used : ManagedSiteException(org.apache.stanbol.entityhub.servicesapi.site.ManagedSiteException) MediaType(javax.ws.rs.core.MediaType) MediaTypeUtil.getAcceptableMediaType(org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType) Representation(org.apache.stanbol.entityhub.servicesapi.model.Representation) RdfRepresentation(org.apache.stanbol.entityhub.model.clerezza.RdfRepresentation) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) SiteException(org.apache.stanbol.entityhub.servicesapi.site.SiteException) ManagedSiteException(org.apache.stanbol.entityhub.servicesapi.site.ManagedSiteException) ManagedSite(org.apache.stanbol.entityhub.servicesapi.site.ManagedSite) URI(java.net.URI)

Aggregations

ResponseBuilder (javax.ws.rs.core.Response.ResponseBuilder)3 ManagedSite (org.apache.stanbol.entityhub.servicesapi.site.ManagedSite)3 Path (javax.ws.rs.Path)2 MediaType (javax.ws.rs.core.MediaType)2 MediaTypeUtil.getAcceptableMediaType (org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType)2 EntityhubLDPath (org.apache.stanbol.entityhub.ldpath.EntityhubLDPath)2 ManagedSiteException (org.apache.stanbol.entityhub.servicesapi.site.ManagedSiteException)2 Site (org.apache.stanbol.entityhub.servicesapi.site.Site)2 SiteException (org.apache.stanbol.entityhub.servicesapi.site.SiteException)2 URI (java.net.URI)1 DELETE (javax.ws.rs.DELETE)1 OPTIONS (javax.ws.rs.OPTIONS)1 RdfRepresentation (org.apache.stanbol.entityhub.model.clerezza.RdfRepresentation)1 Entity (org.apache.stanbol.entityhub.servicesapi.model.Entity)1 Representation (org.apache.stanbol.entityhub.servicesapi.model.Representation)1