You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/11/19 12:30:40 UTC
svn commit: r596273 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/management/
camel-core/src/main/java/org/apache/camel/model/ camel-core...
Author: jstrachan
Date: Mon Nov 19 03:30:37 2007
New Revision: 596273
URL: http://svn.apache.org/viewvc?rev=596273&view=rev
Log:
patch applied for https://issues.apache.org/activemq/browse/CAMEL-232 with thanks!
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ObjectNameEncoder.java (with props)
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Route.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/CamelNamingStrategy.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationLifecycleStrategy.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedEndpoint.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedRoute.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/FromType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
activemq/camel/trunk/examples/camel-example-spring/src/main/resources/META-INF/spring/camel-context.xml
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Route.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Route.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Route.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Route.java Mon Nov 19 03:30:37 2007
@@ -29,6 +29,9 @@
* @version $Revision$
*/
public class Route<E extends Exchange> {
+ public static final String PARENT_PROPERTY = "parent";
+ public static final String GROUP_PROPERTY = "group";
+
private final Map<String, Object> properties = new HashMap<String, Object>(16);
private Endpoint<E> endpoint;
private List<Service> services = new ArrayList<Service>();
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Mon Nov 19 03:30:37 2007
@@ -450,10 +450,11 @@
protected void startRouteDefinitions(Collection<RouteType> list) throws Exception {
if (list != null) {
+ Collection<Route> routes = new ArrayList<Route>();
for (RouteType route : list) {
- lifecycleStrategy.beforeStartRouteType(this, route);
- route.addRoutes(this);
+ route.addRoutes(this, routes);
}
+ addRoutes(routes);
}
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java Mon Nov 19 03:30:37 2007
@@ -20,7 +20,7 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
-import org.apache.camel.model.RouteType;
+import org.apache.camel.Exchange;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.Route;
import org.apache.camel.Service;
@@ -31,7 +31,7 @@
// do nothing
}
- public void onEndpointAdd(Endpoint endpoint) {
+ public void onEndpointAdd(Endpoint<? extends Exchange> endpoint) {
// do nothing
}
@@ -43,7 +43,7 @@
// do nothing
}
- public void beforeStartRouteType(CamelContext context, RouteType routeType) {
+ public void onRouteContextCreate(RouteContext routeContext) {
// do nothing
}
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteContext.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RouteContext.java Mon Nov 19 03:30:37 2007
@@ -23,6 +23,7 @@
import org.apache.camel.AsyncProcessor;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
import org.apache.camel.NoSuchEndpointException;
import org.apache.camel.Processor;
import org.apache.camel.Route;
@@ -45,7 +46,7 @@
private RouteType route;
private FromType from;
private Collection<Route> routes;
- private Endpoint endpoint;
+ private Endpoint<? extends Exchange> endpoint;
private List<Processor> eventDrivenProcessors = new ArrayList<Processor>();
private Interceptor lastInterceptor;
private CamelContext camelContext;
@@ -65,7 +66,7 @@
route = new RouteType("temporary");
}
- public Endpoint getEndpoint() {
+ public Endpoint<? extends Exchange> getEndpoint() {
if (endpoint == null) {
endpoint = from.resolveEndpoint(this);
}
@@ -91,15 +92,15 @@
return node.createOutputsProcessor(this);
}
- public Endpoint resolveEndpoint(String uri) {
+ public Endpoint<? extends Exchange> resolveEndpoint(String uri) {
return route.resolveEndpoint(uri);
}
/**
* Resolves an endpoint from either a URI or a named reference
*/
- public Endpoint resolveEndpoint(String uri, String ref) {
- Endpoint endpoint = null;
+ public Endpoint<? extends Exchange> resolveEndpoint(String uri, String ref) {
+ Endpoint<? extends Exchange> endpoint = null;
if (uri != null) {
endpoint = resolveEndpoint(uri);
if (endpoint == null) {
@@ -141,8 +142,13 @@
final AsyncProcessor asyncProcessor = AsyncProcessorTypeConverter.convert(processor);
Processor unitOfWorkProcessor = new UnitOfWorkProcessor(asyncProcessor);
- routes.add(new EventDrivenConsumerRoute(getEndpoint(), unitOfWorkProcessor));
- //routes.add(new EventDrivenConsumerRoute(getEndpoint(), processor));
+ // TODO: hz: move all this into the lifecycle strategy! (used by jmx naming strategy)
+ Route edcr = new EventDrivenConsumerRoute(getEndpoint(), unitOfWorkProcessor);
+ edcr.getProperties().put(Route.PARENT_PROPERTY, Integer.toHexString(route.hashCode()));
+ if (route.getGroup() != null) {
+ edcr.getProperties().put(Route.GROUP_PROPERTY, route.getGroup());
+ }
+ routes.add(edcr);
}
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/CamelNamingStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/CamelNamingStrategy.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/CamelNamingStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/CamelNamingStrategy.java Mon Nov 19 03:30:37 2007
@@ -25,21 +25,29 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Route;
+import org.apache.camel.impl.RouteContext;
+import org.apache.camel.model.RouteType;
public class CamelNamingStrategy {
public static final String VALUE_UNKNOWN = "unknown";
public static final String VALUE_ROUTE = "route";
+ public static final String VALUE_STATS = "Stats";
+ public static final String VALUE_DEFAULT_BUILDER = "default";
public static final String KEY_NAME = "name";
public static final String KEY_TYPE = "type";
public static final String KEY_CONTEXT = "context";
public static final String KEY_GROUP = "group";
public static final String KEY_COMPONENT = "component";
+ public static final String KEY_BUILDER = "builder";
public static final String KEY_ROUTE_TYPE = "routeType";
public static final String KEY_ROUTE = "route";
public static final String GROUP_ENDPOINTS = "endpoints";
public static final String GROUP_SERVICES = "services";
- public static final String GROUP_ROUTE_BUILDER = "routeBuilder";
+ public static final String GROUP_ROUTES = "routes";
public static final String GROUP_ROUTE_TYPE = "routeType";
+
protected String domainName;
protected String hostName = "locahost";
@@ -86,7 +94,7 @@
* @throws MalformedObjectNameException
*/
public ObjectName getObjectName(ManagedEndpoint mbean) throws MalformedObjectNameException {
- Endpoint ep = mbean.getEndpoint();
+ Endpoint<? extends Exchange> ep = mbean.getEndpoint();
StringBuffer buffer = new StringBuffer();
buffer.append(domainName + ":");
@@ -126,19 +134,23 @@
* @throws MalformedObjectNameException
*/
public ObjectName getObjectName(ManagedRoute mbean) throws MalformedObjectNameException {
- Endpoint ep = mbean.getRoute().getEndpoint();
+ Route<? extends Exchange> route = mbean.getRoute();
+ Endpoint<? extends Exchange> ep = route.getEndpoint();
+
String ctxid = ep != null ? getContextId(ep.getContext()) : VALUE_UNKNOWN;
String cid = getComponentId(ep);
String id = VALUE_UNKNOWN.equals(cid) ? getEndpointId(ep) :
- "[" + cid + "]" + getEndpointId(ep);
-
+ "[" + cid + "]" + getEndpointId(ep);
+ String group = (String)route.getProperties().get(Route.GROUP_PROPERTY);
+
StringBuffer buffer = new StringBuffer();
buffer.append(domainName + ":");
buffer.append(KEY_CONTEXT + "=" + ctxid + ",");
- buffer.append(KEY_GROUP + "=" + GROUP_ROUTE_BUILDER + ",");
- buffer.append(KEY_ROUTE_TYPE + "=" + GROUP_ROUTE_TYPE + ",");
+ buffer.append(KEY_GROUP + "=" + GROUP_ROUTES + ",");
+ buffer.append(KEY_BUILDER + "=" + (group != null ? group : VALUE_DEFAULT_BUILDER) + ",");
+ buffer.append(KEY_ROUTE_TYPE + "=" + route.getProperties().get(Route.PARENT_PROPERTY) + ",");
buffer.append(KEY_ROUTE + "=" + id + ",");
- buffer.append(KEY_NAME + "=" + VALUE_ROUTE);
+ buffer.append(KEY_TYPE + "=" + VALUE_ROUTE);
return createObjectName(buffer);
}
@@ -146,18 +158,31 @@
* Implements the naming strategy for a {@see PerformanceCounter}.
* The convention used for a {@see ManagedEndpoint} ObjectName is
* "<domain>:context=<context>,type=Routes,endpoint=[urlPrefix]localPart".
- *
* @param mbean
+ * @param routeContext
+ *
* @return generated ObjectName
* @throws MalformedObjectNameException
*/
- public ObjectName getObjectName(CamelContext context, PerformanceCounter mbean) throws MalformedObjectNameException {
+ public ObjectName getObjectName(CamelContext context, PerformanceCounter mbean, RouteContext routeContext)
+ throws MalformedObjectNameException {
+
+ RouteType route = routeContext.getRoute();
+ Endpoint<? extends Exchange> ep = routeContext.getEndpoint();
+ String ctxid = ep != null ? getContextId(ep.getContext()) : VALUE_UNKNOWN;
+ String cid = getComponentId(ep);
+ String id = VALUE_UNKNOWN.equals(cid) ? getEndpointId(ep) :
+ "[" + cid + "]" + getEndpointId(ep);
+ String group = route.getGroup();
+
StringBuffer buffer = new StringBuffer();
buffer.append(domainName + ":");
- buffer.append(KEY_CONTEXT + "=" + getContextId(context) + ",");
- buffer.append(KEY_GROUP + "=" + GROUP_ENDPOINTS + ",");
- buffer.append(KEY_ROUTE + "=" + "Route.Counter" + ",");
- buffer.append(KEY_NAME + "=" + "Stats");
+ buffer.append(KEY_CONTEXT + "=" + ctxid + ",");
+ buffer.append(KEY_GROUP + "=" + GROUP_ROUTES + ",");
+ buffer.append(KEY_BUILDER + "=" + (group != null ? group : VALUE_DEFAULT_BUILDER) + ",");
+ buffer.append(KEY_ROUTE_TYPE + "=" + route.hashCode() + ",");
+ buffer.append(KEY_ROUTE + "=" + id + ",");
+ buffer.append(KEY_TYPE + "=" + VALUE_STATS);
return createObjectName(buffer);
}
@@ -182,22 +207,20 @@
return hostName + "/" + id;
}
- protected String getComponentId(Endpoint ep) {
+ protected String getComponentId(Endpoint<? extends Exchange> ep) {
String uri = ep.getEndpointUri();
int pos = uri.indexOf(':');
return (pos == -1) ? VALUE_UNKNOWN : uri.substring(0, pos);
}
- protected String getEndpointId(Endpoint ep) {
+ protected String getEndpointId(Endpoint<? extends Exchange> ep) {
String uri = ep.getEndpointUri();
int pos = uri.indexOf(':');
String id = (pos == -1) ? uri : uri.substring(pos + 1);
if (!ep.isSingleton()) {
id += "." + Integer.toString(ep.hashCode());
}
- id = id.replace("=", "_eq_");
- id = id.replace(",", "_cm_");
- return id;
+ return ObjectNameEncoder.encode(id);
}
/**
@@ -206,7 +229,6 @@
protected ObjectName createObjectName(StringBuffer buffer) throws MalformedObjectNameException {
String text = buffer.toString();
try {
- text = text.replace("?", "_qe_");
return new ObjectName(text);
}
catch (MalformedObjectNameException e) {
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationLifecycleStrategy.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationLifecycleStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationLifecycleStrategy.java Mon Nov 19 03:30:37 2007
@@ -23,13 +23,14 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
import org.apache.camel.spi.InstrumentationAgent;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.Route;
import org.apache.camel.Service;
import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.RouteContext;
import org.apache.camel.impl.ServiceSupport;
-import org.apache.camel.model.RouteType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -47,17 +48,16 @@
public void onContextCreate(CamelContext context) {
if (context instanceof DefaultCamelContext) {
try {
- DefaultCamelContext dc = (DefaultCamelContext)context;
- ManagedService ms = new ManagedService(dc);
+ DefaultCamelContext dc = (DefaultCamelContext)context;
+ ManagedService ms = new ManagedService(dc);
agent.register(ms, getNamingStrategy().getObjectName(dc));
- }
- catch(JMException e) {
- LOG.warn("Could not register CamelContext MBean", e);
- }
- }
- }
-
- public void onEndpointAdd(Endpoint endpoint) {
+ } catch (JMException e) {
+ LOG.warn("Could not register CamelContext MBean", e);
+ }
+ }
+ }
+
+ public void onEndpointAdd(Endpoint<? extends Exchange> endpoint) {
try {
ManagedEndpoint me = new ManagedEndpoint(endpoint);
agent.register(me, getNamingStrategy().getObjectName(me));
@@ -91,27 +91,28 @@
}
}
- public void beforeStartRouteType(CamelContext context, RouteType routeType) {
- PerformanceCounter mc = new PerformanceCounter();
- routeType.intercept(new InstrumentationProcessor(mc));
-
- /*
- * Merge performance counter with the MBean it represents instead
- * of registering a new MBean
- try {
- agent.register(mc, getNamingStrategy().getObjectName(context, mc));
- }
- catch(JMException e) {
- LOG.warn("Could not register Counter MBean", e);
- }
- */
- }
+ public void onRouteContextCreate(RouteContext routeContext) {
+ PerformanceCounter mc = new PerformanceCounter();
+ routeContext.getRoute().intercept(new InstrumentationProcessor(mc));
+
+ /*
+ * Merge performance counter with the MBean it represents instead
+ * of registering a new MBean
+ */
+ try {
+ agent.register(mc, getNamingStrategy().getObjectName(
+ routeContext.getCamelContext(), mc, routeContext));
+ }
+ catch(JMException e) {
+ LOG.warn("Could not register Counter MBean", e);
+ }
+ }
public CamelNamingStrategy getNamingStrategy() {
return namingStrategy;
}
- public void setNamingStrategy(CamelNamingStrategy namingStrategy) {
- this.namingStrategy = namingStrategy;
+ public void setNamingStrategy(CamelNamingStrategy strategy) {
+ this.namingStrategy = strategy;
}
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedEndpoint.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedEndpoint.java Mon Nov 19 03:30:37 2007
@@ -18,6 +18,7 @@
package org.apache.camel.management;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;
@@ -26,13 +27,13 @@
currencyTimeLimit=15)
public class ManagedEndpoint {
- private Endpoint endpoint;
+ private Endpoint<? extends Exchange> endpoint;
- public ManagedEndpoint(Endpoint endpoint) {
+ public ManagedEndpoint(Endpoint<? extends Exchange> endpoint) {
this.endpoint = endpoint;
}
- public Endpoint getEndpoint() {
+ public Endpoint<? extends Exchange> getEndpoint() {
return endpoint;
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedRoute.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedRoute.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedRoute.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedRoute.java Mon Nov 19 03:30:37 2007
@@ -20,6 +20,7 @@
import java.io.IOException;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
import org.apache.camel.Route;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
@@ -28,24 +29,24 @@
@ManagedResource(
description="Managed Route",
currencyTimeLimit=15)
-public class ManagedRoute{
+public class ManagedRoute extends PerformanceCounter {
public static final String VALUE_UNKNOWN = "Unknown";
- private Route route;
+ private Route<? extends Exchange> route;
private String description;
- ManagedRoute(Route route) {
+ ManagedRoute(Route<? extends Exchange> route) {
this.route = route;
this.description = route.toString();
}
- public Route getRoute() {
+ public Route<? extends Exchange> getRoute() {
return route;
}
@ManagedAttribute(description = "Route Endpoint Uri")
public String getEndpointUri() {
- Endpoint ep = route.getEndpoint();
+ Endpoint<? extends Exchange> ep = route.getEndpoint();
return ep != null ? ep.getEndpointUri() : VALUE_UNKNOWN;
}
Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ObjectNameEncoder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ObjectNameEncoder.java?rev=596273&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ObjectNameEncoder.java (added)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ObjectNameEncoder.java Mon Nov 19 03:30:37 2007
@@ -0,0 +1,63 @@
+/**
+ *
+ * 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.management;
+
+/**
+ * Utility class providing RFC 1738 style encoding for ObjectName values.
+ * (see section 2.2).
+ *
+ * Key Property Values in ObjectName(s) may not contain one of :",=*?
+ * (see jmx_1.2_spec, Chapter 6)
+ *
+ * @author hzbarcea
+ *
+ */
+public class ObjectNameEncoder {
+
+ private ObjectNameEncoder() {
+ // Complete (utility class should not have instances)
+ }
+
+ public static String encode(String on) {
+ return encode(on, false);
+ }
+
+ public static String encode(String on, boolean ignoreWildcards) {
+ on = on.replace("%", "%25"); // must be first
+ on = on.replace(":", "%3a");
+ on = on.replace("\"", "%22");
+ on = on.replace(",", "%2c");
+ on = on.replace("=", "%3d");
+ if (!ignoreWildcards) {
+ on = on.replace("*", "%2a");
+ on = on.replace("?", "%3f");
+ }
+ return on;
+ }
+
+ public static String decode(String on) {
+ on = on.replace("%25", "%");
+ on = on.replace("%3a", ":");
+ on = on.replace("%22", "\"");
+ on = on.replace("%2c", ",");
+ on = on.replace("%3d", "=");
+ on = on.replace("%2a", "*");
+ on = on.replace("%3f", "?");
+ return on;
+ }
+}
Propchange: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ObjectNameEncoder.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/FromType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/FromType.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/FromType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/FromType.java Mon Nov 19 03:30:37 2007
@@ -17,6 +17,7 @@
package org.apache.camel.model;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
import org.apache.camel.impl.RouteContext;
import org.apache.camel.util.ObjectHelper;
@@ -39,7 +40,7 @@
@XmlAttribute
private String ref;
@XmlTransient
- private Endpoint endpoint;
+ private Endpoint<? extends Exchange> endpoint;
public FromType() {
}
@@ -48,7 +49,7 @@
setUri(uri);
}
- public FromType(Endpoint endpoint) {
+ public FromType(Endpoint<? extends Exchange> endpoint) {
this.endpoint = endpoint;
}
@@ -61,7 +62,7 @@
return description(getUri(), getRef(), getEndpoint());
}
- public Endpoint resolveEndpoint(RouteContext context) {
+ public Endpoint<? extends Exchange> resolveEndpoint(RouteContext context) {
if (endpoint == null) {
endpoint = context.resolveEndpoint(getUri(), getRef());
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java Mon Nov 19 03:30:37 2007
@@ -27,6 +27,7 @@
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAccessType;
+import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Processor;
@@ -180,9 +181,9 @@
}
}
- private Route<Exchange> createBatchResequencerRoute(RouteContext routeContext) throws Exception {
+ private Route<? extends Exchange> createBatchResequencerRoute(RouteContext routeContext) throws Exception {
final Resequencer resequencer = createBatchResequencer(routeContext, batchConfig);
- return new Route<Exchange>(routeContext.getEndpoint(), resequencer) {
+ return new Route(routeContext.getEndpoint(), resequencer) {
@Override
public String toString() {
return "BatchResequencerRoute[" + getEndpoint() + " -> " + resequencer.getProcessor() + "]";
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteType.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteType.java Mon Nov 19 03:30:37 2007
@@ -64,15 +64,6 @@
return "Route[ " + inputs + " -> " + outputs + "]";
}
- // TODO should we zap this and replace with next method?
- public void addRoutes(CamelContext context) throws Exception {
- Collection<Route> routes = new ArrayList<Route>();
-
- addRoutes(context, routes);
-
- context.addRoutes(routes);
- }
-
public void addRoutes(CamelContext context, Collection<Route> routes) throws Exception {
setCamelContext(context);
@@ -176,7 +167,10 @@
protected void addRoutes(Collection<Route> routes, FromType fromType) throws Exception {
RouteContext routeContext = new RouteContext(this, fromType, routes);
- Endpoint endpoint = routeContext.getEndpoint();
+ routeContext.getEndpoint(); // force endpoint resolution
+ if (camelContext != null) {
+ camelContext.getLifecycleStrategy().onRouteContextCreate(routeContext);
+ }
List<ProcessorType<?>> list = new ArrayList<ProcessorType<?>>(outputs);
for (ProcessorType output : list) {
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java Mon Nov 19 03:30:37 2007
@@ -64,12 +64,6 @@
return "Routes: " + routes;
}
- public void populateRoutes(List<Route> answer) throws Exception {
- for (RouteType route : routes) {
- route.addRoutes(camelContext, answer);
- }
- }
-
// Properties
//-----------------------------------------------------------------------
public List<RouteType> getRoutes() {
@@ -208,4 +202,4 @@
}
return route;
}
-}
\ No newline at end of file
+}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java Mon Nov 19 03:30:37 2007
@@ -20,9 +20,10 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
import org.apache.camel.Route;
import org.apache.camel.Service;
-import org.apache.camel.model.RouteType;
+import org.apache.camel.impl.RouteContext;
public interface LifecycleStrategy {
@@ -34,7 +35,7 @@
/**
* Notification on adding an {@see Endpoint}.
*/
- void onEndpointAdd(Endpoint endpoint);
+ void onEndpointAdd(Endpoint<? extends Exchange> endpoint);
/**
* Notification on adding a {@see Service}.
@@ -47,8 +48,8 @@
void onRoutesAdd(Collection<Route> routes);
/**
- * Notification on adding {@see Route}(s).
- * @param context TODO
+ * Notification on adding {@see RouteContext}(s).
+ * @param routeContext
*/
- void beforeStartRouteType(CamelContext context, RouteType routeType);
+ void onRouteContextCreate(RouteContext routeContext);
}
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java Mon Nov 19 03:30:37 2007
@@ -59,11 +59,8 @@
resultEndpoint.assertIsSatisfied();
- /*
- * Fixme: after stats are merged with the mbean they represent
- *
MBeanServer mbs = iAgent.getMBeanServer();
- ObjectName name = new ObjectName(domainName + ":name=Stats,*");
+ ObjectName name = new ObjectName(domainName + ":type=Stats,*");
Set s = mbs.queryNames(name, null);
assertEquals("Found mbeans: " + s, 1, s.size());
@@ -95,7 +92,6 @@
"'<domain>:name=Stats,*' key must be of type PerformanceCounter.class", valueofMeanProcessingTime);
assertTrue(valueofMeanProcessingTime >= valueofMinProcessingTime &&
valueofMeanProcessingTime <= valueofMaxProcessingTime);
- */
}
protected void enableJmx() {
Modified: activemq/camel/trunk/examples/camel-example-spring/src/main/resources/META-INF/spring/camel-context.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/examples/camel-example-spring/src/main/resources/META-INF/spring/camel-context.xml?rev=596273&r1=596272&r2=596273&view=diff
==============================================================================
--- activemq/camel/trunk/examples/camel-example-spring/src/main/resources/META-INF/spring/camel-context.xml (original)
+++ activemq/camel/trunk/examples/camel-example-spring/src/main/resources/META-INF/spring/camel-context.xml Mon Nov 19 03:30:37 2007
@@ -29,7 +29,7 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
- <camelContext useJmx="true" xmlns="http://activemq.apache.org/camel/schema/spring">
+ <camelContext id="camel" useJmx="true" mbeanServer="mbeanServer" xmlns="http://activemq.apache.org/camel/schema/spring">
<package>org.apache.camel.example.spring</package>
</camelContext>
@@ -40,6 +40,30 @@
<property name="brokerURL" value="vm://localhost?broker.persistent=false&broker.useJmx=false"/>
</bean>
</property>
+ </bean>
+
+ <!-- Use JMX -->
+ <bean id="agent" class="org.apache.camel.spring.SpringInstrumentationAgent">
+ <property name="camelContext" ref="camel"/>
+ <property name="MBeanServer" ref="mbeanServer"/>
+ </bean>
+ <!--
+ this bean needs to be eagerly pre-instantiated in order for the exporting to occur;
+ this means that it must not be marked as lazily initialized
+ -->
+ <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
+ <property name="defaultDomain" value="org.apache.camel.test"/>
+ </bean>
+ <bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
+ <property name="port" value="1099"/>
+ </bean>
+ <bean id="serverConnector"
+ class="org.springframework.jmx.support.ConnectorServerFactoryBean" depends-on="registry">
+ <property name="objectName" value="connector:name=rmi"/>
+ <property name="serviceUrl"
+ value="service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"/>
+ <property name="threaded" value="true"/>
+ <property name="daemon" value="true"/>
</bean>
</beans>