コード例 #1
0
 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;
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 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;
 }
コード例 #4
0
 private void addValidationError(String message, StringApiResponse response) {
   ApiError error =
       new ApiError(IApiErrorCodes.API_VALIDATION_ERROR, message, Response.Status.FORBIDDEN);
   response.addError(error);
 }