You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2011/11/18 10:40:51 UTC

svn commit: r1203551 [4/4] - in /felix/trunk/webconsole-plugins/servicediagnostics: ./ core/ core/src/ core/src/main/ core/src/main/resources/ core/src/main/resources/html/ core/src/main/resources/html/js/ core/src/main/scala/ core/src/main/scala/servi...

Propchange: felix/trunk/webconsole-plugins/servicediagnostics/run.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/webconsole-plugins/servicediagnostics/run.sh
------------------------------------------------------------------------------
    svn:executable = *

Propchange: felix/trunk/webconsole-plugins/servicediagnostics/run.sh
------------------------------------------------------------------------------
    svn:keywords = Id

Added: felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml?rev=1203551&view=auto
==============================================================================
--- felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml (added)
+++ felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml Fri Nov 18 09:40:49 2011
@@ -0,0 +1,73 @@
+<?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">
+  
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.felix</groupId>
+    <artifactId>servicediagnostics</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <groupId>org.apache.felix</groupId>
+  <artifactId>servicediagnostics.sample</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>servicediagnostics.core</artifactId>
+      <version>1.0.0-SNAPSHOT</version>
+    </dependency>
+    <!-- runtime dependencies. added to populate the local repository -->
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.main</artifactId>
+      <version>3.2.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.http.jetty</artifactId>
+      <version>2.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.shell</artifactId>
+      <version>1.4.2</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.scala-tools</groupId>
+        <artifactId>maven-scala-plugin</artifactId>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            <Bundle-Category>osgi</Bundle-Category>
+            <Bundle-SymbolicName>
+              ${project.artifactId}
+            </Bundle-SymbolicName>
+            <Service-Component>
+              *
+            </Service-Component>
+            <Private-Package>
+              org.apache.felix.servicediagnostics.sample
+            </Private-Package>
+            <Import-Package>
+              !aQute.bnd.annotation.component,!org.apache.felix.main,*
+            </Import-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>

Propchange: felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: felix/trunk/webconsole-plugins/servicediagnostics/sample/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/FelixLauncher.scala
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/FelixLauncher.scala?rev=1203551&view=auto
==============================================================================
--- felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/FelixLauncher.scala (added)
+++ felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/FelixLauncher.scala Fri Nov 18 09:40:49 2011
@@ -0,0 +1,59 @@
+/*
+ * 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.felix.servicediagnostics.sample
+
+import java.util.HashMap
+import java.util.ServiceLoader
+
+import scala.io.Source
+
+import org.osgi.framework.launch.FrameworkFactory
+import org.apache.felix.main.AutoProcessor
+
+/**
+ * This is a simple launcher for the framework, that doesn't require a properties file. 
+ * Bundles to be started are simply given in the command line.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+object FelixLauncher
+{
+    def main(bundles:Array[String]) = 
+    {
+        // load the FrameworkFactory implementation
+        val factory:FrameworkFactory = ServiceLoader.load(classOf[FrameworkFactory],
+            getClass.getClassLoader).iterator.next
+        // set our hardcoded felix.properties
+        val felixProps = new HashMap[String, String]
+        felixProps.put("org.osgi.framework.storage", ".cache")
+        felixProps.put("org.osgi.framework.storage.clean", "onFirstInit")
+        felixProps.put("felix.auto.install", bundles.map("file:"+_).mkString(" "))
+        felixProps.put("felix.auto.start", bundles.map("file:"+_).mkString(" "))
+        felixProps.put("org.osgi.framework.bootdelegation", "sun.*,com.sun.*")
+
+        //println("Launch Felix using "+factory+" and "+felixProps)
+        val felix = factory.newFramework(felixProps)
+        felix.init
+        // let the AutoProcessor process the properties (auto.install and auto.start)
+        AutoProcessor.process(felixProps, felix.getBundleContext)
+        // launch felix
+        felix.start
+        //println("Felix started")
+    }
+}

Added: felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala?rev=1203551&view=auto
==============================================================================
--- felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala (added)
+++ felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDM.scala Fri Nov 18 09:40:49 2011
@@ -0,0 +1,91 @@
+/*
+ * 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.felix.servicediagnostics.sample
+
+import org.osgi.framework.BundleContext
+import org.apache.felix.dm.DependencyActivatorBase
+import org.apache.felix.dm.DependencyManager
+import org.apache.felix.servicediagnostics.ServiceDiagnostics
+
+/**
+ * This class is a basic DependencyManager based demonstration
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+class TestDM extends DependencyActivatorBase
+{
+    var diagnostics:ServiceDiagnostics = _ //injected
+
+    override def init(bc:BundleContext, dm:DependencyManager) 
+    {
+        // register a callback in this class to try the engine alone
+        // in text mode, when everything is started
+        dm.add(createComponent
+            .setImplementation(this)
+            .add(createServiceDependency
+                .setService(classOf[TestDS]) // also wait for DS initialization
+                .setAutoConfig(false)
+                .setRequired(true))
+            .add(createServiceDependency
+                .setService(classOf[ServiceDiagnostics])
+                .setAutoConfig("diagnostics")
+                .setRequired(true)))
+
+        // initialize some sample services for testing purpose (see also TestDS)
+        dm.add(createComponent
+            .setInterface(classOf[DM1].getName, null)
+            .setImplementation(classOf[DM1])
+            .add(createServiceDependency
+                .setService(classOf[DM2])
+                .setAutoConfig(false)
+                .setCallbacks(null, null, null)
+                .setRequired(true)))
+
+        dm.add(createComponent
+            .setInterface(classOf[DM2].getName, null)
+            .setImplementation(classOf[DM2])
+            .add(createServiceDependency
+                .setService(classOf[DM3])
+                .setAutoConfig(false)
+                .setCallbacks(null, null, null)
+                .setRequired(true)))
+
+        dm.add(createComponent
+            .setInterface(classOf[DM3].getName, null)
+            .setImplementation(classOf[DM3])
+            .add(createServiceDependency
+                .setService(classOf[Runnable]) //missing dependency
+                .setAutoConfig(false)
+                .setCallbacks(null, null, null)
+                .setRequired(true)))
+    }
+
+    override def destroy(bc:BundleContext, dm:DependencyManager) = {}
+
+    def start = 
+    {
+        println("unavail="+diagnostics.notavail)
+        println("all="+diagnostics.allServices)
+    }
+}
+
+//sample service classes
+class DM1
+class DM2
+class DM3

Added: felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala?rev=1203551&view=auto
==============================================================================
--- felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala (added)
+++ felix/trunk/webconsole-plugins/servicediagnostics/sample/src/main/scala/servicediagnostics/sample/TestDS.scala Fri Nov 18 09:40:49 2011
@@ -0,0 +1,43 @@
+/*
+ * 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.felix.servicediagnostics.sample
+
+import aQute.bnd.annotation.component._
+
+/**
+ * This class is a basic SCR based demonstration
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Component(immediate=true, provide=Array(classOf[TestDS])) class TestDS 
+
+@Component(provide=Array(classOf[DS1])) class DS1 
+{
+    @Reference def setDS2(s:DS2) = {}
+}
+
+@Component(provide=Array(classOf[DS2])) class DS2 
+{
+    @Reference def setDM3(s:DM3) = {}
+}
+
+@Component(provide=Array(classOf[DS3])) class DS3 
+{
+    @Reference def setMap(s:java.util.Map[String,String]) = {} //not available
+}