Return-Path: Delivered-To: apmail-ws-tuscany-commits-archive@locus.apache.org Received: (qmail 25727 invoked from network); 24 Feb 2007 10:35:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 24 Feb 2007 10:35:26 -0000 Received: (qmail 51695 invoked by uid 500); 24 Feb 2007 10:35:34 -0000 Delivered-To: apmail-ws-tuscany-commits-archive@ws.apache.org Received: (qmail 51670 invoked by uid 500); 24 Feb 2007 10:35:34 -0000 Mailing-List: contact tuscany-commits-help@ws.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: tuscany-dev@ws.apache.org Delivered-To: mailing list tuscany-commits@ws.apache.org Received: (qmail 51658 invoked by uid 99); 24 Feb 2007 10:35:34 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 24 Feb 2007 02:35:34 -0800 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 24 Feb 2007 02:35:25 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id F20F11A981A; Sat, 24 Feb 2007 02:35:04 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r511246 - in /incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src: main/java/org/apache/tuscany/service/jetty/JettyServiceImpl.java test/java/org/apache/tuscany/service/jetty/JettyServiceImplTestCase.java Date: Sat, 24 Feb 2007 10:35:04 -0000 To: tuscany-commits@ws.apache.org From: antelder@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070224103504.F20F11A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: antelder Date: Sat Feb 24 02:35:04 2007 New Revision: 511246 URL: http://svn.apache.org/viewvc?view=rev&rev=511246 Log: Implement isMappingRegistered and unregisterMapping methods, required by the ajax bindings Modified: incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/main/java/org/apache/tuscany/service/jetty/JettyServiceImpl.java incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/test/java/org/apache/tuscany/service/jetty/JettyServiceImplTestCase.java Modified: incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/main/java/org/apache/tuscany/service/jetty/JettyServiceImpl.java URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/main/java/org/apache/tuscany/service/jetty/JettyServiceImpl.java?view=diff&rev=511246&r1=511245&r2=511246 ============================================================================== --- incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/main/java/org/apache/tuscany/service/jetty/JettyServiceImpl.java (original) +++ incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/main/java/org/apache/tuscany/service/jetty/JettyServiceImpl.java Sat Feb 24 02:35:04 2007 @@ -20,9 +20,13 @@ import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import javax.resource.spi.work.Work; import javax.servlet.Servlet; +import javax.servlet.ServletException; import org.apache.tuscany.api.annotation.Monitor; import org.apache.tuscany.spi.annotation.Autowire; @@ -51,8 +55,9 @@ /** * Implements an HTTP transport service using Jetty. - * - * @version $$Rev$$ $$Date$$ + * + * @version $$Rev$$ $$Date: 2007-02-21 13:28:30 +0000 (Wed, 21 Feb + * 2007) $$ */ @Scope("COMPOSITE") @Service(ServletHost.class) @@ -86,25 +91,26 @@ static { // hack to replace the static Jetty logger System.setProperty("org.mortbay.log.class", JettyLogger.class.getName()); - + } - - public JettyServiceImpl(@Monitor TransportMonitor monitor, - @Autowire WorkScheduler scheduler) { + + public JettyServiceImpl(@Monitor + TransportMonitor monitor, @Autowire + WorkScheduler scheduler) { this.monitor = monitor; this.scheduler = scheduler; - // Jetty uses a static logger, so jam in the monitor into a static reference + // Jetty uses a static logger, so jam in the monitor into a static + // reference Logger logger = Log.getLogger(null); if (logger instanceof JettyLogger) { - JettyLogger jettyLogger = (JettyLogger) logger; + JettyLogger jettyLogger = (JettyLogger)logger; jettyLogger.setMonitor(this.monitor); if (debug) { jettyLogger.setDebugEnabled(true); } } - + httpPort = Integer.getInteger("Tuscany.JettyService.httpPort", httpPort); - } @@ -155,20 +161,20 @@ @Destroy public void destroy() throws Exception { - if (state == STARTED) { - state = STOPPING; - synchronized (joinLock) { - joinLock.notifyAll(); - } - server.stop(); - state = STOPPED; - //monitor.shutdown(); - } + if (state == STARTED) { + state = STOPPING; + synchronized (joinLock) { + joinLock.notifyAll(); + } + server.stop(); + state = STOPPED; + // monitor.shutdown(); + } } public void registerMapping(String path, Servlet servlet) { - if (state == STARTING) { - + if (state == STARTING) { + try { server = new Server(); if (scheduler == null) { @@ -187,15 +193,15 @@ sslConnector.setKeystore(keystore); sslConnector.setPassword(certPassword); sslConnector.setKeyPassword(keyPassword); - server.setConnectors(new Connector[]{httpConnector, sslConnector}); + server.setConnectors(new Connector[] {httpConnector, sslConnector}); } else { SelectChannelConnector selectConnector = new SelectChannelConnector(); selectConnector.setPort(httpPort); - server.setConnectors(new Connector[]{selectConnector}); + server.setConnectors(new Connector[] {selectConnector}); } } else { connector.setPort(httpPort); - server.setConnectors(new Connector[]{connector}); + server.setConnectors(new Connector[] {connector}); } ContextHandler contextHandler = new ContextHandler(); @@ -210,15 +216,15 @@ server.setStopAtShutdown(true); server.setSendServerVersion(sendServerVersion); - //monitor.started(); + // monitor.started(); server.start(); state = STARTED; } catch (Exception e) { state = ERROR; throw new SCAObjectStartException(e); } - } - + } + ServletHolder holder = new ServletHolder(servlet); servletHandler.addServlet(holder); ServletMapping mapping = new ServletMapping(); @@ -227,13 +233,34 @@ servletHandler.addServletMapping(mapping); } - public Servlet unregisterMapping(String string) { -// throw new UnsupportedOperationException(); - return null; + public Servlet unregisterMapping(String path) { + Servlet removedServlet = null; + List mappings = new ArrayList(Arrays.asList(servletHandler.getServletMappings())); + for (ServletMapping mapping : mappings) { + if (Arrays.asList(mapping.getPathSpecs()).contains(path)) { + try { + removedServlet = servletHandler.getServlet(mapping.getServletName()).getServlet(); + } catch (ServletException e) { + throw new IllegalStateException(e); + } + mappings.remove(mapping); + break; + } + } + if (removedServlet != null) { + servletHandler.setServletMappings((ServletMapping[])mappings.toArray(new ServletMapping[mappings.size()])); + } + return removedServlet; } public boolean isMappingRegistered(String path) { - throw new UnsupportedOperationException(); + ServletMapping[] mappings = servletHandler.getServletMappings(); + for (ServletMapping mapping : mappings) { + if (Arrays.asList(mapping.getPathSpecs()).contains(path)) { + return true; + } + } + return false; } public void registerComposite(File compositeLocation) throws IOException { @@ -249,7 +276,8 @@ } /** - * An integration wrapper to enable use of a {@link WorkScheduler} with Jetty + * An integration wrapper to enable use of a {@link WorkScheduler} with + * Jetty */ private class TuscanyThreadPool implements ThreadPool { Modified: incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/test/java/org/apache/tuscany/service/jetty/JettyServiceImplTestCase.java URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/test/java/org/apache/tuscany/service/jetty/JettyServiceImplTestCase.java?view=diff&rev=511246&r1=511245&r2=511246 ============================================================================== --- incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/test/java/org/apache/tuscany/service/jetty/JettyServiceImplTestCase.java (original) +++ incubator/tuscany/branches/sca-java-integration/sca/services/transports/http.jetty/src/test/java/org/apache/tuscany/service/jetty/JettyServiceImplTestCase.java Sat Feb 24 02:35:04 2007 @@ -81,6 +81,29 @@ assertTrue(servlet.invoked); } + public void testIsMappingRegistered() throws Exception { + JettyServiceImpl service = new JettyServiceImpl(monitor, null); + service.setHttpPort(HTTP_PORT); + service.init(); + TestServlet servlet = new TestServlet(); + service.registerMapping("/foo", servlet); + assertTrue(service.isMappingRegistered("/foo")); + assertFalse(service.isMappingRegistered("/bar")); + service.destroy(); + } + + public void testUnregisterMapping() throws Exception { + JettyServiceImpl service = new JettyServiceImpl(monitor, null); + service.setHttpPort(HTTP_PORT); + service.init(); + TestServlet servlet = new TestServlet(); + service.registerMapping("/foo", servlet); + assertTrue(service.isMappingRegistered("/foo")); + service.unregisterMapping("/foo"); + assertFalse(service.isMappingRegistered("/foo")); + service.destroy(); + } + public void testRequestSession() throws Exception { JettyServiceImpl service = new JettyServiceImpl(monitor, scheduler); service.setDebug(true); --------------------------------------------------------------------- To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org For additional commands, e-mail: tuscany-commits-help@ws.apache.org