public StringApiResponse updateResource(JAXBResource jaxbResource, Properties properties) throws Throwable { StringApiResponse response = new StringApiResponse(); BaseResourceDataBean bean = null; try { UserDetails user = (UserDetails) properties.get(SystemConstants.API_USER_PARAMETER); this.check(jaxbResource, user, response, false); if (null != response.getErrors() && !response.getErrors().isEmpty()) { return response; } bean = jaxbResource.createBataBean(this.getCategoryManager()); this.getResourceManager().updateResource(bean); response.setResult(IResponseBuilder.SUCCESS); } catch (Throwable t) { ApsSystemUtils.logThrowable(t, this, "updateResource"); throw new ApsSystemException("Error into API method", t); } finally { if (null != bean && null != bean.getFile()) { bean.getFile().delete(); } } return response; }
public StringApiResponse addResource(JAXBResource jaxbResource, Properties properties) throws ApiException, Throwable { StringApiResponse response = new StringApiResponse(); BaseResourceDataBean bean = null; try { UserDetails user = (UserDetails) properties.get(SystemConstants.API_USER_PARAMETER); this.check(jaxbResource, user, response, true); if (null != response.getErrors() && !response.getErrors().isEmpty()) { return response; } bean = jaxbResource.createBataBean(this.getCategoryManager()); String id = bean.getResourceId(); if (null != id && id.trim().length() > 0) { Pattern pattern = Pattern.compile("^[a-zA-Z]+$"); Matcher matcher = pattern.matcher(id); if (!matcher.matches()) { throw new ApiException( IApiErrorCodes.API_PARAMETER_VALIDATION_ERROR, "The resourceId can contain only alphabetic characters", Response.Status.CONFLICT); } } this.getResourceManager().addResource(bean); response.setResult(IResponseBuilder.SUCCESS); } catch (ApiException ae) { throw ae; } catch (Throwable t) { ApsSystemUtils.logThrowable(t, this, "addResource"); throw new ApsSystemException("Error into API method", t); } finally { if (null != bean && null != bean.getFile()) { bean.getFile().delete(); } } return response; }
private StringApiResponse deleteResource(Properties properties, ResourceInterface resource) throws ApiException, Throwable { StringApiResponse response = new StringApiResponse(); try { String id = properties.getProperty("id"); if (null == resource) { throw new ApiException( IApiErrorCodes.API_VALIDATION_ERROR, "Resource with code '" + id + "' does not exist", Response.Status.CONFLICT); } UserDetails user = (UserDetails) properties.get(SystemConstants.API_USER_PARAMETER); if (null == user) { user = this.getUserManager().getGuestUser(); } if (!this.getAuthorizationManager().isAuthOnGroup(user, resource.getMainGroup())) { throw new ApiException( IApiErrorCodes.API_VALIDATION_ERROR, "Resource not allowed for user '" + user.getUsername() + "' - resource group '" + resource.getMainGroup() + "'", Response.Status.FORBIDDEN); } List<String> references = ((ResourceUtilizer) this.getContentManager()).getResourceUtilizers(id); if (references != null && references.size() > 0) { boolean found = false; for (int i = 0; i < references.size(); i++) { String reference = references.get(i); ContentRecordVO record = this.getContentManager().loadContentVO(reference); if (null != record) { found = true; response.addError( new ApiError( IApiErrorCodes.API_VALIDATION_ERROR, "Resource " + id + " referenced to content " + record.getId() + " - '" + record.getDescr() + "'", Response.Status.CONFLICT)); } } if (found) { response.setResult(IResponseBuilder.FAILURE, null); return response; } } this.getResourceManager().deleteResource(resource); response.setResult(IResponseBuilder.SUCCESS, null); } catch (ApiException ae) { response.addErrors(ae.getErrors()); response.setResult(IResponseBuilder.FAILURE, null); } catch (Throwable t) { ApsSystemUtils.logThrowable(t, this, "deleteResource"); throw new ApsSystemException("Error deleting resource", t); } return response; }
private void addValidationError(String message, StringApiResponse response) { ApiError error = new ApiError(IApiErrorCodes.API_VALIDATION_ERROR, message, Response.Status.FORBIDDEN); response.addError(error); }