You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2011/08/21 19:39:58 UTC
svn commit: r1160020 - in /karaf/sandbox/jbonofre/cave/trunk: ./
assembly/src/main/resources/ client/
client/src/main/java/org/apache/karaf/cave/client/ server/
server/management/ server/management/src/ server/management/src/main/
server/management/src...
Author: jbonofre
Date: Sun Aug 21 17:39:57 2011
New Revision: 1160020
URL: http://svn.apache.org/viewvc?rev=1160020&view=rev
Log:
Start the Cave management support.
Start the Cave RepositoryAdmin proxy client.
Added:
karaf/sandbox/jbonofre/cave/trunk/server/management/
karaf/sandbox/jbonofre/cave/trunk/server/management/pom.xml
karaf/sandbox/jbonofre/cave/trunk/server/management/src/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/CaveRepositoryMBean.java
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/internal/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/internal/CaveRepositoryMBeanImpl.java
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/blueprint/
karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/blueprint/cave-management.xml
Modified:
karaf/sandbox/jbonofre/cave/trunk/assembly/src/main/resources/features.xml
karaf/sandbox/jbonofre/cave/trunk/client/pom.xml
karaf/sandbox/jbonofre/cave/trunk/client/src/main/java/org/apache/karaf/cave/client/RepositoryAdminProxy.java
karaf/sandbox/jbonofre/cave/trunk/pom.xml
karaf/sandbox/jbonofre/cave/trunk/server/pom.xml
Modified: karaf/sandbox/jbonofre/cave/trunk/assembly/src/main/resources/features.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/assembly/src/main/resources/features.xml?rev=1160020&r1=1160019&r2=1160020&view=diff
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/assembly/src/main/resources/features.xml (original)
+++ karaf/sandbox/jbonofre/cave/trunk/assembly/src/main/resources/features.xml Sun Aug 21 17:39:57 2011
@@ -33,6 +33,7 @@
<bundle>mvn:org.jsoup/jsoup/${jsoup.version}</bundle>
<bundle>mvn:org.apache.karaf.cave.server.backend/org.apache.karaf.cave.server.backend.api/${project.version}</bundle>
<bundle>mvn:org.apache.karaf.cave.server.backend/org.apache.karaf.cave.server.backend.filesystem/${project.version}</bundle>
+ <bundle>mvn:org.apache.karaf.cave.server/org.apache.karaf.cave.server.management/${project.version}</bundle>
<bundle>mvn:org.apache.karaf.cave.server/org.apache.karaf.cave.server.command/${project.version}</bundle>
</feature>
Modified: karaf/sandbox/jbonofre/cave/trunk/client/pom.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/client/pom.xml?rev=1160020&r1=1160019&r2=1160020&view=diff
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/client/pom.xml (original)
+++ karaf/sandbox/jbonofre/cave/trunk/client/pom.xml Sun Aug 21 17:39:57 2011
@@ -33,6 +33,17 @@
<name>Apache Karaf :: Cave :: Client</name>
<packaging>bundle</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.bundlerepository</artifactId>
+ </dependency>
+ </dependencies>
+
<build>
<plugins>
<plugin>
Modified: karaf/sandbox/jbonofre/cave/trunk/client/src/main/java/org/apache/karaf/cave/client/RepositoryAdminProxy.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/client/src/main/java/org/apache/karaf/cave/client/RepositoryAdminProxy.java?rev=1160020&r1=1160019&r2=1160020&view=diff
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/client/src/main/java/org/apache/karaf/cave/client/RepositoryAdminProxy.java (original)
+++ karaf/sandbox/jbonofre/cave/trunk/client/src/main/java/org/apache/karaf/cave/client/RepositoryAdminProxy.java Sun Aug 21 17:39:57 2011
@@ -16,8 +16,45 @@
*/
package org.apache.karaf.cave.client;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.felix.bundlerepository.DataModelHelper;
+import org.apache.felix.bundlerepository.RepositoryAdmin;
+import org.apache.felix.bundlerepository.Requirement;
+import org.apache.felix.bundlerepository.Resource;
+import org.apache.felix.bundlerepository.impl.DataModelHelperImpl;
+import org.apache.felix.bundlerepository.impl.RepositoryImpl;
+import org.osgi.framework.InvalidSyntaxException;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Implementation of the OBR RepositoryAdmin service which proxy to a Karaf Cave server.
*/
-public class RepositoryAdminProxy {
+public class RepositoryAdminProxy implements RepositoryAdmin {
+
+ private final String caveServerUrl;
+
+ private final Map<String, RepositoryImpl> repositories = new HashMap<String, RepositoryImpl>();
+ private final DataModelHelper dataModelHelper = new DataModelHelperImpl();
+
+ public RepositoryAdminProxy(String caveServerUrl) {
+ this.caveServerUrl = caveServerUrl;
+ }
+
+ public Resource[] discoverResources(String filter) throws InvalidSyntaxException {
+ // check if the syntax is valid
+ dataModelHelper.filter(filter);
+ // delegate to the Cave server
+ WebClient client = WebClient.create(caveServerUrl + "/obr/resources");
+
+ }
+
+ public Resource[] discoverResources(Requirement[] requirements) {
+ WebClient client = WebClient.create(caveServerUrl + "/obr/resources");
+ }
+
+
}
Modified: karaf/sandbox/jbonofre/cave/trunk/pom.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/pom.xml?rev=1160020&r1=1160019&r2=1160020&view=diff
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/pom.xml (original)
+++ karaf/sandbox/jbonofre/cave/trunk/pom.xml Sun Aug 21 17:39:57 2011
@@ -45,7 +45,7 @@
<modules>
<module>server</module>
- <module>client</module>
+ <!-- <module>client</module> -->
<module>assembly</module>
</modules>
Added: karaf/sandbox/jbonofre/cave/trunk/server/management/pom.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/server/management/pom.xml?rev=1160020&view=auto
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/server/management/pom.xml (added)
+++ karaf/sandbox/jbonofre/cave/trunk/server/management/pom.xml Sun Aug 21 17:39:57 2011
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <!--
+
+ 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.
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.karaf.cave</groupId>
+ <artifactId>org.apache.karaf.cave.server</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.apache.karaf.cave.server</groupId>
+ <artifactId>org.apache.karaf.cave.server.management</artifactId>
+ <packaging>bundle</packaging>
+ <name>Apache Karaf :: Cave :: Server :: Management</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.karaf.cave.server.backend</groupId>
+ <artifactId>org.apache.karaf.cave.server.backend.api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+ <Export-Package>
+ org.apache.karaf.cave.server.management*;version=${project.version}
+ </Export-Package>
+ <Import-Package>
+ !org.apache.karaf.cave.server.management*,
+ javax.management,
+ javax.management.loading,
+ javax.management.openmbean,
+ org.apache.karaf.management*;version="[2,4)",
+ org.apache.karaf.cave.server.backend.api;version=${project.version},
+ *
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
Added: karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/CaveRepositoryMBean.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/CaveRepositoryMBean.java?rev=1160020&view=auto
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/CaveRepositoryMBean.java (added)
+++ karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/CaveRepositoryMBean.java Sun Aug 21 17:39:57 2011
@@ -0,0 +1,28 @@
+/*
+* Licensed 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.cave.server.management;
+
+import javax.management.openmbean.TabularData;
+
+/**
+ * Cave repositorry MBean to management Cave repositories.
+ */
+public interface CaveRepositoryMBean {
+
+ TabularData getCaveRepositories() throws Exception;
+
+ void createRepository(String name) throws Exception;
+ void destroyRepository(String name) throws Exception;
+
+}
Added: karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/internal/CaveRepositoryMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/internal/CaveRepositoryMBeanImpl.java?rev=1160020&view=auto
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/internal/CaveRepositoryMBeanImpl.java (added)
+++ karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/java/org/apache/karaf/cave/server/management/internal/CaveRepositoryMBeanImpl.java Sun Aug 21 17:39:57 2011
@@ -0,0 +1,75 @@
+/*
+ * Licensed 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.cave.server.management.internal;
+
+import org.apache.karaf.cave.server.backend.api.CaveRepository;
+import org.apache.karaf.cave.server.backend.api.CaveRepositoryService;
+import org.apache.karaf.cave.server.management.CaveRepositoryMBean;
+
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardMBean;
+import javax.management.openmbean.*;
+
+/**
+ * Implementation of the Cave repository MBean.
+ */
+public class CaveRepositoryMBeanImpl extends StandardMBean implements CaveRepositoryMBean {
+
+ private CaveRepositoryService caveRepositoryService;
+
+ public CaveRepositoryMBeanImpl() throws NotCompliantMBeanException {
+ super(CaveRepositoryMBean.class);
+ }
+
+ public CaveRepositoryService getCaveRepositoryService() {
+ return this.caveRepositoryService;
+ }
+
+ public void setCaveRepositoryService(CaveRepositoryService caveRepositoryService) {
+ this.caveRepositoryService = caveRepositoryService;
+ }
+
+ public TabularData getCaveRepositories() throws Exception {
+ CaveRepository[] caveRepositories = caveRepositoryService.getRepositories();
+
+ CompositeType caveRepositoryType = new CompositeType("Repository", "Karaf Cave repository",
+ new String[]{"name", "location"},
+ new String[]{"Name of the Cave repository", "Location of the Cave repository storage"},
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING });
+
+ TabularType tableType = new TabularType("Repositories", "Table of all Karaf Cave repositories", caveRepositoryType,
+ new String[]{ "name" });
+
+ TabularData table = new TabularDataSupport(tableType);
+
+ for (int i = 0; i < caveRepositories.length; i++) {
+ CompositeData data = new CompositeDataSupport(caveRepositoryType,
+ new String[]{ "name", "location" },
+ new Object[]{ caveRepositories[i].getName(), caveRepositories[i].getLocation() });
+ table.put(data);
+ }
+
+ return table;
+ }
+
+ public void createRepository(String name) throws Exception {
+ caveRepositoryService.createRepository(name, true);
+ }
+
+ public void destroyRepository(String name) throws Exception {
+ caveRepositoryService.destroy(name);
+ }
+
+}
Added: karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/blueprint/cave-management.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/blueprint/cave-management.xml?rev=1160020&view=auto
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/blueprint/cave-management.xml (added)
+++ karaf/sandbox/jbonofre/cave/trunk/server/management/src/main/resources/OSGI-INF/blueprint/cave-management.xml Sun Aug 21 17:39:57 2011
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+ <!-- reference to the Cave repository service -->
+ <reference id="caveRepositoryService" interface="org.apache.karaf.cave.server.backend.api.CaveRepositoryService"/>
+
+ <!-- reference to the Karaf MBean server -->
+ <reference id="mbeanServer" interface="javax.management.MBeanServer">
+ <reference-listener ref="mbeanRegistrer" bind-method="registerMBeanServer" unbind-method="unregisterMBeanServer"/>
+ </reference>
+
+ <bean id="caveRepositoryMBean" class="org.apache.karaf.cave.server.management.internal.CaveRepositoryMBeanImpl">
+ <property name="caveRepositoryService" ref="caveRepositoryService"/>
+ </bean>
+
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <property name="mbeans">
+ <map>
+ <entry value="org.apache.karaf.cave:type=repository,name=${karaf.name}" key-ref="caveRepositoryMBean"/>
+ </map>
+ </property>
+ </bean>
+
+</blueprint>
\ No newline at end of file
Modified: karaf/sandbox/jbonofre/cave/trunk/server/pom.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/server/pom.xml?rev=1160020&r1=1160019&r2=1160020&view=diff
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/server/pom.xml (original)
+++ karaf/sandbox/jbonofre/cave/trunk/server/pom.xml Sun Aug 21 17:39:57 2011
@@ -35,6 +35,7 @@
<modules>
<module>backend</module>
+ <module>management</module>
<module>command</module>
</modules>