package com.webcohesion.enunciate.modules.jaxrs.api.impl; import com.webcohesion.enunciate.api.ApiRegistrationContext; import com.webcohesion.enunciate.api.InterfaceDescriptionFile; import com.webcohesion.enunciate.api.resources.*; import com.webcohesion.enunciate.modules.jaxrs.EnunciateJaxrsContext; import java.util.List; /** * @author Ryan Heaton */ public class JaxrsResourceApi implements ResourceApi { private final EnunciateJaxrsContext context; private final ApiRegistrationContext registrationContext; public JaxrsResourceApi(EnunciateJaxrsContext context, ApiRegistrationContext registrationContext) { this.context = context; this.registrationContext = registrationContext; } @Override public boolean isIncludeResourceGroupName() { return this.context.isIncludeResourceGroupName(); } @Override public InterfaceDescriptionFile getWadlFile() { return this.context.getWadlFile(); } @Override public List<ResourceGroup> getResourceGroups() { return this.context.getResourceGroups(registrationContext); } @Override public Method findMethodFor(String classname, String methodname) { if (methodname.isEmpty() || classname.isEmpty()) { return null; } for (ResourceGroup resourceGroup : getResourceGroups()) { for (Resource resource : resourceGroup.getResources()) { for (Method method : resource.getMethods()) { if (method instanceof MethodImpl) { if (methodname.startsWith(((MethodImpl) method).getResourceMethod().getSimpleName().toString()) && ((MethodImpl)method).getResourceMethod().getParent().getQualifiedName().contentEquals(classname)) { return method; } } } } } return null; } @Override public ResourceGroup findResourceGroupFor(String classname) { if (classname.isEmpty()) { return null; } for (ResourceGroup resourceGroup : getResourceGroups()) { for (Resource resource : resourceGroup.getResources()) { for (Method method : resource.getMethods()) { if (method instanceof MethodImpl) { if (((MethodImpl)method).getResourceMethod().getParent().getQualifiedName().contentEquals(classname)) { return resourceGroup; } } } } } return null; } }