You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by da...@apache.org on 2006/02/15 23:58:59 UTC
svn commit: r378111 - in
/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl: ./ META-INF/
src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/cocoon/ src/main/java/org/apache/cocoon/blocks/
src/mai...
Author: danielf
Date: Wed Feb 15 14:58:57 2006
New Revision: 378111
URL: http://svn.apache.org/viewcvs?rev=378111&view=rev
Log:
Initial experiments for using OSGi for the blocks fw. Especially I test how to use the declarative services.
No Maven build yet. Check the README for how to test it.
Added:
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/ (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java (with props)
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/
cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java (with props)
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Feb 15 14:58:57 2006
@@ -0,0 +1,7 @@
+build.properties
+.classpath
+.project
+.wtpmodules
+.deployables
+.settings
+target
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF Wed Feb 15 14:58:57 2006
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: cocoon-blocks-fw-osgi-impl
+Bundle-SymbolicName: org.apache.cocoon.blocks.osgi
+Bundle-Version: 1.0.0
+Service-Component: META-INF/components.xml
+Bundle-Localization: plugin
+Import-Package: javax.servlet,
+ javax.servlet.http,
+ org.osgi.framework;version="1.3.0",
+ org.osgi.service.component;version="1.0.0",
+ org.osgi.service.http,
+ org.osgi.service.log
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/MANIFEST.MF
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml Wed Feb 15 14:58:57 2006
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+ <scr:component name="cocoon.activator">
+ <scr:implementation class="org.apache.cocoon.blocks.osgi.Activator"/>
+ <scr:reference name="LOG"
+ interface="org.osgi.service.log.LogService"
+ bind="setLog"/>
+ <scr:reference name="HTTP"
+ interface="org.osgi.service.http.HttpService"
+ bind="setHttpService"/>
+ <scr:reference name="Servlet"
+ interface="javax.servlet.Servlet"
+ cardinality="0..n"
+ policy="dynamic"
+ bind="setServlet"
+ unbind="unsetServlet"/>
+ </scr:component>
+
+ <scr:component name="cocoon.servlet1">
+ <scr:implementation class="org.apache.cocoon.blocks.osgi.TestServlet"/>
+ <scr:service>
+ <scr:provide interface="javax.servlet.Servlet"/>
+ </scr:service>
+ <scr:property name="path" value="/test1"/>
+ </scr:component>
+
+ <scr:component name="cocoon.servlet2">
+ <scr:implementation class="org.apache.cocoon.blocks.osgi.TestServlet"/>
+ <scr:service>
+ <scr:provide interface="javax.servlet.Servlet"/>
+ </scr:service>
+ <scr:property name="path" value="/test2"/>
+ </scr:component>
+</components>
\ No newline at end of file
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/META-INF/components.xml
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt Wed Feb 15 14:58:57 2006
@@ -0,0 +1,55 @@
+OSGi Blocks Framework
+=====================
+
+This far this project only contain some preliminary OSGi experimentation.
+Specifically I experimenting with how to use the declarative services for
+wiring and mounting some servlets.
+
+The project does not use Maven yet, I don't know how to build it with Maven
+in a convenient way, suggestions are welcome.
+
+I run it within Eclipse, and use 3.2M4 as it has better support for developing
+and executing OSGi bundles than 3.1. Getting some knowledge about Eclipse RCP
+or at least about plugin development doesn't hurt.
+
+Create a platform
+-----------------
+
+First one need to create a "platform" consisting of the basic OSGi framework
+and service bundles. Get the latest Eclipse-Equinox-SDK and launcher (for your OS),
+from the stream integration builds at http://download.eclipse.org/eclipse/equinox/.
+Unpack the SDK at some appropriate place and then unpack the launcher in the top
+directory of the SDK.
+
+Choose the platform as target platform:
+Window -> Preferences ... -> Plug-in development -> Target platform
+
+Plugin development
+------------------
+
+Import the this project into Eclipse and make it a plugin:
+Right click the project -> PDE Tools -> Convert project to plug-in projects ...
+
+Running the platform
+--------------------
+
+Start the framework:
+Run -> Run ... -> Equinox OSGi Framework -> New
+Make shure that this project and all the bundles in the target platform are chosen
+in the Plug-ins tab and that -console is given as program argument.
+
+When the platform is started you get a OSGi console in the console view in Eclipse.
+Type "help" to see what commands are available. Take a look in META-INF/components.xml
+and the use "services" to see that the services are started and connected. Type
+"bundles" to see what bundles there are, "log" for the log messages.
+
+Test to stop, update, refresh and start this bundle and take a look at the log between
+the steps to see how the services are connected.
+
+Open a browser and test http://localhost/test1 and http://localhost/test2.
+
+At last
+-------
+
+I have probably missed some information. Ask, update this document or better
+make it work with Maven.
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/README.txt
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml Wed Feb 15 14:58:57 2006
@@ -0,0 +1,22 @@
+<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/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>cocoon-blocks-fw</artifactId>
+ <groupId>org.apache.cocoon</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-blocks-fw-osgi-impl</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>Blocks Framework OSGi</name>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/pom.xml
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java Wed Feb 15 14:58:57 2006
@@ -0,0 +1,51 @@
+package org.apache.cocoon.blocks.osgi;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.http.HttpService;
+import org.osgi.service.http.NamespaceException;
+import org.osgi.service.log.LogService;
+
+public class Activator {
+
+ private LogService log;
+ private HttpService httpService;
+ private ComponentContext context;
+
+ protected void setLog(LogService logService) {
+ this.log = logService;
+ System.out.println("Got log");
+ }
+
+ protected void setHttpService(HttpService httpService) {
+ this.httpService = httpService;
+ System.out.println("Got http service");
+ }
+
+ protected void setServlet(ServiceReference reference) throws ServletException, NamespaceException {
+ String path = (String) reference.getProperty("path");
+ Servlet servlet = (Servlet) this.context.locateService("Servlet", reference);
+ this.httpService.registerServlet(path, servlet, null, null);
+ this.log.log(LogService.LOG_DEBUG, "Register Servlet at " + path);
+ }
+
+ protected void unsetServlet(ServiceReference reference) {
+ String path = (String) reference.getProperty("path");
+ this.httpService.unregister(path);
+ this.log.log(LogService.LOG_DEBUG, "Unregister Servlet at " + path);
+ }
+
+ protected void activate(ComponentContext context) {
+ this.context = context;
+ System.out.println("Cocoon Start");
+ this.log.log(LogService.LOG_DEBUG, "Cocoon start");
+ }
+
+ protected void deactivate(ComponentContext context) {
+ System.out.println("Cocoon Stop");
+ this.log.log(LogService.LOG_DEBUG, "Cocoon stop");
+ }
+}
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/Activator.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java Wed Feb 15 14:58:57 2006
@@ -0,0 +1,17 @@
+package org.apache.cocoon.blocks.osgi;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class TestServlet extends HttpServlet {
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ response.setContentType("text/plain");
+ response.getWriter().println("Test!");
+ }
+
+}
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/main/java/org/apache/cocoon/blocks/osgi/TestServlet.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java?rev=378111&view=auto
==============================================================================
--- cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java (added)
+++ cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java Wed Feb 15 14:58:57 2006
@@ -0,0 +1,38 @@
+package org.apache.cocoon;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-blocks-fw/cocoon-blocks-fw-osgi-impl/src/test/java/org/apache/cocoon/AppTest.java
------------------------------------------------------------------------------
svn:keywords = Id