Author: davsclaus
Date: Sat Jul 12 01:42:42 2008
New Revision: 676133
URL: http://svn.apache.org/viewvc?rev=676133&view=rev
Log:
CAMEL-707: Fixed so nodeid is always given. Remved instance counter as its not
needed anymore, now that nodeid is always created.
Modified:
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/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
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=676133&r1=676132&r2=676133&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
Sat Jul 12 01:42:42 2008
@@ -29,6 +29,9 @@
import org.apache.camel.model.ProcessorType;
import org.apache.camel.spi.RouteContext;
+/**
+ * Naming strategy used when registering MBeans.
+ */
public class CamelNamingStrategy {
public static final String VALUE_UNKNOWN = "unknown";
public static final String KEY_NAME = "name";
@@ -139,24 +142,22 @@
/**
* Implements the naming strategy for a [EMAIL PROTECTED] ProcessorType}.
* The convention used for a [EMAIL PROTECTED] ProcessorType} ObjectName
is:
- *
<tt><domain>:context=<context-name>,route=<route-name>,type=processor,name=<processor-name>,nodeid=<node-id>,instance=<instance-id></tt>
+ *
<tt><domain>:context=<context-name>,route=<route-name>,type=processor,name=<processor-name>,nodeid=<node-id></tt>
*/
- public ObjectName getObjectName(RouteContext routeContext,
- ProcessorType processor, Integer instanceCount) throws
MalformedObjectNameException {
+ public ObjectName getObjectName(RouteContext routeContext, ProcessorType
processor)
+ throws MalformedObjectNameException {
Endpoint<? extends Exchange> ep = routeContext.getEndpoint();
String ctxid = ep != null ? getContextId(ep.getCamelContext()) :
VALUE_UNKNOWN;
String cid = getComponentId(ep);
String id = VALUE_UNKNOWN.equals(cid) ? getEndpointId(ep) : "[" + cid
+ "]" + getEndpointId(ep);
+ String nodeId = processor.idOrCreate();
StringBuffer buffer = new StringBuffer();
buffer.append(domainName).append(":");
buffer.append(KEY_CONTEXT + "=").append(ctxid).append(",");
buffer.append(KEY_ROUTE + "=").append(id).append(",");
buffer.append(KEY_TYPE + "=" + TYPE_PROCESSOR + ",");
- buffer.append(KEY_NODE_ID + "=" + processor.getId() + ",");
- if (instanceCount != null) {
- buffer.append(KEY_INSTANCE + "=" + instanceCount + ",");
- }
+ buffer.append(KEY_NODE_ID + "=").append(id).append(",");
buffer.append(KEY_NAME +
"=").append(ObjectName.quote(processor.toString()));
return createObjectName(buffer);
}
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=676133&r1=676132&r2=676133&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
Sat Jul 12 01:42:42 2008
@@ -170,46 +170,25 @@
// by InstrumentationInterceptStrategy.
RouteType route = routeContext.getRoute();
- // build a local map for handlng multiple instances of a processor
- Map<ObjectName, Integer> existingNames = new HashMap<ObjectName,
Integer>();
- Map<ProcessorType, ObjectName> nameMap = new HashMap<ProcessorType,
ObjectName>();
-
for (ProcessorType processor : route.getOutputs()) {
ObjectName name = null;
try {
- name = getNamingStrategy().getObjectName(routeContext,
processor, null);
+ // get the mbean name
+ name = getNamingStrategy().getObjectName(routeContext,
processor);
+
+ // register mbean wrapped in the performance counter mbean
+ PerformanceCounter pc = new PerformanceCounter();
+ agent.register(pc, name);
+
+ // add to map now that it has ben registered
+ counterMap.put(processor, pc);
} catch (MalformedObjectNameException e) {
- LOG.warn("Could not register MBean: " + name, e);
- }
-
- if (name != null) {
- Integer instanceCount = existingNames.get(name);
- if (instanceCount != null) {
- instanceCount++;
- } else {
- instanceCount = new Integer(0);
- existingNames.put(name, instanceCount);
- }
-
- try {
- name = getNamingStrategy().getObjectName(routeContext,
processor, instanceCount);
- nameMap.put(processor, name);
- } catch (MalformedObjectNameException e) {
- LOG.warn("Could not register MBean: " + name, e);
- }
- }
- }
-
- for (Map.Entry<ProcessorType, ObjectName> entry : nameMap.entrySet()) {
- PerformanceCounter pc = new PerformanceCounter();
- try {
- agent.register(pc, entry.getValue());
+ LOG.warn("Could not create MBean name: " + name, e);
} catch (JMException e) {
- LOG.warn("Could not register PerformanceCounter MBean", e);
+ LOG.warn("Could not register PerformanceCounter MBean: " +
name, e);
}
- counterMap.put(entry.getKey(), pc);
}
-
+
routeContext.addInterceptStrategy(new
InstrumentationInterceptStrategy(counterMap));
routeContext.setErrorHandlerWrappingStrategy(
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java?rev=676133&r1=676132&r2=676133&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultiInstanceProcessorTest.java
Sat Jul 12 01:42:42 2008
@@ -79,8 +79,8 @@
resultEndpoint.assertIsSatisfied();
verifyCounter(mbsc, new ObjectName(domainName + ":type=route,*"));
- verifyCounter(mbsc, new ObjectName(domainName +
":type=processor,instance=0,*"));
- verifyCounter(mbsc, new ObjectName(domainName +
":type=processor,instance=1,*"));
+ verifyCounter(mbsc, new ObjectName(domainName +
":type=processor,nodeid=to3,*"));
+ verifyCounter(mbsc, new ObjectName(domainName +
":type=processor,nodeid=to4,*"));
}