use of org.glassfish.jersey.server.model.ResourceMethod in project jersey by jersey.
the class IntrospectionModellerTest method testCreateResource.
@Test
public /**
* Test of createResource method, of class IntrospectionModeller.
*/
void testCreateResource() {
Class<?> resourceClass;
Resource result;
List<ResourceMethod> resourceMethods;
ResourceMethod resourceMethod;
// HelloWorldResource
resourceClass = HelloWorldResource.class;
result = Resource.builder(resourceClass).build();
resourceMethods = result.getResourceMethods();
assertEquals("Unexpected number of resource methods in the resource model.", 2, resourceMethods.size());
resourceMethod = find(resourceMethods, "postA");
assertEquals("Unexpected number of produced media types in the resource method model", 3, resourceMethod.getProducedTypes().size());
assertEquals("Unexpected number of consumed media types in the resource method model", 2, resourceMethod.getConsumedTypes().size());
assertEquals("Unexpected number of handler parameters", 0, resourceMethod.getInvocable().getHandler().getParameters().size());
resourceMethod = find(resourceMethods, "postB");
assertEquals("Unexpected number of inherited produced media types in the resource method model", 2, resourceMethod.getProducedTypes().size());
assertEquals("Unexpected number of inherited consumed media types in the resource method model", 3, resourceMethod.getConsumedTypes().size());
assertEquals("Unexpected number of handler parameters", 0, resourceMethod.getInvocable().getHandler().getParameters().size());
// OtherResource
resourceClass = OtherResource.class;
result = Resource.builder(resourceClass).build();
resourceMethods = result.getResourceMethods();
assertEquals("Unexpected number of resource methods in the resource model.", 2, resourceMethods.size());
resourceMethod = find(resourceMethods, "get");
assertEquals("Unexpected number of produced media types in the resource method model", 0, resourceMethod.getProducedTypes().size());
assertEquals("Unexpected number of consumed media types in the resource method model", 0, resourceMethod.getConsumedTypes().size());
assertEquals("Unexpected number of handler parameters", 5, resourceMethod.getInvocable().getHandler().getParameters().size());
assertSources(resourceMethod.getInvocable().getHandler().getParameters(), Parameter.Source.CONTEXT, Parameter.Source.PATH, Parameter.Source.QUERY, // @Inject on field
Parameter.Source.UNKNOWN, // @Inject on setter
Parameter.Source.UNKNOWN);
resourceMethod = find(resourceMethods, "post");
assertEquals("Unexpected number of inherited produced media types in the resource method model", 0, resourceMethod.getProducedTypes().size());
assertEquals("Unexpected number of inherited consumed media types in the resource method model", 0, resourceMethod.getConsumedTypes().size());
assertEquals("Unexpected number of handler parameters", 5, resourceMethod.getInvocable().getHandler().getParameters().size());
assertSources(resourceMethod.getInvocable().getHandler().getParameters(), Parameter.Source.CONTEXT, Parameter.Source.PATH, Parameter.Source.QUERY, // @Inject on field
Parameter.Source.UNKNOWN, // @Inject on setter
Parameter.Source.UNKNOWN);
}
use of org.glassfish.jersey.server.model.ResourceMethod in project graylog2-server by Graylog2.
the class AuditEventModelProcessor method checkResources.
private void checkResources(List<Resource> resources) {
for (Resource resource : resources) {
for (ResourceMethod method : resource.getResourceMethods()) {
final Method m = method.getInvocable().getDefinitionMethod();
if (m.isAnnotationPresent(POST.class) || m.isAnnotationPresent(PUT.class) || m.isAnnotationPresent(DELETE.class)) {
if (!m.isAnnotationPresent(AuditEvent.class) && !m.isAnnotationPresent(NoAuditEvent.class)) {
LOG.warn("REST endpoint not included in audit trail: {}", String.format(Locale.US, "%6s %s", method.getHttpMethod(), getPathFromResource(resource)));
LOG.debug("Missing @AuditEvent or @NoAuditEvent annotation: {}#{}", m.getDeclaringClass().getCanonicalName(), m.getName());
} else {
if (m.isAnnotationPresent(AuditEvent.class)) {
final AuditEvent annotation = m.getAnnotation(AuditEvent.class);
if (!auditEventTypes.contains(annotation.type())) {
LOG.warn("REST endpoint does not use a registered audit type: {} (type: \"{}\")", String.format(Locale.US, "%6s %s", method.getHttpMethod(), getPathFromResource(resource)), annotation.type());
LOG.debug("Make sure the audit event types are registered in a class that implements PluginAuditEventTypes: {}#{}", m.getDeclaringClass().getCanonicalName(), m.getName());
}
} else if (m.isAnnotationPresent(NoAuditEvent.class)) {
final NoAuditEvent annotation = m.getAnnotation(NoAuditEvent.class);
if (isNullOrEmpty(annotation.value())) {
LOG.warn("REST endpoint uses @NoAuditEvent annotation with an empty value: {}", String.format(Locale.US, "%6s %s", method.getHttpMethod(), getPathFromResource(resource)));
}
}
}
}
}
// Make sure to also check all child resources! Otherwise some resources will not be checked.
checkResources(resource.getChildResources());
}
}
Aggregations