コード例 #1
0
ファイル: Resources.java プロジェクト: bytesparadise/ride
 private static final MediaTypeCapabilities resolveMediaTypeCapabilities(
     final Resource resource, final ResourceMethod resourceMethod) {
   MediaTypeCapabilities resourceMediaTypeCapabilities = resource.getMediaTypeCapabilities();
   MediaTypeCapabilities methodMediaTypeCapabilities =
       resourceMethod.getUriMapping().getMediaTypeCapabilities();
   MediaTypeCapabilities mediaTypeCapabilities = new MediaTypeCapabilities();
   if (!methodMediaTypeCapabilities.getConsumedMimeTypes().isEmpty()) {
     mediaTypeCapabilities.setConsumedMimeTypes(
         methodMediaTypeCapabilities.getConsumedMimeTypes());
   } else if (!resourceMediaTypeCapabilities.getConsumedMimeTypes().isEmpty()) {
     mediaTypeCapabilities.setConsumedMimeTypes(
         resourceMediaTypeCapabilities.getConsumedMimeTypes());
   } else {
     // leave empty collection
     // mediaTypeCapabilities.setConsumedMimeTypes(Arrays.asList("*/*"));
   }
   if (!methodMediaTypeCapabilities.getProducedMimeTypes().isEmpty()) {
     mediaTypeCapabilities.setProducedMimeTypes(
         methodMediaTypeCapabilities.getProducedMimeTypes());
   } else if (!resourceMediaTypeCapabilities.getProducedMimeTypes().isEmpty()) {
     mediaTypeCapabilities.setProducedMimeTypes(
         resourceMediaTypeCapabilities.getProducedMimeTypes());
   } else {
     // leave empty collection
     // mediaTypeCapabilities.setProducedMimeTypes(Arrays.asList("*/*"));
   }
   return mediaTypeCapabilities;
 }
コード例 #2
0
ファイル: Resources.java プロジェクト: bytesparadise/ride
 /**
  * @param progressMonitor
  * @param uriMappings
  * @param resource
  * @param methodsStack
  * @throws CoreException
  */
 private void resolveResourcesUriMappings(
     final Resource resource,
     final String uriTemplateFragment,
     final Map<ResolvedUriMapping, Stack<ResourceMethod>> uriMappings,
     final Stack<ResourceMethod> methodsStack,
     final IProgressMonitor progressMonitor)
     throws CoreException {
   // resource resourceMethods and subresources resourceMethods are treated the same way
   for (ResourceMethod resourceMethod : resource.getAllMethods()) {
     String uriPathTemplate =
         resolveURIPathTemplate(uriTemplateFragment, resource, resourceMethod);
     MediaTypeCapabilities mediaTypeCapabilities =
         resolveMediaTypeCapabilities(resource, resourceMethod);
     UriMapping resourceUriMapping = resourceMethod.getUriMapping();
     ResolvedUriMapping uriMapping =
         new ResolvedUriMapping(
             resourceUriMapping.getHTTPMethod(),
             uriPathTemplate,
             resourceUriMapping.getQueryParams(),
             mediaTypeCapabilities);
     @SuppressWarnings("unchecked")
     Stack<ResourceMethod> stack = (Stack<ResourceMethod>) methodsStack.clone();
     stack.add(resourceMethod);
     uriMappings.put(uriMapping, stack);
   }
   // TODO : verify support chain of subresource locators
   // TODO : stack resourceMethods and detect+prevent cycles
   for (ResourceMethod resourceMethod : resource.getSubresourceLocators()) {
     String uriPathTemplate =
         resolveURIPathTemplate(uriTemplateFragment, resource, resourceMethod);
     IType returnType = resourceMethod.getReturnType();
     if (returnType == null) {
       continue;
     }
     ITypeHierarchy subresourceTypeHierarchy =
         JdtUtils.resolveTypeHierarchy(returnType, false, progressMonitor);
     for (IType subresourceType : subresourceTypeHierarchy.getSubtypes(returnType)) {
       Resource subresource = getByType(subresourceType);
       if (subresource != null && !subresource.isRootResource()) {
         @SuppressWarnings("unchecked")
         Stack<ResourceMethod> stack = (Stack<ResourceMethod>) methodsStack.clone();
         stack.add(resourceMethod);
         resolveResourcesUriMappings(
             subresource, uriPathTemplate, uriMappings, stack, progressMonitor);
       }
     }
   }
 }
コード例 #3
0
ファイル: Resources.java プロジェクト: bytesparadise/ride
 // FIXME : include method parameters if annotated with @QueryParam
 private static final String resolveURIPathTemplate(
     final String uriTemplateFragment,
     final Resource resource,
     final ResourceMethod resourceMethod) {
   StringBuffer uriTemplateBuffer = new StringBuffer(uriTemplateFragment);
   String resourceUriPathTemplate = resource.getUriPathTemplate();
   String methodUriPathTemplate = resourceMethod.getUriMapping().getUriPathTemplateFragment();
   if (resourceUriPathTemplate != null) {
     uriTemplateBuffer.append("/").append(resourceUriPathTemplate);
   }
   if (methodUriPathTemplate != null) {
     uriTemplateBuffer.append("/").append(methodUriPathTemplate);
   }
   return uriTemplateBuffer
       .toString()
       .replaceAll("/\\*", "/")
       .replaceAll("///", "/")
       .replaceAll("//", "/");
 }