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 to...@apache.org on 2013/04/05 14:41:01 UTC

svn commit: r1464955 - in /jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded: ./ osgi/

Author: tommaso
Date: Fri Apr  5 12:41:00 2013
New Revision: 1464955

URL: http://svn.apache.org/r1464955
Log:
OAK-735 - services moved to osgi package (not exported)

Added:
    jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/
    jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/EmbeddedSolrProviderService.java   (with props)
    jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/OsgiSolrServerConfigurationProvider.java   (with props)
Removed:
    jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrProviderService.java
    jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/OsgiSolrServerConfigurationProvider.java

Added: jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/EmbeddedSolrProviderService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/EmbeddedSolrProviderService.java?rev=1464955&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/EmbeddedSolrProviderService.java (added)
+++ jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/EmbeddedSolrProviderService.java Fri Apr  5 12:41:00 2013
@@ -0,0 +1,85 @@
+/*
+ * 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.plugins.index.solr.embedded.osgi;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.felix.scr.annotations.Services;
+import org.apache.jackrabbit.oak.plugins.index.solr.OakSolrConfiguration;
+import org.apache.jackrabbit.oak.plugins.index.solr.OakSolrConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.SolrServerProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.DefaultOakSolrProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.EmbeddedSolrConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.SolrServerConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.UpToDateNodeStateConfiguration;
+import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.solr.client.solrj.SolrServer;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * OSGi service for the embedded Solr server module.
+ */
+@Component
+@Services({
+        @Service(value = SolrServerProvider.class),
+        @Service(value = OakSolrConfigurationProvider.class)
+})
+public class EmbeddedSolrProviderService implements SolrServerProvider, OakSolrConfigurationProvider {
+
+
+    @Property(value = "/oak:index/solrIdx", name = "configuration path",
+            description = "path to node holding Solr configuration")
+    private static final String CONFIGURATION_PATH = "solr.configuration.node.path";
+
+    @Reference
+    private NodeStore nodeStore;
+
+    @Reference
+    private SolrServerConfigurationProvider solrServerConfigurationProvider;
+
+    private OakSolrConfigurationProvider oakSolrConfigurationProvider;
+
+    private SolrServerProvider solrServerProvider;
+
+    @Activate
+    public void activate(ComponentContext context) throws Exception {
+        try {
+            // try reading configuration from the configured repository path
+            UpToDateNodeStateConfiguration nodeStateConfiguration = new UpToDateNodeStateConfiguration(nodeStore, String.valueOf(
+                    context.getProperties().get(CONFIGURATION_PATH)));
+            solrServerProvider = new DefaultOakSolrProvider(nodeStateConfiguration.getSolrServerConfiguration());
+            oakSolrConfigurationProvider = new EmbeddedSolrConfigurationProvider(nodeStateConfiguration);
+        } catch (Exception e) {
+            // use the default config and the OSGi based server configuration
+            solrServerProvider = new DefaultOakSolrProvider(solrServerConfigurationProvider.getSolrServerConfiguration());
+            oakSolrConfigurationProvider = new EmbeddedSolrConfigurationProvider();
+        }
+    }
+
+    @Override
+    public OakSolrConfiguration getConfiguration() {
+        return oakSolrConfigurationProvider.getConfiguration();
+    }
+
+    @Override
+    public SolrServer getSolrServer() throws Exception {
+        return solrServerProvider.getSolrServer();
+    }
+}

Propchange: jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/EmbeddedSolrProviderService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/OsgiSolrServerConfigurationProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/OsgiSolrServerConfigurationProvider.java?rev=1464955&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/OsgiSolrServerConfigurationProvider.java (added)
+++ jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/OsgiSolrServerConfigurationProvider.java Fri Apr  5 12:41:00 2013
@@ -0,0 +1,94 @@
+/*
+ * 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.plugins.index.solr.embedded.osgi;
+
+import java.io.File;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.SolrServerConfiguration;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.SolrServerConfigurationDefaults;
+import org.apache.jackrabbit.oak.plugins.index.solr.embedded.SolrServerConfigurationProvider;
+import org.apache.solr.client.solrj.SolrServer;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * An OSGi service {@link SolrServerConfigurationProvider}
+ */
+@Component
+@Service(value = SolrServerConfigurationProvider.class)
+public class OsgiSolrServerConfigurationProvider implements SolrServerConfigurationProvider {
+
+    @Property(value = SolrServerConfigurationDefaults.SOLR_HOME_PATH)
+    private static final String SOLR_HOME_PATH = "solr.home.path";
+
+    @Property(value = SolrServerConfigurationDefaults.CORE_NAME)
+    private static final String SOLR_CORE_NAME = "solr.core.name";
+
+    @Property(value = SolrServerConfigurationDefaults.SOLR_CONFIG_PATH)
+    private static final String SOLR_CONFIG_FILE = "solr.config.path";
+
+    @Property(value = SolrServerConfigurationDefaults.HTTP_PORT)
+    private static final String SOLR_HTTP_PORT = "solr.http.port";
+
+    private static SolrServer solrServer;
+
+    private String solrHome;
+    private String solrConfigFile;
+    private String solrCoreName;
+
+    private Integer solrHttpPort;
+
+    private SolrServerConfiguration solrServerConfiguration;
+
+
+    @Activate
+    protected void activate(ComponentContext componentContext) throws Exception {
+        solrHome = String.valueOf(componentContext.getProperties().get(SOLR_HOME_PATH));
+        File file = new File(solrHome);
+        if (!file.exists()) {
+            assert file.createNewFile();
+        }
+        solrConfigFile = String.valueOf(componentContext.getProperties().get(SOLR_CONFIG_FILE));
+        solrCoreName= String.valueOf(componentContext.getProperties().get(SOLR_CORE_NAME));
+
+        solrHttpPort = Integer.valueOf(String.valueOf(componentContext.getProperties().get(SOLR_HTTP_PORT)));
+        // TODO : add the possibility to inject solrconfig and schema files
+
+        solrServerConfiguration = new SolrServerConfiguration(solrHome, solrConfigFile, solrCoreName);
+    }
+
+    @Deactivate
+    protected void deactivate() throws Exception {
+        solrHome = null;
+        solrHttpPort = null;
+        solrConfigFile = null;
+        solrCoreName = null;
+        if (solrServer != null) {
+            solrServer.shutdown();
+            solrServer = null;
+        }
+    }
+
+    @Override
+    public SolrServerConfiguration getSolrServerConfiguration() {
+        return solrServerConfiguration;
+    }
+}

Propchange: jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/osgi/OsgiSolrServerConfigurationProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native