Author: davsclaus
Date: Sat Apr 2 10:31:37 2011
New Revision: 1087994
URL: http://svn.apache.org/viewvc?rev=1087994&view=rev
Log:
CAMEL-3804: Added support for custom SecurityPolicy and Extension to
camel-cometd. Fixed CS. Thanks to Rob van de Meulengraaf for the patch.
Added:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java
(with props)
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java
(with props)
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
(with props)
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/io/
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/io/iframe.js
(with props)
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/io/script.js
(with props)
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/ack.js
(with props)
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/reload.js
(with props)
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/org/
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/org/cometd.js
(with props)
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConverters.java
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducerConsumer.java
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveMain.java
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerTest.java
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslCometdProducerConsumerTest.java
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/dojo.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/dojo.js.uncompressed.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/dojo.xd.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojo/dojo.xd.js.uncompressed.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.js.uncompressed.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.xd.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.xd.js.uncompressed.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timestamp.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timesync.js
camel/trunk/components/camel-cometd/src/test/resources/webapp/index.html
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
(original)
+++
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
Sat Apr 2 10:31:37 2011
@@ -17,11 +17,15 @@
package org.apache.camel.component.cometd;
import java.net.URL;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.impl.DefaultComponent;
+import org.cometd.Extension;
+import org.cometd.SecurityPolicy;
import org.cometd.server.AbstractBayeux;
import org.cometd.server.continuation.ContinuationCometdServlet;
import org.eclipse.jetty.server.Connector;
@@ -37,8 +41,6 @@ import org.slf4j.LoggerFactory;
/**
* Component for Jetty Cometd
- *
- * @version
*/
public class CometdComponent extends DefaultComponent {
private static final transient Logger LOG =
LoggerFactory.getLogger(CometdComponent.class);
@@ -50,6 +52,8 @@ public class CometdComponent extends Def
private String sslPassword;
private String sslKeystore;
private SslSocketConnector sslSocketConnector;
+ private SecurityPolicy securityPolicy;
+ private List<Extension> extensions;
class ConnectorRef {
Connector connector;
@@ -57,7 +61,7 @@ public class CometdComponent extends Def
int refCount;
public ConnectorRef(Connector connector,
- ContinuationCometdServlet servlet) {
+ ContinuationCometdServlet servlet) {
this.connector = connector;
this.servlet = servlet;
increment();
@@ -102,7 +106,7 @@ public class CometdComponent extends Def
connector.setHost(endpoint.getUri().getHost());
if ("localhost".equalsIgnoreCase(endpoint.getUri().getHost()))
{
LOG.warn("You use localhost interface! It means that no
external connections will be available."
- + " Don't you want to use 0.0.0.0 instead (all
network interfaces)?");
+ + " Don't you want to use 0.0.0.0 instead (all
network interfaces)?");
}
getServer().addConnector(connector);
@@ -114,8 +118,18 @@ public class CometdComponent extends Def
} else {
connectorRef.increment();
}
+
AbstractBayeux bayeux = connectorRef.servlet.getBayeux();
bayeux.setJSONCommented(endpoint.isJsonCommented());
+
+ if (securityPolicy != null) {
+ bayeux.setSecurityPolicy(securityPolicy);
+ }
+ if (extensions != null) {
+ for (Extension extension : extensions) {
+ bayeux.addExtension(extension);
+ }
+ }
prodcon.setBayeux(bayeux);
}
}
@@ -145,26 +159,26 @@ public class CometdComponent extends Def
ContinuationCometdServlet servlet = new ContinuationCometdServlet();
ServletContextHandler context = new ServletContextHandler(server, "/",
ServletContextHandler.NO_SECURITY | ServletContextHandler.NO_SESSIONS);
- context.setConnectorNames(new String[] {connector.getName()});
+ context.setConnectorNames(new String[]{connector.getName()});
ServletHolder holder = new ServletHolder();
holder.setServlet(servlet);
-
+
// Use baseResource to pass as a parameter the url
// pointing to by example classpath:webapp
if (endpoint.getBaseResource() != null) {
String[] resources = endpoint.getBaseResource().split(":");
LOG.debug(">>> Protocol found :" + resources[0] + ", and resource
: " + resources[1]);
-
+
if (resources[0].equals("file")) {
context.setBaseResource(Resource.newResource(resources[1]));
} else if (resources[0].equals("classpath")) {
// Create a URL handler using classpath protocol
- URL url =
this.getCamelContext().getClassResolver().loadResourceAsURL(resources[1]);
+ URL url =
this.getCamelContext().getClassResolver().loadResourceAsURL(resources[1]);
context.setBaseResource(Resource.newResource(url));
- }
+ }
}
-
+
context.addServlet(holder, "/cometd/*");
context.addServlet("org.eclipse.jetty.servlet.DefaultServlet", "/");
@@ -227,6 +241,29 @@ public class CometdComponent extends Def
this.sslKeystore = sslKeystore;
}
+ public void setSecurityPolicy(SecurityPolicy securityPolicy) {
+ this.securityPolicy = securityPolicy;
+ }
+
+ public SecurityPolicy getSecurityPolicy() {
+ return securityPolicy;
+ }
+
+ public List<Extension> getExtensions() {
+ return extensions;
+ }
+
+ public void setExtensions(List<Extension> extensions) {
+ this.extensions = extensions;
+ }
+
+ public void addExtension(Extension extension) {
+ if (extensions == null) {
+ extensions = new ArrayList<Extension>();
+ }
+ extensions.add(extension);
+ }
+
protected Server createServer() throws Exception {
Server server = new Server();
ContextHandlerCollection collection = new ContextHandlerCollection();
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
(original)
+++
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java
Sat Apr 2 10:31:37 2011
@@ -28,8 +28,6 @@ import org.cometd.server.BayeuxService;
/**
* A Consumer for receiving messages using Cometd and Bayeux protocol.
- *
- * @version
*/
public class CometdConsumer extends DefaultConsumer implements
CometdProducerConsumer {
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConverters.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConverters.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConverters.java
(original)
+++
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConverters.java
Sat Apr 2 10:31:37 2011
@@ -20,12 +20,10 @@ import org.apache.camel.Converter;
/**
* Cometd specific converters.
- *
- * @version
*/
@Converter
public final class CometdConverters {
-
+
private CometdConverters() {
//Utility Class
}
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
(original)
+++
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdEndpoint.java
Sat Apr 2 10:31:37 2011
@@ -28,11 +28,9 @@ import org.apache.camel.util.ObjectHelpe
/**
* Endpoint for Camel Cometd.
- *
- * @version
*/
public class CometdEndpoint extends DefaultEndpoint {
-
+
private String baseResource;
private int timeout = 240000;
private int interval;
@@ -42,7 +40,7 @@ public class CometdEndpoint extends Defa
private int logLevel = 1;
private URI uri;
private CometdComponent component;
-
+
public CometdEndpoint(CometdComponent component, String uri, String
remaining, Map<String, Object> parameters) {
super(uri, component);
this.component = component;
@@ -61,18 +59,18 @@ public class CometdEndpoint extends Defa
public Consumer createConsumer(Processor processor) throws Exception {
ObjectHelper.notNull(component, "component");
- CometdConsumer consumer = new CometdConsumer(this, processor);
+ CometdConsumer consumer = new CometdConsumer(this, processor);
return consumer;
}
public void connect(CometdProducerConsumer prodcons) throws Exception {
component.connect(prodcons);
}
-
+
public void disconnect(CometdProducerConsumer prodcons) throws Exception {
component.disconnect(prodcons);
}
-
+
public CometdComponent getComponent() {
return component;
}
@@ -80,7 +78,7 @@ public class CometdEndpoint extends Defa
public boolean isSingleton() {
return false;
}
-
+
public String getPath() {
return uri.getPath();
}
@@ -111,7 +109,7 @@ public class CometdEndpoint extends Defa
public void setBaseResource(String baseResource) {
this.baseResource = baseResource;
}
-
+
public int getTimeout() {
return timeout;
}
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
(original)
+++
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducer.java
Sat Apr 2 10:31:37 2011
@@ -28,12 +28,10 @@ import org.slf4j.LoggerFactory;
/**
* A Producer to send messages using Cometd and Bayeux protocol.
- *
- * @version
*/
public class CometdProducer extends DefaultProducer implements
CometdProducerConsumer {
private static final transient Logger LOG =
LoggerFactory.getLogger(CometdProducer.class);
-
+
private AbstractBayeux bayeux;
private final CometdEndpoint endpoint;
@@ -70,7 +68,7 @@ public class CometdProducer extends Defa
public CometdEndpoint getEndpoint() {
return endpoint;
}
-
+
public AbstractBayeux getBayeux() {
return bayeux;
}
Modified:
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducerConsumer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducerConsumer.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducerConsumer.java
(original)
+++
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdProducerConsumer.java
Sat Apr 2 10:31:37 2011
@@ -30,5 +30,5 @@ public interface CometdProducerConsumer
* Sets the bayeux to use.
*/
void setBayeux(AbstractBayeux bayeux);
-
+
}
\ No newline at end of file
Added:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java?rev=1087994&view=auto
==============================================================================
---
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java
(added)
+++
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java
Sat Apr 2 10:31:37 2011
@@ -0,0 +1,176 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cometd;
+
+import java.io.File;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.cometd.Bayeux;
+import org.cometd.Client;
+import org.cometd.Extension;
+import org.cometd.Message;
+import org.cometd.RemoveListener;
+import org.cometd.server.AbstractBayeux;
+
+public class CometdProducerConsumerInteractiveAuthenticatedMain {
+
+ private static final String URI =
"cometd://127.0.0.1:9091/service/test?baseResource=file:./src/test/resources/webapp&"
+ +
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
+
+ private static final String URIS =
"cometds://127.0.0.1:9443/service/test?baseResource=file:./src/test/resources/webapp&"
+ +
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
+
+ private CamelContext context;
+
+ private String pwd = "changeit";
+
+ public static void main(String[] args) throws Exception {
+ CometdProducerConsumerInteractiveAuthenticatedMain me = new
CometdProducerConsumerInteractiveAuthenticatedMain();
+ me.testCometdProducerConsumerInteractive();
+ }
+
+ public void testCometdProducerConsumerInteractive() throws Exception {
+ context = new DefaultCamelContext();
+ context.addRoutes(createRouteBuilder());
+ context.start();
+ }
+
+ private RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ CometdComponent component = (CometdComponent)
context.getComponent("cometds");
+ component.setSslPassword(pwd);
+ component.setSslKeyPassword(pwd);
+
+ CometdComponent component2 = (CometdComponent)
context.getComponent("cometd");
+ BayeuxAuthenticator bayeuxAuthenticator = new
BayeuxAuthenticator();
+ component2.setSecurityPolicy(bayeuxAuthenticator);
+ component2.addExtension(bayeuxAuthenticator);
+
+ File file = new File("./src/test/resources/jsse/localhost.ks");
+ URI keyStoreUrl = file.toURI();
+ component.setSslKeystore(keyStoreUrl.getPath());
+
+ from("stream:in").to(URI).to(URIS);
+ }
+ };
+ }
+
+ /**
+ * Custom SecurityPolicy, see
http://cometd.org/documentation/howtos/authentication for details
+ */
+ public static final class BayeuxAuthenticator extends
AbstractBayeux.DefaultPolicy implements Extension, RemoveListener {
+
+ private String user = "changeit";
+ private String pwd = "changeit";
+
+ @Override
+ public boolean canHandshake(Message message) {
+ Map<String, Object> ext = message.getExt(false);
+ if (ext == null) {
+ return false;
+ }
+
+ // Be sure the client does not cheat us
+ ext.remove("authenticationData");
+
+ @SuppressWarnings("unchecked")
+ Map<String, Object> authentication = (Map<String, Object>)
ext.get("authentication");
+ if (authentication == null) {
+ return false;
+ }
+
+ Object authenticationData = verify(authentication);
+ if (authenticationData == null) {
+ return false;
+ }
+
+ // Store the authentication result in the message for later
processing
+ ext.put("authenticationData", authenticationData);
+
+ return true;
+ }
+
+ private Object verify(Map<String, Object> authentication) {
+ if (!user.equals(authentication.get("user"))) {
+ return null;
+ }
+ if (!pwd.equals(authentication.get("credentials"))) {
+ return null;
+ }
+ return "OK";
+ }
+
+ @Override
+ public Message sendMeta(Client remote, Message responseMessage) {
+ if (Bayeux.META_HANDSHAKE.equals(responseMessage.getChannel())) {
+ Message requestMessage = responseMessage.getAssociated();
+
+ Map<String, Object> requestExt = requestMessage.getExt(false);
+ if (requestExt != null && requestExt.get("authenticationData")
!= null) {
+ Object authenticationData =
requestExt.get("authenticationData");
+ // Authentication successful
+
+ // Link authentication data to the remote client
+
+ // Be notified when the remote client disappears
+ remote.addListener(this);
+ } else {
+ // Authentication failed
+
+ // Add extra fields to the response
+ Map<String, Object> responseExt =
responseMessage.getExt(true);
+ Map<String, Object> authentication = new HashMap<String,
Object>();
+ responseExt.put("authentication", authentication);
+ authentication.put("failed", true);
+
+ // Tell the client to stop any further attempt to handshake
+ Map<String, Object> advice = new HashMap<String, Object>();
+ advice.put(Bayeux.RECONNECT_FIELD, Bayeux.NONE_RESPONSE);
+ responseMessage.put(Bayeux.ADVICE_FIELD, advice);
+ }
+ }
+ return responseMessage;
+ }
+
+ @Override
+ public void removed(String clientId, boolean timeout) {
+ // Remove authentication data
+ }
+
+ @Override
+ public Message rcv(Client client, Message message) {
+ return message;
+ }
+
+ @Override
+ public Message rcvMeta(Client client, Message message) {
+ return message;
+ }
+
+ @Override
+ public Message send(Client client, Message message) {
+ return message;
+ }
+ }
+
+}
Propchange:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveAuthenticatedMain.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java?rev=1087994&view=auto
==============================================================================
---
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java
(added)
+++
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java
Sat Apr 2 10:31:37 2011
@@ -0,0 +1,108 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cometd;
+
+import java.io.File;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.HashSet;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.cometd.Client;
+import org.cometd.Extension;
+import org.cometd.Message;
+import org.cometd.RemoveListener;
+
+public class CometdProducerConsumerInteractiveExtensionMain {
+
+ private static final String URI =
"cometd://127.0.0.1:9091/service/test?baseResource=file:./src/test/resources/webapp&"
+ +
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
+
+ private static final String URIS =
"cometds://127.0.0.1:9443/service/test?baseResource=file:./src/test/resources/webapp&"
+ +
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
+
+ private CamelContext context;
+
+ private String pwd = "changeit";
+
+ public static void main(String[] args) throws Exception {
+ CometdProducerConsumerInteractiveExtensionMain me = new
CometdProducerConsumerInteractiveExtensionMain();
+ me.testCometdProducerConsumerInteractive();
+ }
+
+ public void testCometdProducerConsumerInteractive() throws Exception {
+ context = new DefaultCamelContext();
+ context.addRoutes(createRouteBuilder());
+ context.start();
+ }
+
+ private RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ CometdComponent component = (CometdComponent)
context.getComponent("cometds");
+ component.setSslPassword(pwd);
+ component.setSslKeyPassword(pwd);
+
+ CometdComponent component2 = (CometdComponent)
context.getComponent("cometd");
+ Censor bayeuxAuthenticator = new Censor();
+ component2.addExtension(bayeuxAuthenticator);
+
+ File file = new File("./src/test/resources/jsse/localhost.ks");
+ URI keyStoreUrl = file.toURI();
+ component.setSslKeystore(keyStoreUrl.getPath());
+
+ from("stream:in").to(URI).to(URIS);
+ }
+ };
+ }
+
+ public static final class Censor implements Extension, RemoveListener {
+
+ private HashSet<String> forbidden = new
HashSet<String>(Arrays.asList("one", "two"));
+
+ @Override
+ public void removed(String clientId, boolean timeout) {
+ // called on remove of client
+ }
+
+ @Override
+ public Message rcv(Client from, Message message) {
+ return message;
+ }
+
+ @Override
+ public Message rcvMeta(Client from, Message message) {
+ return message;
+ }
+
+ @Override
+ public Message send(Client from, Message message) {
+ Object data = message.getData();
+ if (forbidden.contains(data)) {
+ message.put("data", "***");
+ }
+ return message;
+ }
+
+ @Override
+ public Message sendMeta(Client from, Message message) {
+ return message;
+ }
+ }
+}
Propchange:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveExtensionMain.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveMain.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveMain.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveMain.java
(original)
+++
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerInteractiveMain.java
Sat Apr 2 10:31:37 2011
@@ -12,7 +12,8 @@
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
- * limitations under the License.
+ * limitations under the License. hello
+ *
*/
package org.apache.camel.component.cometd;
@@ -29,12 +30,12 @@ public class CometdProducerConsumerInter
+
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
private static final String URIS =
"cometds://127.0.0.1:9443/service/test?baseResource=file:./src/test/resources/webapp&"
- +
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
+ +
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
private CamelContext context;
private String pwd = "changeit";
-
+
public static void main(String[] args) throws Exception {
CometdProducerConsumerInteractiveMain me = new
CometdProducerConsumerInteractiveMain();
me.testCometdProducerConsumerInteractive();
@@ -52,11 +53,10 @@ public class CometdProducerConsumerInter
CometdComponent component = (CometdComponent)
context.getComponent("cometds");
component.setSslPassword(pwd);
component.setSslKeyPassword(pwd);
- URI keyStoreUrl = null;
File file = new File("./src/test/resources/jsse/localhost.ks");
- keyStoreUrl = file.toURI();
+ URI keyStoreUrl = file.toURI();
component.setSslKeystore(keyStoreUrl.getPath());
-
+
from("stream:in").to(URI).to(URIS);
}
};
Modified:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerTest.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerTest.java
(original)
+++
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdProducerConsumerTest.java
Sat Apr 2 10:31:37 2011
@@ -68,21 +68,24 @@ public class CometdProducerConsumerTest
private String name;
private String surname;
-
+
Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
-
+
public String getName() {
return name;
}
+
public String getSurname() {
return surname;
}
+
public void setName(String name) {
this.name = name;
}
+
public void setSurname(String surname) {
this.surname = surname;
}
Modified:
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslCometdProducerConsumerTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslCometdProducerConsumerTest.java?rev=1087994&r1=1087993&r2=1087994&view=diff
==============================================================================
---
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslCometdProducerConsumerTest.java
(original)
+++
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslCometdProducerConsumerTest.java
Sat Apr 2 10:31:37 2011
@@ -35,7 +35,7 @@ public class SslCometdProducerConsumerTe
+
"timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2";
protected String pwd = "changeit";
-
+
@Test
public void testProducer() throws Exception {
Person person = new Person("David", "Greco");
@@ -72,26 +72,29 @@ public class SslCometdProducerConsumerTe
}
};
}
-
+
public static class Person {
private String name;
private String surname;
-
+
Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
-
+
public String getName() {
return name;
}
+
public String getSurname() {
return surname;
}
+
public void setName(String name) {
this.name = name;
}
+
public void setSurname(String surname) {
this.surname = surname;
}
Added:
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html?rev=1087994&view=auto
==============================================================================
---
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
(added)
+++
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
Sat Apr 2 10:31:37 2011
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+
+<head>
+<title>My Simple Ajax Example</title>
+
+<script type="text/javascript" src="dojo/dojo/dojo.js"></script>
+<script type="text/javascript">
+
+ dojo.require("dojox.cometd");
+
+ function setupComet() {
+ dojox.cometd.addListener('/meta/handshake', function(message) {
+ var auth = message.ext && message.ext.authentication;
+ if (auth && auth.failed === true) {
+ // Authentication failed, tell the user
+ window.alert('Authentication failed!');
+ }
+ });
+
+ dojox.cometd.init('/cometd', {
+ ext : {
+ authentication : {
+ user : 'changeit',
+ // change credentials to make init
work: correct credentials are 'changeit'
+ credentials : 'wrong'
+ }
+ }
+ });
+
+ dojox.cometd.subscribe("/service/test", callback);
+ }
+
+ dojo.addOnLoad(setupComet);
+ dojo.addOnUnload(dojox.cometd, "disconnect");
+
+ function callback(msg) {
+ dojo.byId("MSG").innerHTML += msg.data + "\n";
+ }
+</script>
+
+</head>
+<body>
+<h1>CAMEL AUTHENTICATED TEST PAGE</h1>
+<pre id="MSG" />
+</body>
+</html>
Propchange:
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange:
camel/trunk/components/camel-cometd/src/test/resources/webapp/authenticated.html
------------------------------------------------------------------------------
svn:mime-type = text/html