You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2012/04/02 13:54:26 UTC
svn commit: r1308312 - in /karaf/trunk: ./
assemblies/features/standard/src/main/feature/ package/
package/core/src/main/java/org/apache/karaf/packages/core/
package/core/src/main/java/org/apache/karaf/packages/core/internal/
package/core/src/main/reso...
Author: cschneider
Date: Mon Apr 2 11:54:26 2012
New Revision: 1308312
URL: http://svn.apache.org/viewvc?rev=1308312&view=rev
Log:
KARAF-1302 Showing the new whiteboard concept for jmx on the package mbean
Added:
karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/PackagesMBean.java
karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/internal/Packages.java
karaf/trunk/package/core/src/test/java/org/apache/karaf/packages/core/InstallMBeantest.java
Removed:
karaf/trunk/package/management/
Modified:
karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
karaf/trunk/package/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
karaf/trunk/package/pom.xml
karaf/trunk/pom.xml
Modified: karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml?rev=1308312&r1=1308311&r2=1308312&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml (original)
+++ karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml Mon Apr 2 11:54:26 2012
@@ -94,7 +94,6 @@
<feature name="package" version="${project.version}" resolver="(obr)" description="Package commands and mbeans">
<bundle start-level="30">mvn:org.apache.karaf.package/org.apache.karaf.package.core/${project.version}</bundle>
<bundle start-level="30">mvn:org.apache.karaf.package/org.apache.karaf.package.command/${project.version}</bundle>
- <bundle start-level="30">mvn:org.apache.karaf.package/org.apache.karaf.package.management/${project.version}</bundle>
</feature>
<feature name="http" version="${project.version}" resolver="(obr)" description="Implementation of the OSGI HTTP Service">
@@ -183,6 +182,7 @@
<bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.api/${aries.jmx.version}</bundle>
<bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.core/${aries.jmx.version}</bundle>
<bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint/${aries.jmx.version}</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.whiteboard/${aries.jmx.version}</bundle>
<bundle start-level="30">mvn:org.apache.karaf.config/org.apache.karaf.config.management/${project.version}</bundle>
</feature>
Added: karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/PackagesMBean.java
URL: http://svn.apache.org/viewvc/karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/PackagesMBean.java?rev=1308312&view=auto
==============================================================================
--- karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/PackagesMBean.java (added)
+++ karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/PackagesMBean.java Mon Apr 2 11:54:26 2012
@@ -0,0 +1,29 @@
+/*
+ * 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.karaf.packages.core;
+
+import javax.management.openmbean.TabularData;
+
+/**
+ * Package MBean.
+ */
+public interface PackagesMBean {
+
+ TabularData getExports();
+ TabularData getImports();
+
+}
Added: karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/internal/Packages.java
URL: http://svn.apache.org/viewvc/karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/internal/Packages.java?rev=1308312&view=auto
==============================================================================
--- karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/internal/Packages.java (added)
+++ karaf/trunk/package/core/src/main/java/org/apache/karaf/packages/core/internal/Packages.java Mon Apr 2 11:54:26 2012
@@ -0,0 +1,129 @@
+/*
+ * 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.karaf.packages.core.internal;
+
+import java.util.SortedMap;
+
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardMBean;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
+
+import org.apache.karaf.packages.core.PackageRequirement;
+import org.apache.karaf.packages.core.PackageService;
+import org.apache.karaf.packages.core.PackageVersion;
+import org.apache.karaf.packages.core.PackagesMBean;
+import org.osgi.framework.Bundle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Bundles MBean implementation.
+ */
+public class Packages extends StandardMBean implements PackagesMBean {
+ private Logger log = LoggerFactory.getLogger(this.getClass());
+
+ private final PackageService packageService;
+
+ public Packages(PackageService packageService) throws NotCompliantMBeanException {
+ super(PackagesMBean.class);
+ this.packageService = packageService;
+ }
+
+ public TabularData getExports() {
+ try {
+ String[] names = new String[] {"Name", "Version", "ID", "Bundle Name"};
+ CompositeType bundleType = new CompositeType("PackageExport", "Exported packages", names,
+ new String[] {"Package name", "Version of the Package",
+ "ID of the Bundle", "Bundle symbolic name"},
+ new OpenType[] {SimpleType.STRING, SimpleType.STRING,
+ SimpleType.LONG, SimpleType.STRING});
+ TabularType tableType = new TabularType("PackageExports", "Exported packages", bundleType,
+ new String[] {"Name", "Version", "ID"});
+ TabularData table = new TabularDataSupport(tableType);
+
+ SortedMap<String, PackageVersion> exports = packageService.getExports();
+
+ for (String key : exports.keySet()) {
+ PackageVersion export = exports.get(key);
+ for (Bundle bundle : export.getBundles()) {
+ Object[] data = new Object[] {
+ export.getPackageName(),
+ export.getVersion().toString(),
+ bundle.getBundleId(),
+ bundle.getSymbolicName()};
+ CompositeData comp = new CompositeDataSupport(bundleType, names, data);
+ table.put(comp);
+ }
+ }
+ return table;
+ } catch (RuntimeException e) {
+ // To avoid the exception gets swallowed by jmx
+ log.error(e.getMessage(), e);
+ throw e;
+ } catch (OpenDataException e) {
+ log.error(e.getMessage(), e);
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public TabularData getImports() {
+ try {
+ String[] names = new String[] {"PackageName", "Filter", "Optional", "ID", "Bundle Name", "Resolvable"};
+ CompositeType bundleType = new CompositeType("PackageImports", "Imported packages",
+ names,
+ names,
+ new OpenType[] {SimpleType.STRING, SimpleType.STRING, SimpleType.BOOLEAN,
+ SimpleType.LONG, SimpleType.STRING, SimpleType.BOOLEAN});
+ TabularType tableType = new TabularType("PackageImports", "Imported packages", bundleType,
+ new String[] {"Filter", "ID"});
+ TabularData table = new TabularDataSupport(tableType);
+
+ SortedMap<String, PackageRequirement> imports = packageService.getImports();
+
+ for (String key : imports.keySet()) {
+ PackageRequirement req = imports.get(key);
+ Object[] data = new Object[] {
+ req.getPackageName(),
+ req.getFilter(),
+ req.isOptional(),
+ req.getBundle().getBundleId(),
+ req.getBundle().getSymbolicName(),
+ req.isResolveable()};
+ CompositeData comp = new CompositeDataSupport(bundleType, names, data);
+ table.put(comp);
+ }
+ return table;
+ } catch (RuntimeException e) {
+ // To avoid the exception gets swallowed by jmx
+ log.error(e.getMessage(), e);
+ throw e;
+ } catch (OpenDataException e) {
+ log.error(e.getMessage(), e);
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+
+}
Modified: karaf/trunk/package/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/package/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1308312&r1=1308311&r2=1308312&view=diff
==============================================================================
--- karaf/trunk/package/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/trunk/package/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml Mon Apr 2 11:54:26 2012
@@ -17,11 +17,24 @@
limitations under the License.
-->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">
+
+ <ext:property-placeholder/>
<bean id="packageService" class="org.apache.karaf.packages.core.internal.PackageServiceImpl">
<argument ref="blueprintBundleContext"/>
</bean>
<service interface="org.apache.karaf.packages.core.PackageService" ref="packageService"/>
+ <bean id="packageMBean" class="org.apache.karaf.packages.core.internal.Packages">
+ <argument ref="packageService" />
+ </bean>
+
+ <service interface="org.apache.karaf.packages.core.PackagesMBean" ref="packageMBean">
+ <service-properties>
+ <entry key="jmx.objectname" value="org.apache.karaf:type=package,name=${karaf.name}"/>
+ </service-properties>
+ </service>
+
</blueprint>
Added: karaf/trunk/package/core/src/test/java/org/apache/karaf/packages/core/InstallMBeantest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/package/core/src/test/java/org/apache/karaf/packages/core/InstallMBeantest.java?rev=1308312&view=auto
==============================================================================
--- karaf/trunk/package/core/src/test/java/org/apache/karaf/packages/core/InstallMBeantest.java (added)
+++ karaf/trunk/package/core/src/test/java/org/apache/karaf/packages/core/InstallMBeantest.java Mon Apr 2 11:54:26 2012
@@ -0,0 +1,24 @@
+package org.apache.karaf.packages.core;
+import java.lang.management.ManagementFactory;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.karaf.packages.core.internal.Packages;
+import org.junit.Test;
+
+
+/**
+ * Checks that the PackagesmBean is valid and can be installed in the MBeanServer
+ *
+ */
+public class InstallMBeantest {
+ @Test
+ public void test() throws Exception {
+ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ Packages pack = new Packages(null);
+ ObjectName oName = new ObjectName("org.apache.karaf:type=package,name=root");
+ server.registerMBean(pack, oName);
+ server.unregisterMBean(oName);
+ }
+}
Modified: karaf/trunk/package/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/package/pom.xml?rev=1308312&r1=1308311&r2=1308312&view=diff
==============================================================================
--- karaf/trunk/package/pom.xml (original)
+++ karaf/trunk/package/pom.xml Mon Apr 2 11:54:26 2012
@@ -36,7 +36,6 @@
<modules>
<module>core</module>
<module>command</module>
- <module>management</module>
</modules>
</project>
Modified: karaf/trunk/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/pom.xml?rev=1308312&r1=1308311&r2=1308312&view=diff
==============================================================================
--- karaf/trunk/pom.xml (original)
+++ karaf/trunk/pom.xml Mon Apr 2 11:54:26 2012
@@ -364,11 +364,6 @@
<artifactId>org.apache.karaf.package.command</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.karaf.package</groupId>
- <artifactId>org.apache.karaf.package.management</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>org.apache.karaf.config</groupId>