private void checkForNonPublicMethodIssues() { final MethodList allDeclaredMethods = new MethodList(getAllDeclaredMethods(handlerClass)); // non-public resource methods for (AnnotatedMethod m : allDeclaredMethods .withMetaAnnotation(HttpMethod.class) .withoutAnnotation(Path.class) .isNotPublic()) { Errors.warning( handlerClass, LocalizationMessages.NON_PUB_RES_METHOD(m.getMethod().toGenericString())); } // non-public subres methods for (AnnotatedMethod m : allDeclaredMethods .withMetaAnnotation(HttpMethod.class) .withAnnotation(Path.class) .isNotPublic()) { Errors.warning( handlerClass, LocalizationMessages.NON_PUB_SUB_RES_METHOD(m.getMethod().toGenericString())); } // non-public subres locators for (AnnotatedMethod m : allDeclaredMethods .withoutMetaAnnotation(HttpMethod.class) .withAnnotation(Path.class) .isNotPublic()) { Errors.warning( handlerClass, LocalizationMessages.NON_PUB_SUB_RES_LOC(m.getMethod().toGenericString())); } }
private void validate(ResourceModel resourceModel) { final ComponentModelValidator validator = new ComponentModelValidator(locator); validator.validate(resourceModel); if (Errors.fatalIssuesFound()) { throw new ModelValidationException(ModelErrors.getErrorsAsResourceModelIssues()); } }
/** * Create a new resource model builder for the introspected class. * * <p>The model returned is filled with the introspected data. * * @return new resource model builder for the introspected class. */ public Resource.Builder createResourceBuilder() { return Errors.processWithException( new Producer<Resource.Builder>() { @Override public Resource.Builder call() { return doCreateResourceBuilder(); } }); }
/** * Create a new Jersey server-side application handler configured by a {@link Application JAX-RS * Application (sub-)class}. * * @param jaxrsApplicationClass JAX-RS {@code Application} (sub-)class that will be instantiated * and used to configure the new Jersey application handler. */ public ApplicationHandler(Class<? extends Application> jaxrsApplicationClass) { this.locator = Injections.createLocator(new ServerBinder(), new ApplicationBinder()); this.application = createApplication(jaxrsApplicationClass); this.runtimeConfig = ResourceConfig.createRuntimeConfig(application); Errors.processWithException( new Runnable() { @Override public void run() { initialize(); } }); }
@Override public void visitInvocable(final Invocable invocable) { // TODO: check invocable. Class resClass = invocable.getHandler().getHandlerClass(); if (resClass != null && !checkedClasses.contains(resClass)) { checkedClasses.add(resClass); final boolean provider = Providers.isProvider(resClass); int counter = 0; for (Annotation annotation : resClass.getAnnotations()) { if (SCOPE_ANNOTATIONS.contains(annotation.annotationType())) { counter++; } } if (counter == 0 && provider) { Errors.warning( resClass, LocalizationMessages.RESOURCE_IMPLEMENTS_PROVIDER( resClass, Providers.getProviderContracts(resClass))); } else if (counter > 1) { Errors.fatal(resClass, LocalizationMessages.RESOURCE_MULTIPLE_SCOPE_ANNOTATIONS(resClass)); } } }
/** * Create a new Jersey server-side application handler configured by an instance of a {@link * Application JAX-RS Application sub-class}. * * @param application an instance of a JAX-RS {@code Application} (sub-)class that will be used to * configure the new Jersey application handler. */ public ApplicationHandler(Application application) { this.locator = Injections.createLocator(new ServerBinder(), new ApplicationBinder()); this.application = application; if (application instanceof ResourceConfig) { final ResourceConfig rc = (ResourceConfig) application; if (rc.getApplicationClass() != null) { rc.setApplication(createApplication(rc.getApplicationClass())); } } this.runtimeConfig = ResourceConfig.createRuntimeConfig(application); Errors.processWithException( new Runnable() { @Override public void run() { initialize(); } }); }