Author: davsclaus
Date: Sat Apr 28 14:58:59 2012
New Revision: 1331780
URL: http://svn.apache.org/viewvc?rev=1331780&view=rev
Log:
CAMEL-4906: Allow to easily configure JMX naming using managementNamePattern
attribute on CamelContext.
Modified:
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiManagementNameStrategy.java
camel/trunk/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundle.java
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/management/ManagedNamePatternFixedTest.java
camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedTest.xml
Modified:
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
(original)
+++
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
Sat Apr 28 14:58:59 2012
@@ -21,6 +21,7 @@ import org.apache.camel.core.osgi.OsgiCa
import org.apache.camel.core.osgi.OsgiCamelContextNameStrategy;
import org.apache.camel.core.osgi.OsgiClassResolver;
import org.apache.camel.core.osgi.OsgiFactoryFinderResolver;
+import org.apache.camel.core.osgi.OsgiManagementNameStrategy;
import org.apache.camel.core.osgi.OsgiPackageScanClassResolver;
import org.apache.camel.core.osgi.OsgiTypeConverter;
import org.apache.camel.core.osgi.utils.BundleContextUtils;
@@ -46,10 +47,11 @@ public class BlueprintCamelContext exten
public BlueprintCamelContext(BundleContext bundleContext,
BlueprintContainer blueprintContainer) {
this.bundleContext = bundleContext;
this.blueprintContainer = blueprintContainer;
- setNameStrategy(new OsgiCamelContextNameStrategy(bundleContext));
- setClassResolver(new OsgiClassResolver(bundleContext));
- setFactoryFinderResolver(new OsgiFactoryFinderResolver(bundleContext));
- setPackageScanClassResolver(new
OsgiPackageScanClassResolver(bundleContext));
+
+ // inject common osgi
+ OsgiCamelContextHelper.osgiUpdate(this, bundleContext);
+
+ // and these are blueprint specific
setComponentResolver(new BlueprintComponentResolver(bundleContext));
setLanguageResolver(new BlueprintLanguageResolver(bundleContext));
setDataFormatResolver(new BlueprintDataFormatResolver(bundleContext));
Modified:
camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiManagementNameStrategy.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiManagementNameStrategy.java?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiManagementNameStrategy.java
(original)
+++
camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiManagementNameStrategy.java
Sat Apr 28 14:58:59 2012
@@ -29,6 +29,7 @@ import org.osgi.framework.BundleContext;
* tokens (see {@link DefaultManagementNameStrategy}) and the following
additional OSGi specific tokens
* <ul>
* <li>#bundleId# - The bundle id</li>
+ * <li>#version# - The bundle version</li>
* <li>#symbolicName# - The bundle symbolic name</li>
* </ul>
* <p/>
@@ -50,9 +51,11 @@ public class OsgiManagementNameStrategy
protected String customResolveManagementName(String pattern, String
answer) {
String bundleId = "" + bundleContext.getBundle().getBundleId();
String symbolicName =
Matcher.quoteReplacement(bundleContext.getBundle().getSymbolicName());
+ String version =
Matcher.quoteReplacement(bundleContext.getBundle().getVersion().toString());
answer = answer.replaceFirst("#bundleId#", bundleId);
answer = answer.replaceFirst("#symbolicName#", symbolicName);
+ answer = answer.replaceFirst("#version#", version);
return answer;
}
Modified:
camel/trunk/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundle.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundle.java?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundle.java
(original)
+++
camel/trunk/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundle.java
Sat Apr 28 14:58:59 2012
@@ -20,8 +20,10 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
+import java.util.Map;
import org.apache.camel.util.CastUtils;
+import org.osgi.framework.Version;
import org.springframework.osgi.mock.MockBundle;
/**
@@ -100,6 +102,16 @@ public class CamelMockBundle extends Moc
}
}
+ @Override
+ public Map getSignerCertificates(int signersType) {
+ return null;
+ }
+
+ @Override
+ public Version getVersion() {
+ return Version.parseVersion("1.0.0");
+ }
+
public Class<?> loadClass(String name) throws ClassNotFoundException {
if (isLoadableClass(name)) {
return super.loadClass(name);
Modified:
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java
(original)
+++
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java
Sat Apr 28 14:58:59 2012
@@ -67,6 +67,7 @@ public final class CamelBlueprintHelper
public static final long DEFAULT_TIMEOUT = 30000;
public static final String BUNDLE_FILTER = "(Bundle-SymbolicName=*)";
+ public static final String BUNDLE_VERSION = "1.0.0";
private static final transient Logger LOG =
LoggerFactory.getLogger(CamelBlueprintHelper.class);
private static final ClassResolver RESOLVER = new DefaultClassResolver();
@@ -74,10 +75,11 @@ public final class CamelBlueprintHelper
}
public static BundleContext createBundleContext(String name, String
descriptors, boolean includeTestBundle) throws Exception {
- return createBundleContext(name, descriptors, BUNDLE_FILTER,
includeTestBundle);
+ return createBundleContext(name, descriptors, BUNDLE_FILTER,
BUNDLE_VERSION, includeTestBundle);
}
- public static BundleContext createBundleContext(String name, String
descriptors, String bundleFilter, boolean includeTestBundle) throws Exception {
+ public static BundleContext createBundleContext(String name, String
descriptors, String bundleFilter,
+ String testBundleVersion,
boolean includeTestBundle) throws Exception {
deleteDirectory("target/bundles");
createDirectory("target/bundles");
@@ -89,7 +91,7 @@ public final class CamelBlueprintHelper
if (includeTestBundle) {
// add ourselves as a bundle
- TinyBundle bundle = createTestBundle(name, descriptors);
+ TinyBundle bundle = createTestBundle(name, testBundleVersion,
descriptors);
String jarName = name.toLowerCase();
bundles.add(getBundleDescriptor("target/bundles/" + jarName +
".jar", bundle));
}
@@ -189,7 +191,7 @@ public final class CamelBlueprintHelper
return references == null ? new ArrayList<ServiceReference>(0) :
Arrays.asList(references);
}
- private static TinyBundle createTestBundle(String name, String
descriptors) throws FileNotFoundException, MalformedURLException {
+ private static TinyBundle createTestBundle(String name, String version,
String descriptors) throws FileNotFoundException, MalformedURLException {
TinyBundle bundle = TinyBundles.newBundle();
for (URL url : getBlueprintDescriptors(descriptors)) {
LOG.info("Using Blueprint XML file: " + url.getFile());
@@ -198,7 +200,7 @@ public final class CamelBlueprintHelper
bundle.set("Manifest-Version", "2")
.set("Bundle-ManifestVersion", "2")
.set("Bundle-SymbolicName", name)
- .set("Bundle-Version", "0.0.0");
+ .set("Bundle-Version", version);
return bundle;
}
Modified:
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
(original)
+++
camel/trunk/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
Sat Apr 28 14:58:59 2012
@@ -32,7 +32,8 @@ public abstract class CamelBlueprintTest
@Before
@Override
public void setUp() throws Exception {
- this.bundleContext =
CamelBlueprintHelper.createBundleContext(getClass().getSimpleName(),
getBlueprintDescriptor(), getBundleFilter(), true);
+ this.bundleContext =
CamelBlueprintHelper.createBundleContext(getClass().getSimpleName(),
getBlueprintDescriptor(),
+ getBundleFilter(), getBundleVersion(), true);
super.setUp();
}
@@ -58,8 +59,8 @@ public abstract class CamelBlueprintTest
}
/**
- * Gets filter expression of bundle descriptors. Modify this method if you
wish to change
- * default behavior.
+ * Gets filter expression of bundle descriptors.
+ * Modify this method if you wish to change default behavior.
*
* @return filter expression for OSGi bundles.
*/
@@ -67,6 +68,16 @@ public abstract class CamelBlueprintTest
return CamelBlueprintHelper.BUNDLE_FILTER;
}
+ /**
+ * Gets test bundle version.
+ * Modify this method if you wish to change default behavior.
+ *
+ * @return test bundle version
+ */
+ protected String getBundleVersion() {
+ return CamelBlueprintHelper.BUNDLE_VERSION;
+ }
+
@Override
protected CamelContext createCamelContext() throws Exception {
return CamelBlueprintHelper.getOsgiService(bundleContext,
CamelContext.class);
Modified:
camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/management/ManagedNamePatternFixedTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/management/ManagedNamePatternFixedTest.java?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/management/ManagedNamePatternFixedTest.java
(original)
+++
camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/management/ManagedNamePatternFixedTest.java
Sat Apr 28 14:58:59 2012
@@ -29,6 +29,11 @@ public class ManagedNamePatternFixedTest
return
"org/apache/camel/test/blueprint/management/managedNamePatternFixedTest.xml";
}
+ @Override
+ protected String getBundleVersion() {
+ return "1.2.3";
+ }
+
@Test
public void testManagedNamePattern() throws Exception {
getMockEndpoint("mock:result").expectedMessageCount(1);
@@ -37,7 +42,7 @@ public class ManagedNamePatternFixedTest
MBeanServer mbeanServer =
context.getManagementStrategy().getManagementAgent().getMBeanServer();
- assertEquals("cool", context.getManagementName());
+ assertEquals("cool-1.2.3", context.getManagementName());
ObjectName on =
ObjectName.getInstance("org.apache.camel:context=localhost/" +
context.getManagementName()
+ ",type=context,name=\"" + context.getName() + "\"");
Modified:
camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedTest.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedTest.xml?rev=1331780&r1=1331779&r2=1331780&view=diff
==============================================================================
---
camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedTest.xml
(original)
+++
camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/management/managedNamePatternFixedTest.xml
Sat Apr 28 14:58:59 2012
@@ -26,7 +26,7 @@
</bean>
<!-- START SNIPPET: example -->
- <camelContext managementNamePattern="cool"
xmlns="http://camel.apache.org/schema/blueprint">
+ <camelContext id="cool" managementNamePattern="#name#-#version#"
xmlns="http://camel.apache.org/schema/blueprint">
<jmxAgent id="agent"/>
<route>