You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2007/02/24 11:35:04 UTC
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
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<ServletMapping> 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