You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2012/04/19 14:43:25 UTC

svn commit: r1327929 - in /tika/trunk: tika-bundle/ tika-bundle/src/test/java/org/apache/tika/bundle/ tika-core/ tika-core/src/main/java/org/apache/tika/config/ tika-parsers/ tika-parsers/src/main/java/org/apache/tika/parser/internal/

Author: jukka
Date: Thu Apr 19 12:43:24 2012
New Revision: 1327929

URL: http://svn.apache.org/viewvc?rev=1327929&view=rev
Log:
TIKA-896: OSGi deployment without declarative services

Patch by Joerg Ehrlich.

Modified:
    tika/trunk/tika-bundle/pom.xml
    tika/trunk/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
    tika/trunk/tika-core/pom.xml
    tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaActivator.java
    tika/trunk/tika-parsers/pom.xml
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiDetector.java
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiParser.java

Modified: tika/trunk/tika-bundle/pom.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-bundle/pom.xml?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-bundle/pom.xml (original)
+++ tika/trunk/tika-bundle/pom.xml Thu Apr 19 12:43:24 2012
@@ -109,6 +109,9 @@
         <extensions>true</extensions>
         <configuration>
           <instructions>
+            <Bundle-Activator>
+              org.apache.tika.parser.internal.TikaActivator
+            </Bundle-Activator>
             <Embed-Dependency>
               tika-parsers;inline=true,
               commons-compress, commons-codec,
@@ -135,9 +138,6 @@
               !org.apache.tika.parser.external,
               org.apache.tika.parser.*
             </Export-Package>
-            <Service-Component>
-              OSGI-INF/serviceComponents.xml
-            </Service-Component>
           </instructions>
         </configuration>
       </plugin>

Modified: tika/trunk/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java (original)
+++ tika/trunk/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java Thu Apr 19 12:43:24 2012
@@ -20,7 +20,6 @@ import static junit.framework.Assert.ass
 import static junit.framework.Assert.assertTrue;
 import static org.ops4j.pax.exam.CoreOptions.bundle;
 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -52,7 +51,6 @@ public class BundleIT {
         File base = new File(TARGET, "test-bundles");
         return CoreOptions.options(
                 junitBundles(),
-                mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.6.0"),
                 bundle(new File(base, "tika-core.jar").toURL().toURI().toString()),
                 bundle(new File(base, "tika-bundle.jar").toURL().toURI().toString()));
     }

Modified: tika/trunk/tika-core/pom.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/pom.xml?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-core/pom.xml (original)
+++ tika/trunk/tika-core/pom.xml Thu Apr 19 12:43:24 2012
@@ -44,6 +44,13 @@
       <optional>true</optional>
     </dependency>
     <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.compendium</artifactId>
+      <version>4.0.0</version>
+      <scope>provided</scope>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
       <groupId>biz.aQute</groupId>
       <artifactId>bndlib</artifactId>
       <scope>provided</scope>
@@ -92,6 +99,7 @@
             </goals>
             <configuration>
               <excludes>
+                <exlude>org/apache/tika/config/TikaActivator</exlude>
                 <exlude>org/apache/tika/metadata/Property$PropertyType</exlude>
                 <exlude>org/apache/tika/metadata/Property$ValueType</exlude>
                 <exlude>org/apache/tika/metadata/MSOffice</exlude>

Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaActivator.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaActivator.java?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaActivator.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaActivator.java Thu Apr 19 12:43:24 2012
@@ -16,11 +16,13 @@
  */
 package org.apache.tika.config;
 
+import org.apache.tika.detect.Detector;
+import org.apache.tika.parser.Parser;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceListener;
 import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
 /**
  * Bundle activator that adjust the class loading mechanism of the
@@ -33,36 +35,42 @@ import org.osgi.framework.ServiceReferen
  *
  * @since Apache Tika 0.9
  */
-public class TikaActivator
-        implements BundleActivator, ServiceListener {
+public class TikaActivator implements BundleActivator, ServiceTrackerCustomizer {
 
-    private BundleContext bundleContext;
+	private ServiceTracker detectorTracker;
 
+	private ServiceTracker parserTracker;
+
+	private BundleContext bundleContext;
     //-----------------------------------------------------< BundleActivator >
 
-    public void start(BundleContext context) throws Exception {
-        bundleContext = context;
-        bundleContext.addServiceListener(this,
-                "(|(objectClass=org.apache.tika.detect.Detector)"
-                + "(objectClass=org.apache.tika.parser.Parser))");
+    public void start(final BundleContext context) throws Exception {
+    	bundleContext = context;
+
+    	detectorTracker = new ServiceTracker(context, Detector.class.getName(), this);
+        parserTracker = new ServiceTracker(context, Parser.class.getName(), this);
+
+        detectorTracker.open();
+        parserTracker.open();
     }
 
     public void stop(BundleContext context) throws Exception {
-        bundleContext.removeServiceListener(this);
+    	parserTracker.close();
+    	detectorTracker.close();
     }
 
-    //-----------------------------------------------------< ServiceListener >
-
-    public synchronized void serviceChanged(ServiceEvent event) {
-        if (event.getType() == ServiceEvent.REGISTERED) {
-            ServiceReference reference = event.getServiceReference();
-            Object service = bundleContext.getService(reference);
-            ServiceLoader.addService(reference, service);
-        } else if (event.getType() == ServiceEvent.UNREGISTERING) {
-            ServiceReference reference = event.getServiceReference();
-            ServiceLoader.removeService(reference);
-            bundleContext.ungetService(reference);
-        }
-    }
+	public Object addingService(ServiceReference reference) {
+        Object service = bundleContext.getService(reference);
+        ServiceLoader.addService(reference, service);
+		return service;
+	}
+
+	public void modifiedService(ServiceReference reference, Object service) {
+	}
+
+	public void removedService(ServiceReference reference, Object service) {
+        ServiceLoader.removeService(reference);
+        bundleContext.ungetService(reference);
+	}
 
 }

Modified: tika/trunk/tika-parsers/pom.xml
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/pom.xml?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-parsers/pom.xml (original)
+++ tika/trunk/tika-parsers/pom.xml Thu Apr 19 12:43:24 2012
@@ -42,6 +42,15 @@
   </properties>
 
   <dependencies>
+    <!-- Optional OSGi dependency, used only when running within OSGi -->
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>4.0.0</version>
+      <scope>provided</scope>
+      <optional>true</optional>
+    </dependency>
+
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>tika-core</artifactId>
@@ -201,6 +210,9 @@
         <configuration>
           <instructions>
             <Bundle-DocURL>${project.url}</Bundle-DocURL>
+            <Bundle-Activator>
+              org.apache.tika.parser.internal.TikaActivator
+            </Bundle-Activator>
             <Import-Package>
                 org.w3c.dom,
                 org.apache.tika.*,
@@ -219,19 +231,6 @@
           </excludes>
         </configuration>
       </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-scr-plugin</artifactId>
-        <version>1.7.2</version>
-        <executions>
-          <execution>
-            <id>generate-scr-scrdescriptor</id>
-            <goals>
-              <goal>scr</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
     </plugins>
 
     <pluginManagement>

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiDetector.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiDetector.java?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiDetector.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiDetector.java Thu Apr 19 12:43:24 2012
@@ -16,12 +16,8 @@
  */
 package org.apache.tika.parser.internal;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.tika.detect.DefaultDetector;
-import org.apache.tika.detect.Detector;
 
-@Component @Service(Detector.class)
 public class OSGiDetector extends DefaultDetector {
 
     /** Serial version UID */

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiParser.java?rev=1327929&r1=1327928&r2=1327929&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiParser.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/internal/OSGiParser.java Thu Apr 19 12:43:24 2012
@@ -16,12 +16,8 @@
  */
 package org.apache.tika.parser.internal;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.tika.parser.DefaultParser;
-import org.apache.tika.parser.Parser;
 
-@Component @Service(Parser.class)
 public class OSGiParser extends DefaultParser {
 
     /** Serial version UID */