public static List<ServiceDocumentCollectionData> buildServiceDocumentCollectionList(UriInfo uriInfo) { ResourceRegistry resourceRegistry = RuntimeContextTLS.getRuntimeContext().getAttribute(ResourceRegistry.class); List<ServiceDocumentCollectionData> collections = new ArrayList<ServiceDocumentCollectionData>(); for (ResourceRecord record : resourceRegistry.getRecords()) { ClassMetadata metadata = record.getMetadata(); // Check if the resource is a collection resource if (metadata.getWorkspaceName() != null) { // Get Categories that are supported by this collection resource List<Categories> collectionCategories = getCollectionCategories(record, resourceRegistry, uriInfo); UriTemplateProcessor template = record.getTemplateProcessor(); Set<MediaType> consumes = getCollectionConsumes(metadata); Set<MediaType> produces = getCollectionProduces(metadata); ServiceDocumentCollectionData sd = new ServiceDocumentCollectionData(metadata.getWorkspaceName(), metadata .getCollectionTitle(), template.toString(), consumes, collectionCategories, produces); collections.add(sd); } } if (collections != null) { // Fix order to have stable service document Collections.sort(collections, COLLECTION_COMPARATOR); } return collections; }
private Resource buildResource(ResourceRecord record) { Resource newResource = resourcesObjectFactory.createResource(); // Add dispatched URIs UriTemplateProcessor uriTemplate = record.getTemplateProcessor(); newResource.setUri(SLASH + uriTemplate.getTemplate()); // Add Collection/Workspace data newResource.setWorkspace(record.getMetadata().getWorkspaceName()); newResource.setCollection(record.getMetadata().getCollectionTitle()); // Add supported HTTP methods List<MethodMetadata> methodRecords = new LinkedList<MethodMetadata>(); methodRecords.addAll(record.getMetadata().getResourceMethods()); org.apache.wink.common.internal.model.admin.Methods methods = resourcesObjectFactory.createMethods(); addResourceMethods(methodRecords, methods); newResource.setMethods(methods); return newResource; }