You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/08/16 16:13:28 UTC
svn commit: r1514720 - in /sling/whiteboard/bdelacretaz:
bdelacretaz-oak-server/
bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/
it-repository/ oak-launchpad/
Author: bdelacretaz
Date: Fri Aug 16 14:13:27 2013
New Revision: 1514720
URL: http://svn.apache.org/r1514720
Log:
SLING-2788 use NodeStore for persistence
Added:
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java (with props)
Modified:
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java
sling/whiteboard/bdelacretaz/it-repository/ (props changed)
sling/whiteboard/bdelacretaz/oak-launchpad/ (props changed)
Modified: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml?rev=1514720&r1=1514719&r2=1514720&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml (original)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml Fri Aug 16 14:13:27 2013
@@ -59,6 +59,9 @@
org.apache.jackrabbit.oak.security.user;resolution:=optional,
*
</Import-Package>
+ <Bundle-Activator>
+ org.apache.sling.oak.server.Activator
+ </Bundle-Activator>
<Private-Package>
org.apache.sling.oak.server.*
</Private-Package>
Added: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java?rev=1514720&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java (added)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java Fri Aug 16 14:13:27 2013
@@ -0,0 +1,77 @@
+/*
+ * 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 SF 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.sling.oak.server;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Activator implements BundleActivator {
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ ensureNodeStoreConfig(context);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ }
+
+ /** Create a config for the Oak SegmentNodeStore unless we already have one */
+ private void ensureNodeStoreConfig(BundleContext context) throws Exception {
+ final ServiceReference ref = context.getServiceReference(ConfigurationAdmin.class.getName());
+ if(ref == null) {
+ log.error("verifyConfiguration: Failed to get ConfigurationAdmin ServiceReference");
+ }
+ final ConfigurationAdmin ca = (ConfigurationAdmin)context.getService(ref);
+ if (ca == null) {
+ log.error("verifyConfiguration: Failed to get ConfigurationAdmin");
+ return;
+ }
+
+ final String nodeStoreServicePid = "org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService";
+
+ // Nothing to do if we already have a config
+ final Configuration[] cfgs = ca.listConfigurations("("
+ + ConfigurationAdmin.SERVICE_FACTORYPID + "="
+ + nodeStoreServicePid+ ")");
+ if (cfgs != null && cfgs.length > 0) {
+ log.info("verifyConfiguration: {} Configurations available for {}, nothing to do",
+ cfgs.length, nodeStoreServicePid);
+ return;
+ }
+
+ // Else create a default NodeStore config
+ final Hashtable<String, String> props = new Hashtable<String, String>();
+ props.put("name", "Default NodeStore config from the oak-server bundle");
+ props.put("directory", "oak-server-default-NodeStore");
+ Configuration config = ca.getConfiguration(nodeStoreServicePid);
+ config.setBundleLocation(null);
+ config.update(props);
+ log.info("Created default NodeStore config {}, properties={}", config.getPid(), props);
+ }
+
+}
\ No newline at end of file
Propchange: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/Activator.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Modified: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java?rev=1514720&r1=1514719&r2=1514720&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java (original)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java Fri Aug 16 14:13:27 2013
@@ -27,10 +27,13 @@ import javax.jcr.SimpleCredentials;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.jcr.Jcr;
import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.jcr.base.AbstractNamespaceMappingRepository;
import org.osgi.service.component.ComponentContext;
@@ -46,12 +49,15 @@ public class SlingRepositoryImpl extends
private Repository oakRepository;
+ @Reference
+ private NodeStore nodeStore;
+
@Activate
protected void activate(ComponentContext ctx) {
final SecurityProvider sp = new OpenSecurityProvider();
// TODO barebones setup for now...might not provide much functionality.
// TODO for a simple config (tar persistence) we could use the SegmentNodeStoreService
- oakRepository = new Jcr().with(sp).createRepository();
+ oakRepository = new Jcr(new Oak(nodeStore)).with(sp).createRepository();
}
@Override
Propchange: sling/whiteboard/bdelacretaz/it-repository/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Aug 16 14:13:27 2013
@@ -12,4 +12,4 @@ derby.log
.classpath
.externalToolBuilders
maven-eclipse.xml
-
+oak-server-default-NodeStore
Propchange: sling/whiteboard/bdelacretaz/oak-launchpad/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Aug 16 14:13:27 2013
@@ -12,5 +12,4 @@ derby.log
.classpath
.externalToolBuilders
maven-eclipse.xml
-
-
+oak-server-default-NodeStore