Package org.glassfish.jersey.server.model

Examples of org.glassfish.jersey.server.model.Resource$Data


        final Resource resourceAB = ResourceTestUtils.getResource(rootResources, "a");
        ResourceTestUtils.containsExactMethods(resourceAB, false, "POST", "GET");
    }

    private List<Resource> createRootResources() {
        final Resource resourceA = Resource.from(ResourceA.class);
        final Resource resourceB = Resource.from(ResourceB.class);
        final ResourceBag.Builder builder = new ResourceBag.Builder();
        builder.registerProgrammaticResource(resourceA);
        builder.registerProgrammaticResource(resourceB);
        builder.registerProgrammaticResource(Resource.from(ResourceC.class));
        final ResourceBag bag = builder.build();
View Full Code Here


    @Test
    public void testChildResourceMerge() {
        final List<Resource> rootResources = createRootResources();
        assertEquals(2, rootResources.size());
        final Resource resourceAB = ResourceTestUtils.getResource(rootResources, "a");
        assertEquals(2, resourceAB.getChildResources().size());
        final Resource child = ResourceTestUtils.getResource(resourceAB.getChildResources(), "child");
        final Resource child2 = ResourceTestUtils.getResource(resourceAB.getChildResources(), "child2");

        ResourceTestUtils.containsExactMethods(child, true, "GET", "POST");
        ResourceTestUtils.containsExactMethods(child2, false, "GET");


        final Resource resourceC = ResourceTestUtils.getResource(rootResources, "different-path");
        final List<Resource> childResourcesC = resourceC.getChildResources();
        assertEquals(2, childResourcesC.size());
        final Resource childC1 = ResourceTestUtils.getResource(childResourcesC, "child");
        ResourceTestUtils.containsExactMethods(childC1, false, "PUT");

        final Resource childC2 = ResourceTestUtils.getResource(childResourcesC, "locator");
        ResourceTestUtils.containsExactMethods(childC2, true);

        child.getResourceMethods().size();
    }
View Full Code Here

    @Test
    public void programmaticTest() {
        final List<Resource> rootResources = getResourcesFromProgrammatic();

        assertEquals(1, rootResources.size());
        final Resource root = ResourceTestUtils.getResource(rootResources, "root");
        final List<Resource> childResources = root.getChildResources();
        assertEquals(2, childResources.size());
        final Resource child = ResourceTestUtils.getResource(childResources, "child");
        ResourceTestUtils.containsExactMethods(child, true, "GET", "POST", "DELETE");
        final Resource child2 = ResourceTestUtils.getResource(childResources, "child2");
        ResourceTestUtils.containsExactMethods(child2, false, "PUT");
    }
View Full Code Here

        testMergingTemplateResources(resources);
    }

    private void testMergingTemplateResources(List<Resource> resources) {
        assertEquals(2, resources.size());
        final Resource resB = ResourceTestUtils.getResource(resources, "root/{b}");
        ResourceTestUtils.containsExactMethods(resB, false, "GET");
        final Resource resA = ResourceTestUtils.getResource(resources, "root/{a}");

        assertTrue(resA.getResourceMethods().isEmpty());
        final List<Resource> childResources = resA.getChildResources();
        assertEquals(2, childResources.size());
        final Resource childQ = ResourceTestUtils.getResource(childResources, "{q}");
        ResourceTestUtils.containsExactMethods(childQ, false, "GET", "PUT");
        final Resource childPost = ResourceTestUtils.getResource(childResources, "{post}");
        ResourceTestUtils.containsExactMethods(childPost, false, "POST");
    }
View Full Code Here

    }

    private List<Resource> createResources(Class<?>... resourceClass) {
        final ResourceBag.Builder builder = new ResourceBag.Builder();
        for (Class<?> clazz : resourceClass) {
            final Resource resource = Resource.from(clazz);
            builder.registerProgrammaticResource(resource);
        }
        final ResourceBag bag = builder.build();
        return bag.getRootResources();
    }
View Full Code Here

        @GET
        @Path("model")
        public String model() {
            final ResourceModel resourceModel = resourceContext.getResourceModel();
            final List<Resource> resources = resourceModel.getRootResources();
            final Resource a = getResource(resources, "a");
            ResourceTestUtils.containsMethod(a, "GET");
            ResourceTestUtils.containsMethod(a, "POST");

            final Resource b = getResource(resources, "b");
            ResourceTestUtils.containsMethod(b, "GET");

            final Resource q = getResource(resources, "b");
            ResourceTestUtils.containsMethod(q, "GET");


            assertEquals(3, resources.size());
View Full Code Here

            }

            // Introspecting classes & instances
            for (final Class<?> c : runtimeConfig.getClasses()) {
                try {
                    final Resource resource = Resource.from(c, disableValidation);
                    if (resource != null) {
                        resourceBagBuilder.registerResource(c, resource);
                    }
                } catch (final IllegalArgumentException ex) {
                    LOGGER.warning(ex.getMessage());
                }
            }

            for (final Object o : runtimeConfig.getSingletons()) {
                try {
                    final Resource resource = Resource.from(o.getClass(), disableValidation);
                    if (resource != null) {
                        resourceBagBuilder.registerResource(o, resource);
                    }
                } catch (final IllegalArgumentException ex) {
                    LOGGER.warning(ex.getMessage());
View Full Code Here

        }
        return newModelBuilder;
    }

    public static void enhanceResource(RuntimeResource resource, ResourceModel.Builder newModelBuilder, List<Method> methods) {
        final Resource firstResource = resource.getResources().get(0);

        if (methodsSuitableForResource(firstResource, methods)) {
            for (Method method : methods) {
                final Set<MediaType> produces = Sets.newHashSet(method.produces);

                for (ResourceMethod resourceMethod : resource.getResourceMethods()) {
                    for (final MediaType produce : method.produces) {
                        if (ModelProcessorUtil.isMethodOverridden(
                                resourceMethod,
                                method.httpMethod,
                                method.consumes.get(0),
                                produce)) {
                            produces.remove(produce);
                        }
                    }
                }

                if (!produces.isEmpty()) {
                    final Resource parentResource = resource.getParentResources().get(0);
                    if (parentResource != null && method.path != null) {
                        continue;
                    }

                    final Resource.Builder resourceBuilder = Resource.builder(firstResource.getPath());
                    final Resource.Builder builder = method.path != null
                            ? resourceBuilder.addChildResource(method.path) : resourceBuilder;
                    final ResourceMethod.Builder methodBuilder = builder
                            .addMethod(method.httpMethod)
                            .consumes(method.consumes)
                            .produces(produces);

                    if (method.inflector != null) {
                        methodBuilder.handledBy(method.inflector);
                    } else {
                        methodBuilder.handledBy(method.inflectorClass);
                    }

                    final Resource newResource = resourceBuilder.build();
                    if (parentResource != null) {
                        final Resource.Builder parentBuilder = Resource.builder(parentResource.getPath());
                        parentBuilder.addChildResource(newResource);
                        newModelBuilder.addResource(parentBuilder.build());
                    } else {
View Full Code Here

        Object subResourceInstance = getResource(routingCtx);
        if (subResourceInstance == null) {
            throw new NotFoundException();
        }

        Resource subResource;
        if (subResourceInstance.getClass().isAssignableFrom(Resource.class)) {
            subResource = (Resource) subResourceInstance;
        } else {
            if (subResourceInstance.getClass().isAssignableFrom(Class.class)) {
                final Class<?> clazz = (Class<?>) subResourceInstance;
                subResourceInstance = Injections.getOrCreate(locator, clazz);
            } else {
                routingCtx.pushMatchedResource(subResourceInstance);
                resourceContext.bindResourceIfSingleton(subResourceInstance);
            }

            Resource.Builder builder = Resource.builder(subResourceInstance.getClass());
            if (builder == null) {
                // resource is empty - do not throw 404, wait if ModelProcessors add any method
                builder = Resource.builder().name(subResourceInstance.getClass().getName());
            }
            subResource = builder.build();
        }

        ResourceModel resourceModel = new ResourceModel.Builder(true).addResource(subResource).build();
        resourceModel = processSubResource(resourceModel);
        if (!disableValidation) {
            validate(resourceModel, ignoreValidationErrors);
        }

        subResource = resourceModel.getResources().get(0);

        for (Class<?> handlerClass : subResource.getHandlerClasses()) {
            resourceContext.bindResource(handlerClass);
        }

        // TODO: implement generated sub-resource methodAcceptorPair caching
        Router subResourceAcceptor = runtimeModelBuilder.buildModel(resourceModel.getRuntimeResourceModel(), true);
View Full Code Here

        final ResourceModel.Builder builder = ModelProcessorUtil.enhanceResourceModel(resourceModel, false, methodList);

        // Do not add WadlResource if already present in the classes (i.e. added during scanning).
        if (!configuration.getClasses().contains(WadlResource.class)) {
            final Resource wadlResource = Resource.builder(WadlResource.class).build();
            builder.addResource(wadlResource);
        }

        return builder.build();
View Full Code Here

TOP

Related Classes of org.glassfish.jersey.server.model.Resource$Data

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.