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>