Author: rmannibucau Date: Sun Jan 6 21:04:42 2013 New Revision: 1429597 URL: http://svn.apache.org/viewvc?rev=1429597&view=rev Log: better rest logging
Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java?rev=1429597&r1=1429596&r2=1429597&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java (original) +++ openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java Sun Jan 6 21:04:42 2013 @@ -75,6 +75,6 @@ public class CxfRSService extends RESTSe @Override protected RsHttpListener createHttpListener() { - return new CxfRsHttpListener(httpTransportFactory); + return new CxfRsHttpListener(httpTransportFactory, getWildcard()); } } Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1429597&r1=1429596&r2=1429597&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original) +++ openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Sun Jan 6 21:04:42 2013 @@ -18,8 +18,12 @@ package org.apache.openejb.server.cxf.rs import org.apache.cxf.endpoint.Server; import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; +import org.apache.cxf.jaxrs.JAXRSServiceImpl; import org.apache.cxf.jaxrs.lifecycle.ResourceProvider; import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider; +import org.apache.cxf.jaxrs.model.ClassResourceInfo; +import org.apache.cxf.jaxrs.model.MethodDispatcher; +import org.apache.cxf.jaxrs.model.OperationResourceInfo; import org.apache.cxf.jaxrs.provider.JAXBElementProvider; import org.apache.cxf.jaxrs.provider.json.JSONProvider; import org.apache.cxf.service.invoker.Invoker; @@ -67,13 +71,16 @@ public class CxfRsHttpListener implement public static final String PROVIDERS_KEY = CXF_JAXRS_PREFIX + "providers"; private static final String STATIC_SUB_RESOURCE_RESOLUTION_KEY = "staticSubresourceResolution"; - private HTTPTransportFactory transportFactory; + private final HTTPTransportFactory transportFactory; + private final String wildcard; private AbstractHTTPDestination destination; private Server server; private String context = ""; - public CxfRsHttpListener(HTTPTransportFactory httpTransportFactory) { + public CxfRsHttpListener(final HTTPTransportFactory httpTransportFactory, final String star) { transportFactory = httpTransportFactory; + wildcard = star; + } @Override @@ -250,6 +257,40 @@ public class CxfRsHttpListener implement this.context = "/" + webContext; } destination = (AbstractHTTPDestination) server.getDestination(); + + final JAXRSServiceImpl service = (JAXRSServiceImpl) factory.getServiceFactory().getService(); + final List<ClassResourceInfo> resources = service.getClassResourceInfos(); + for (final ClassResourceInfo info : resources) { + if (info.getResourceClass() == null) { // possible? + continue; + } + + final String address = singleSlash(prefix.substring(0, prefix.length() - wildcard.length()), info.getURITemplate().getValue()); + + String clazz = info.getResourceClass().getName(); + if (restEjbs.containsKey(clazz)) { + LOGGER.info("REST EJB[" + clazz + "] -> " + address); + } else { + LOGGER.info("REST Pojo[" + clazz + "] -> " + address); + } + + clazz = info.getResourceClass().getSimpleName(); // the qualified name is already printed just make it clearer + final MethodDispatcher md = info.getMethodDispatcher(); + for (OperationResourceInfo ori : md.getOperationResourceInfos()) { + LOGGER.info(" -> Method[" + clazz + "#" + ori.getMethodToInvoke().getName() + "]" + + " -> " + ori.getHttpMethod() + " " + singleSlash(address, ori.getURITemplate().getValue())); + } + } + } + + private static String singleSlash(final String address, final String value) { + if (address.endsWith("/") && value.startsWith("/")) { + return address + value.substring(1); + } + if (!address.endsWith("/") && !value.startsWith("/")) { + return address + '/' + value; + } + return address + value; } private JAXRSServerFactoryBean newFactory(String prefix) { Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1429597&r1=1429596&r2=1429597&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original) +++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Sun Jan 6 21:04:42 2013 @@ -386,11 +386,7 @@ public abstract class RESTService implem classLoader, injections, context, owbCtx, // injection/webapp context new ServiceConfiguration(configuration, appInfo.services)); // deployment config - if (!application.getClass().equals(InternalApplication.class)) { - LOGGER.info("REST Application: " + address.complete + " -> " + application.getClass().getName()); - } else { - LOGGER.info("REST Application: " + address.complete + " -> " + contextRoot); - } + LOGGER.info("REST Application: " + address.complete + " -> " + application.getClass().getName()); } private static String appPrefix(final WebAppInfo info, final Class<?> appClazz) { @@ -892,4 +888,8 @@ public abstract class RESTService implem public List<DeployedService> getServices() { return services; } + + public String getWildcard() { + return wildcard; + } }