Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 99850 invoked from network); 15 Feb 2006 22:59:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 15 Feb 2006 22:59:26 -0000 Received: (qmail 4727 invoked by uid 500); 15 Feb 2006 22:59:25 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 4683 invoked by uid 500); 15 Feb 2006 22:59:24 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 4672 invoked by uid 99); 15 Feb 2006 22:59:24 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Feb 2006 14:59:24 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 15 Feb 2006 14:59:22 -0800 Received: (qmail 99706 invoked by uid 65534); 15 Feb 2006 22:59:02 -0000 Message-ID: <20060215225902.99705.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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... Date: Wed, 15 Feb 2006 22:58:59 -0000 To: cvs@cocoon.apache.org From: danielf@apache.org X-Mailer: svnmailer-1.0.6 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 @@ + + + cocoon-blocks-fw + org.apache.cocoon + 1.0-SNAPSHOT + + 4.0.0 + org.apache.cocoon + cocoon-blocks-fw-osgi-impl + jar + 1.0-SNAPSHOT + Blocks Framework OSGi + + + junit + junit + 3.8.1 + test + + + 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