/** Returns file extension based on media type. By default it returns .xml. */
 protected String getFileExtension() {
   _log.debug("Media type requested is {}", mediaType);
   if (MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
     return ".json";
   }
   return ".xml";
 }
  /**
   * Generates configuration file with name taken from variable CONFIG_FILE_NAME Returns the created
   * file name.
   */
  protected String generateConfigFile()
      throws JAXBException, LocalRepositoryException, IOException {
    ZipOutputStream zos = null;
    try {
      PropertyInfoExt properties =
          new PropertyInfoExt(coordinator.getPropertyInfo().getProperties());
      zos = new ZipOutputStream(new FileOutputStream(CONFIG_FILE_PATH));
      ZipEntry ze = new ZipEntry(CONFIG_FILE_NAME + getFileExtension());
      zos.putNextEntry(ze);

      if (MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
        (new ObjectMapper()).writeValue(zos, properties); // gson should not be used any more
      } else {
        JAXBContext jaxbContext = JAXBContext.newInstance(PropertyInfo.class);
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(properties, zos);
      }
      zos.flush();
    } finally {
      if (zos != null) {
        zos.close();
      }
    }

    return CONFIG_FILE_PATH;
  }
Example #3
0
 @Override
 public boolean isWriteable(
     Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
   boolean result = false;
   if (Iterable.class.isAssignableFrom(type)
       && genericType.getClass().isAssignableFrom(ArtifactReadable.class)
       && MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
     result = true;
   }
   return result;
 }
 public Object getTasks(
     Request request, UriInfo uriInfo, Integer firstResult, Integer maxResults) {
   Variant variant = request.selectVariant(VARIANTS);
   if (variant != null) {
     if (MediaType.APPLICATION_JSON_TYPE.equals(variant.getMediaType())) {
       return getJsonTasks(uriInfo, firstResult, maxResults);
     } else if (Hal.APPLICATION_HAL_JSON_TYPE.equals(variant.getMediaType())) {
       return getHalTasks(uriInfo, firstResult, maxResults);
     }
   }
   throw new InvalidRequestException(
       Response.Status.NOT_ACCEPTABLE, "No acceptable content-type found");
 }
 /**
  * Ensures that the response has a "success" status code {@code 2xx}.
  *
  * @throws HttpResponseException if the response does not have a {@code 2xx} status code
  * @throws IOException if the response entity parsing has failed
  */
 public void ensure2xxStatus() throws HttpResponseException, IOException {
   if (response.getStatus() / 100 != 2) {
     final String message;
     if (MediaType.TEXT_PLAIN_TYPE.equals(response.getMediaType())) {
       message = response.readEntity(String.class);
     } else if (MediaType.TEXT_XML_TYPE.equals(response.getMediaType())
         || MediaType.APPLICATION_XML_TYPE.equals(response.getMediaType())
         || MediaType.APPLICATION_JSON_TYPE.equals(response.getMediaType())) {
       message = response.readEntity(AcknowlegementType.class).getMessage();
     } else {
       message = response.toString();
     }
     throw new HttpResponseException(response.getStatus(), message);
   }
 }
  @POST
  @Path("{type:user|group}/{userid}")
  public Response doUpdateAuthorizable(
      @Context HttpServletRequest request,
      @Context HttpServletResponse response,
      @PathParam(value = "type") String authorizableType,
      @PathParam(value = "userid") String authorizableId) {
    try {
      AuthorizableManager authorizableManager = getAuthorizableManager(request, response);
      Authorizable authorizable = authorizableManager.findAuthorizable(authorizableId);
      Response checkType = checkType(authorizable, authorizableType);
      if (checkType != null) {
        return checkType;
      }

      // process the post request.
      AuthorizableHelper authorizableHelper = new AuthorizableHelper(authorizableManager);
      ModificationRequest modificationRequest = new ModificationRequest();
      modificationRequest.processRequest(request);
      authorizableHelper.applyProperties(authorizable, modificationRequest);
      authorizableHelper.save();
      final List<String> feedback = modificationRequest.getFeedback();

      return Response.ok(
              new StreamingOutput() {
                @Override
                public void write(OutputStream output) throws IOException, WebApplicationException {
                  ResponseUtils.writeFeedback(feedback, output);
                }
              })
          .type(MediaType.APPLICATION_JSON_TYPE.toString() + "; charset=utf-8")
          .lastModified(new Date())
          .build();

    } catch (StorageClientException e) {
      return ResponseUtils.getResponse(
          HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (AccessDeniedException e) {
      return ResponseUtils.getResponse(HttpServletResponse.SC_FORBIDDEN, e.getMessage());
    } catch (IOException e) {
      return ResponseUtils.getResponse(
          HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (FileUploadException e) {
      return ResponseUtils.getResponse(
          HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    }
  }
 @Override
 public String marshal(Object obj, MediaType mediaType)
     throws MarshalException, UnsupportedMediaTypeException {
   if (mediaType != null) {
     if (MediaType.APPLICATION_XML_TYPE.isCompatible(mediaType)
         || MediaType.TEXT_XML_TYPE.isCompatible(mediaType)) {
       return marshalToXML(obj);
     } else if (MediaType.APPLICATION_JSON_TYPE.isCompatible(mediaType)) {
       return marshalToJSON(obj);
     }
   }
   // If we get here then we deal with an unknown media type
   throw new UnsupportedMediaTypeException(
       "Unsupported media type: "
           + mediaType
           + ". Cannot marshal the given input to this media type.");
 }
  @GET
  @Path("{type:user|group}/{userid}.{format}")
  public Response getUser(
      @Context HttpServletRequest request,
      @Context HttpServletResponse response,
      @PathParam(value = "type") String authorizableType,
      @PathParam(value = "userid") String authorizableId,
      @PathParam(value = "format") final String outputFormat) {
    try {

      AuthorizableManager authorizableManager = getAuthorizableManager(request, response);
      final Authorizable authorizable = authorizableManager.findAuthorizable(authorizableId);
      Response checkType = checkType(authorizable, authorizableType);
      if (checkType != null) {
        return checkType;
      }
      Date lastModified = new Date();
      Long lm = (Long) authorizable.getProperty(Authorizable.LASTMODIFIED_FIELD);
      if (lm == null) {
        lm = (Long) authorizable.getProperty(Authorizable.CREATED_FIELD);
      }
      if (lm != null) {
        lastModified = new Date(lm);
      }
      return Response.ok(
              new StreamingOutput() {
                @Override
                public void write(OutputStream output) throws IOException, WebApplicationException {
                  ResponseUtils.writeTree(authorizable, outputFormat, output);
                }
              })
          .type(MediaType.APPLICATION_JSON_TYPE.toString() + "; charset=utf-8")
          .lastModified(lastModified)
          .build();

    } catch (StorageClientException e) {
      return ResponseUtils.getResponse(
          HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (AccessDeniedException e) {
      return ResponseUtils.getResponse(HttpServletResponse.SC_FORBIDDEN, e.getMessage());
    }
  }
  /* (non-Javadoc)
   * @see sif3.infra.common.conversion.UnmarshalFactory#unmarschal(java.lang.String, java.lang.Class, javax.ws.rs.core.MediaType)
   */
  @Override
  public Object unmarshal(String payload, Class<?> clazz, MediaType mediaType)
      throws UnmarshalException, UnsupportedMediaTypeException {
    if (mediaType != null) {
      //			if (MediaType.APPLICATION_XML_TYPE.isCompatible(mediaType) ||
      // MediaType.TEXT_XML_TYPE.isCompatible(mediaType)  ||
      //	MediaType.TEXT_PLAIN_TYPE.isCompatible(mediaType))
      if (MediaType.APPLICATION_XML_TYPE.isCompatible(mediaType)
          || MediaType.TEXT_XML_TYPE.isCompatible(mediaType)) {
        return unmarshalFromXML(payload, clazz);
      } else if (MediaType.APPLICATION_JSON_TYPE.isCompatible(mediaType)) {
        return unmarshalFromJSON(payload, clazz);
      }
    }

    // If we get here then we deal with an unknown media type
    throw new UnsupportedMediaTypeException(
        "Unsupported media type: "
            + mediaType
            + ". Cannot unmarshal the given input from this media type.");
  }
 @Override
 public boolean supports(MediaType mediaType) {
   return MediaType.APPLICATION_JSON_TYPE.equals(mediaType);
 }
 @Override
 public boolean isReadable(
     Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
   return MediaType.APPLICATION_JSON_TYPE.getType().equals(mediaType.getType())
       && MediaType.APPLICATION_JSON_TYPE.getSubtype().equals(mediaType.getSubtype());
 }