Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9518ED258 for ; Thu, 8 Nov 2012 03:47:55 +0000 (UTC) Received: (qmail 84210 invoked by uid 500); 8 Nov 2012 03:47:55 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 84049 invoked by uid 500); 8 Nov 2012 03:47:53 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 84021 invoked by uid 99); 8 Nov 2012 03:47:51 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Nov 2012 03:47:51 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Nov 2012 03:47:48 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 327B223888EA; Thu, 8 Nov 2012 03:47:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1406907 - in /cxf/trunk/osgi/karaf/commands/src/main: java/org/apache/cxf/karaf/commands/ java/org/apache/cxf/karaf/commands/internal/ resources/OSGI-INF/blueprint/ Date: Thu, 08 Nov 2012 03:47:26 -0000 To: commits@cxf.apache.org From: ffang@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121108034727.327B223888EA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ffang Date: Thu Nov 8 03:47:26 2012 New Revision: 1406907 URL: http://svn.apache.org/viewvc?rev=1406907&view=rev Log: [CXF-4622]cxf:list-endpoints - Add option to list the full url of the service Modified: cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/CXFController.java cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/ListEndpointsCommand.java cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/internal/CXFControllerImpl.java cxf/trunk/osgi/karaf/commands/src/main/resources/OSGI-INF/blueprint/cxf-karaf-commands.xml Modified: cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/CXFController.java URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/CXFController.java?rev=1406907&r1=1406906&r2=1406907&view=diff ============================================================================== --- cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/CXFController.java (original) +++ cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/CXFController.java Thu Nov 8 03:47:26 2012 @@ -22,6 +22,7 @@ package org.apache.cxf.karaf.commands; import java.util.List; import org.apache.cxf.Bus; +import org.osgi.service.cm.ConfigurationAdmin; /** * @@ -31,5 +32,7 @@ public interface CXFController { List getBusses(); Bus getBus(String name); + + ConfigurationAdmin getConfigAdmin(); } Modified: cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/ListEndpointsCommand.java URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/ListEndpointsCommand.java?rev=1406907&r1=1406906&r2=1406907&view=diff ============================================================================== --- cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/ListEndpointsCommand.java (original) +++ cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/ListEndpointsCommand.java Thu Nov 8 03:47:26 2012 @@ -19,15 +19,22 @@ package org.apache.cxf.karaf.commands; +import java.io.IOException; import java.util.Collections; import java.util.List; import org.apache.cxf.Bus; +import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.endpoint.Server; import org.apache.cxf.endpoint.ServerRegistry; import org.apache.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; +import org.apache.felix.gogo.commands.Option; import org.apache.karaf.shell.console.OsgiCommandSupport; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.ServiceReference; +import org.osgi.service.cm.Configuration; +import org.osgi.service.cm.ConfigurationAdmin; /** * @@ -43,6 +50,10 @@ public class ListEndpointsCommand extend required = false, multiValued = false) String name; + @Option(name = "-f", aliases = {"--fulladdress" }, + description = "Display full address of an endpoint ", required = false, multiValued = false) + boolean fullAddress; + private CXFController cxfController; public void setController(CXFController controller) { @@ -71,10 +82,83 @@ public class ListEndpointsCommand extend String qname = serv.getEndpoint().getEndpointInfo().getName().getLocalPart(); String started = serv.isStarted() ? "Started" : "Stopped"; String address = serv.getEndpoint().getEndpointInfo().getAddress(); + if (fullAddress) { + address = toFullAddress(address); + } String busId = b.getId(); System.out.println(String.format(OUTPUT_FORMAT, qname, started, address, busId)); } } return null; - } + } + + private String toFullAddress(String address) throws IOException, InvalidSyntaxException { + ConfigurationAdmin configAdmin = getConfigurationAdmin(); + if (address.startsWith("/") && configAdmin != null) { + String httpPort = null; + String cxfContext = null; + httpPort = extractConfigProperty(configAdmin, "org.ops4j.pax.web", "org.osgi.service.http.port"); + cxfContext = extractConfigProperty(configAdmin, "org.apache.cxf.osgi", "org.apache.cxf.servlet.context"); + if (StringUtils.isEmpty(cxfContext)) { + cxfContext = getCXFOSGiServletContext(); + } + if (StringUtils.isEmpty(httpPort)) { + httpPort = getHttpOSGiServicePort(); + } + if (!StringUtils.isEmpty(httpPort) && !StringUtils.isEmpty(cxfContext)) { + address = "http://localhost:" + httpPort + cxfContext + address; + } + } + return address; + } + + private String extractConfigProperty(ConfigurationAdmin configAdmin, + String pid, String propertyName) throws IOException, + InvalidSyntaxException { + String ret = null; + Configuration[] configs = configAdmin.listConfigurations("(service.pid=" + pid + ")"); + if (configs != null && configs.length > 0) { + Configuration configuration = configs[0]; + if (configuration != null) { + ret = (String)configuration.getProperties().get(propertyName); + } + } + return ret; + } + + private ConfigurationAdmin getConfigurationAdmin() { + return cxfController.getConfigAdmin(); + } + + private String getCXFOSGiServletContext() throws InvalidSyntaxException { + String ret = null; + String filter = "(&(" + "objectclass=" + "javax.servlet.Servlet" + + ")(servlet-name=cxf-osgi-transport-servlet))"; + + ServiceReference ref = getBundleContext().getServiceReferences(null, filter)[0]; + + if (ref != null) { + ret = (String)ref.getProperty("alias"); + } + + return ret; + + } + + private String getHttpOSGiServicePort() throws InvalidSyntaxException { + String ret = null; + String filter = "(&(" + "objectclass=" + "org.osgi.service.http.HttpService" + + "))"; + + ServiceReference ref = getBundleContext().getServiceReferences(null, filter)[0]; + + if (ref != null) { + ret = (String)ref.getProperty("org.osgi.service.http.port"); + } + + return ret; + + } + + } Modified: cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/internal/CXFControllerImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/internal/CXFControllerImpl.java?rev=1406907&r1=1406906&r2=1406907&view=diff ============================================================================== --- cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/internal/CXFControllerImpl.java (original) +++ cxf/trunk/osgi/karaf/commands/src/main/java/org/apache/cxf/karaf/commands/internal/CXFControllerImpl.java Thu Nov 8 03:47:26 2012 @@ -30,6 +30,7 @@ import org.apache.cxf.common.logging.Log import org.apache.cxf.karaf.commands.CXFController; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; +import org.osgi.service.cm.ConfigurationAdmin; /** @@ -38,6 +39,7 @@ public class CXFControllerImpl implement private static final Logger LOG = LogUtils.getL7dLogger(CXFControllerImpl.class); private BundleContext bundleContext; + private ConfigurationAdmin configAdmin; public void setBundleContext(BundleContext bundleContext) { this.bundleContext = bundleContext; @@ -82,6 +84,14 @@ public class CXFControllerImpl implement return null; } + public ConfigurationAdmin getConfigAdmin() { + return configAdmin; + } + + public void setConfigAdmin(ConfigurationAdmin configAdmin) { + this.configAdmin = configAdmin; + } + } Modified: cxf/trunk/osgi/karaf/commands/src/main/resources/OSGI-INF/blueprint/cxf-karaf-commands.xml URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/karaf/commands/src/main/resources/OSGI-INF/blueprint/cxf-karaf-commands.xml?rev=1406907&r1=1406906&r2=1406907&view=diff ============================================================================== --- cxf/trunk/osgi/karaf/commands/src/main/resources/OSGI-INF/blueprint/cxf-karaf-commands.xml (original) +++ cxf/trunk/osgi/karaf/commands/src/main/resources/OSGI-INF/blueprint/cxf-karaf-commands.xml Thu Nov 8 03:47:26 2012 @@ -40,9 +40,10 @@ - + + - \ No newline at end of file +