You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/04/25 15:45:02 UTC
svn commit: r1330292 - in /jackrabbit/oak/trunk: oak-core/
oak-core/src/main/java/org/apache/jackrabbit/oak/core/
oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/
oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/ oak-jcr/
oak-jcr/src/main...
Author: jukka
Date: Wed Apr 25 13:45:01 2012
New Revision: 1330292
URL: http://svn.apache.org/viewvc?rev=1330292&view=rev
Log:
OAK-67: Initial OSGi Bundle Setup
Add basic OSGi services for mk, core and jcr. WIP...
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/osgi/
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/osgi/Activator.java
Modified:
jackrabbit/oak/trunk/oak-core/pom.xml
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentRepository.java
jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/GlobalContext.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
jackrabbit/oak/trunk/oak-mk/pom.xml
jackrabbit/oak/trunk/oak-parent/pom.xml
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java
Modified: jackrabbit/oak/trunk/oak-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-core/pom.xml Wed Apr 25 13:45:01 2012
@@ -45,6 +45,9 @@
org.apache.jackrabbit.oak.namepath,
org.apache.jackrabbit.oak.plugins.name
</Export-Package>
+ <Bundle-Activator>
+ org.apache.jackrabbit.oak.osgi.Activator
+ </Bundle-Activator>
</instructions>
</configuration>
</plugin>
@@ -52,6 +55,19 @@
</build>
<dependencies>
+ <!-- Optional OSGi dependencies, used only when running within OSGi -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
<dependency>
<groupId>biz.aQute</groupId>
<artifactId>bndlib</artifactId>
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentRepository.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentRepository.java?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentRepository.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentRepository.java Wed Apr 25 13:45:01 2012
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.core;
import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.api.ContentRepository;
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.api.CoreValueFactory;
@@ -50,6 +51,14 @@ public class KernelContentRepository imp
private final QueryEngine queryEngine;
private final KernelNodeStore nodeStore;
+ /**
+ * Utility constructor that creates a new in-memory repository for use
+ * mostly in test cases.
+ */
+ public KernelContentRepository() {
+ this(new MicroKernelImpl());
+ }
+
public KernelContentRepository(MicroKernel mk) {
microKernel = mk;
valueFactory = new CoreValueFactoryImpl(microKernel);
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java?rev=1330292&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java Wed Apr 25 13:45:01 2012
@@ -0,0 +1,86 @@
+/*
+ * 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.jackrabbit.oak.osgi;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.core.KernelContentRepository;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class Activator implements BundleActivator, ServiceTrackerCustomizer {
+
+ private BundleContext context;
+
+ private ServiceTracker tracker;
+
+ private final Map<ServiceReference, ServiceRegistration> services =
+ new HashMap<ServiceReference, ServiceRegistration>();
+
+ //-----------------------------------------------------< BundleActivator >--
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ context = bundleContext;
+ tracker = new ServiceTracker(
+ context, MicroKernel.class.getName(), this);
+ tracker.open();
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ tracker.open();
+ }
+
+ //--------------------------------------------< ServiceTrackerCustomizer >--
+
+ @Override
+ public Object addingService(ServiceReference reference) {
+ Object service = context.getService(reference);
+ if (service instanceof MicroKernel) {
+ MicroKernel kernel = (MicroKernel) service;
+ services.put(reference, context.registerService(
+ ContentRepository.class.getName(),
+ new KernelContentRepository(kernel),
+ new Properties()));
+ return service;
+ } else {
+ context.ungetService(reference);
+ return null;
+ }
+ }
+
+ @Override
+ public void modifiedService(ServiceReference reference, Object service) {
+ }
+
+ @Override
+ public void removedService(ServiceReference reference, Object service) {
+ ServiceRegistration registration = services.get(reference);
+ registration.unregister();
+ context.ungetService(reference);
+ }
+
+}
Modified: jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java (original)
+++ jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java Wed Apr 25 13:45:01 2012
@@ -23,6 +23,10 @@ import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
+import javax.jcr.Repository;
+
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.oak.api.ContentRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.CoreOptions;
@@ -30,8 +34,10 @@ import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
@RunWith(JUnit4TestRunner.class)
+@SuppressWarnings({ "rawtypes", "unchecked" })
public class OSGiIT {
private final File TARGET = new File("target");
@@ -53,14 +59,45 @@ public class OSGiIT {
@Test
public void testMicroKernel(BundleContext bc) throws Exception {
+ ServiceReference reference =
+ bc.getServiceReference(MicroKernel.class.getName());
+
+ Object service = bc.getService(reference);
+ assert service instanceof MicroKernel;
+
+ MicroKernel kernel = (MicroKernel) service;
+ System.out.println(kernel);
+ System.out.println(kernel.getHeadRevision());
+
+ bc.ungetService(reference);
}
@Test
- public void testOakRepository(BundleContext bc) throws Exception {
+ public void testContentRepository(BundleContext bc) throws Exception {
+ ServiceReference reference =
+ bc.getServiceReference(ContentRepository.class.getName());
+
+ Object service = bc.getService(reference);
+ assert service instanceof ContentRepository;
+
+ ContentRepository repository = (ContentRepository) service;
+ System.out.println(repository);
+
+ bc.ungetService(reference);
}
@Test
- public void testJcrRepository(BundleContext bc) throws Exception {
+ public void testRepository(BundleContext bc) throws Exception {
+ ServiceReference reference =
+ bc.getServiceReference(Repository.class.getName());
+
+ Object service = bc.getService(reference);
+ assert service instanceof ContentRepository;
+
+ Repository repository = (Repository) service;
+ System.out.println(repository);
+
+ bc.ungetService(reference);
}
}
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Wed Apr 25 13:45:01 2012
@@ -41,6 +41,9 @@
<Export-Package>
!
</Export-Package>
+ <Bundle-Activator>
+ org.apache.jackrabbit.oak.jcr.osgi.Activator
+ </Bundle-Activator>
</instructions>
</configuration>
</plugin>
@@ -48,6 +51,20 @@
</build>
<dependencies>
+ <!-- Optional OSGi dependencies, used only when running within OSGi -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+
<dependency>
<groupId>javax.jcr</groupId>
<artifactId>jcr</artifactId>
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/GlobalContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/GlobalContext.java?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/GlobalContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/GlobalContext.java Wed Apr 25 13:45:01 2012
@@ -19,16 +19,15 @@
package org.apache.jackrabbit.oak.jcr;
-import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.core.KernelContentRepository;
-import org.apache.jackrabbit.oak.jcr.util.Unchecked;
+import static java.text.MessageFormat.format;
-import javax.jcr.Repository;
import java.util.HashMap;
import java.util.Map;
-import static java.text.MessageFormat.format;
+import javax.jcr.Repository;
+
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.jcr.util.Unchecked;
/**
* Poor man's dependency injection
@@ -41,9 +40,10 @@ public class GlobalContext {
private final Map<Class<?>, Object> instances = new HashMap<Class<?>, Object>();
- public GlobalContext(MicroKernel mk) {
- put(ContentRepository.class, new KernelContentRepository(mk));
- put(Repository.class, new RepositoryImpl(this));
+ public GlobalContext(
+ Repository repository, ContentRepository contentRepository) {
+ put(Repository.class, repository);
+ put(ContentRepository.class, contentRepository);
}
public <T> T getInstance(Class<T> forClass) {
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java Wed Apr 25 13:45:01 2012
@@ -20,8 +20,6 @@ import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.RepositoryFactory;
-import org.apache.jackrabbit.mk.core.MicroKernelImpl;
-
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
@@ -52,8 +50,7 @@ public class OakRepositoryFactory implem
URI uri, Map<String, String> parameters)
throws RepositoryException {
// TODO correctly interpret uri
- GlobalContext context = new GlobalContext(new MicroKernelImpl());
- return context.getInstance(Repository.class);
+ return new RepositoryImpl();
}
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java Wed Apr 25 13:45:01 2012
@@ -17,9 +17,9 @@
package org.apache.jackrabbit.oak.jcr;
import org.apache.jackrabbit.commons.SimpleValueFactory;
-import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.core.KernelContentRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,8 +43,8 @@ public class RepositoryImpl implements R
private final GlobalContext context;
private final Descriptors descriptors = new Descriptors(new SimpleValueFactory());
- public RepositoryImpl(GlobalContext context) {
- this.context = context;
+ public RepositoryImpl(ContentRepository repository) {
+ this.context = new GlobalContext(this, repository);
}
/**
@@ -52,7 +52,7 @@ public class RepositoryImpl implements R
* mostly in test cases.
*/
public RepositoryImpl() throws RepositoryException {
- this(new GlobalContext(new MicroKernelImpl()));
+ this(new KernelContentRepository());
}
//---------------------------------------------------------< Repository >---
@@ -119,7 +119,6 @@ public class RepositoryImpl implements R
@Override
public Session login(Credentials credentials, String workspaceName) throws RepositoryException {
// TODO: needs complete refactoring
-
ContentRepository contentRepository = context.getInstance(ContentRepository.class);
try {
ContentSession contentSession = contentRepository.login(credentials, workspaceName);
Added: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java?rev=1330292&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java (added)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java Wed Apr 25 13:45:01 2012
@@ -0,0 +1,87 @@
+/*
+ * 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.jackrabbit.oak.jcr.osgi;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.jcr.Repository;
+
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.jcr.RepositoryImpl;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class Activator implements BundleActivator, ServiceTrackerCustomizer {
+
+ private BundleContext context;
+
+ private ServiceTracker tracker;
+
+ private final Map<ServiceReference, ServiceRegistration> services =
+ new HashMap<ServiceReference, ServiceRegistration>();
+
+ //-----------------------------------------------------< BundleActivator >--
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ context = bundleContext;
+ tracker = new ServiceTracker(
+ context, ContentRepository.class.getName(), this);
+ tracker.open();
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ tracker.open();
+ }
+
+ //--------------------------------------------< ServiceTrackerCustomizer >--
+
+ @Override
+ public Object addingService(ServiceReference reference) {
+ Object service = context.getService(reference);
+ if (service instanceof ContentRepository) {
+ ContentRepository repository = (ContentRepository) service;
+ services.put(reference, context.registerService(
+ Repository.class.getName(),
+ new RepositoryImpl(repository),
+ new Properties()));
+ return service;
+ } else {
+ context.ungetService(reference);
+ return null;
+ }
+ }
+
+ @Override
+ public void modifiedService(ServiceReference reference, Object service) {
+ }
+
+ @Override
+ public void removedService(ServiceReference reference, Object service) {
+ ServiceRegistration registration = services.get(reference);
+ registration.unregister();
+ context.ungetService(reference);
+ }
+
+}
Modified: jackrabbit/oak/trunk/oak-mk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/pom.xml?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-mk/pom.xml Wed Apr 25 13:45:01 2012
@@ -45,6 +45,9 @@
org.apache.jackrabbit.mk.core,
org.apache.jackrabbit.mk.blobs
</Export-Package>
+ <Bundle-Activator>
+ org.apache.jackrabbit.mk.osgi.Activator
+ </Bundle-Activator>
</instructions>
</configuration>
</plugin>
@@ -52,6 +55,13 @@
</build>
<dependencies>
+ <!-- Optional OSGi dependencies, used only when running within OSGi -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
<dependency>
<groupId>biz.aQute</groupId>
<artifactId>bndlib</artifactId>
Added: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/osgi/Activator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/osgi/Activator.java?rev=1330292&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/osgi/Activator.java (added)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/osgi/Activator.java Wed Apr 25 13:45:01 2012
@@ -0,0 +1,46 @@
+/*
+ * 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.jackrabbit.mk.osgi;
+
+import java.util.Properties;
+
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.core.MicroKernelImpl;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+public class Activator implements BundleActivator {
+
+ private ServiceRegistration registration;
+
+ //-----------------------------------------------------< BundleActivator >--
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ registration = context.registerService(
+ MicroKernel.class.getName(),
+ new MicroKernelImpl(),
+ new Properties());
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ registration.unregister();
+ }
+
+}
Modified: jackrabbit/oak/trunk/oak-parent/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-parent/pom.xml?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-parent/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-parent/pom.xml Wed Apr 25 13:45:01 2012
@@ -90,6 +90,16 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>4.0.0</version>
+ </dependency>
+ <dependency>
<groupId>biz.aQute</groupId>
<artifactId>bndlib</artifactId>
<version>1.50.0</version>
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java?rev=1330292&r1=1330291&r2=1330292&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java Wed Apr 25 13:45:01 2012
@@ -18,11 +18,11 @@ package org.apache.jackrabbit.oak.run;
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.core.MicroKernelImpl;
-import org.apache.jackrabbit.oak.jcr.GlobalContext;
import org.apache.jackrabbit.oak.jcr.RepositoryImpl;
import org.apache.jackrabbit.webdav.jcr.JCRWebdavServerServlet;
import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
import javax.servlet.ServletException;
class RepositoryServlet extends JCRWebdavServerServlet {
@@ -45,7 +45,11 @@ class RepositoryServlet extends JCRWebda
kernel = new MicroKernelImpl();
}
- repository = new RepositoryImpl(new GlobalContext(kernel));
+ try {
+ repository = new RepositoryImpl();
+ } catch (RepositoryException e) {
+ throw new ServletException("Could not start a repository", e);
+ }
super.init();
}