You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/04/28 16:59:00 UTC

svn commit: r1331780 - in /camel/trunk/components: camel-blueprint/src/main/java/org/apache/camel/blueprint/ camel-core-osgi/src/main/java/org/apache/camel/core/osgi/ camel-core-osgi/src/test/java/org/apache/camel/core/osgi/ camel-test-blueprint/src/ma...

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>