diff --git a/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/adapters/ISimpleOrderedMap.java b/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/adapters/ISimpleOrderedMap.java
index 8485f9a91..40366775f 100644
--- a/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/adapters/ISimpleOrderedMap.java
+++ b/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/adapters/ISimpleOrderedMap.java
@@ -1,6 +1,29 @@
+/*
+ * Copyright (C) 2014 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
package org.alfresco.solr.adapters;
+/**
+ * The reason we have this interface is so that lucene-free dependent classes can be dependent on ISimpleOrderedMap instead of the
+ * lucene-version-specific SimpleOrderedMap.
+ * @author Ahmed Owian
+ */
public interface ISimpleOrderedMap
{
diff --git a/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/client/SOLRAPIClientFactory.java b/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/client/SOLRAPIClientFactory.java
index 482783ce3..463d1a4c2 100644
--- a/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/client/SOLRAPIClientFactory.java
+++ b/search-services/alfresco-solrclient-lib/source/java/org/alfresco/solr/client/SOLRAPIClientFactory.java
@@ -16,6 +16,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see .
*/
+
package org.alfresco.solr.client;
import java.util.HashMap;
@@ -32,7 +33,8 @@ import org.alfresco.repo.dictionary.NamespaceDAO;
import org.alfresco.service.cmr.dictionary.DictionaryService;
/**
- * This factory encapsulates the creation of a SOLRAPIClient and the management of that resource.
+ * This factory encapsulates the creation of a SOLRAPIClient and the management of that resource.
+ *
* @author Ahmed Owian
*/
public class SOLRAPIClientFactory
@@ -41,14 +43,14 @@ public class SOLRAPIClientFactory
* Pool of cached client resources keyed on alfresco instances
*/
private static Map clientsPerAlfresco = new HashMap<>();
-
+
// encryption related parameters
private String secureCommsType; // "none", "https"
private String keyStoreType;
private String keyStoreProvider;
private String passwordFileLocation;
private String keyStoreLocation;
-
+
// ssl
private String sslKeyStoreType;
private String sslKeyStoreProvider;
@@ -62,14 +64,15 @@ public class SOLRAPIClientFactory
private int alfrescoPort;
private int alfrescoPortSSL;
private String baseUrl;
-
+
// http client
private int maxTotalConnections = 40;
private int maxHostConnections = 40;
private int socketTimeout = 120000;
-
+
/**
* Gets the client resource from the pool.
+ *
* @param alfrescoHost
* @param alfrescoPort
* @param alfrescoPortSSL
@@ -83,6 +86,7 @@ public class SOLRAPIClientFactory
/**
* Constructs a key to identify a unique alfresco instance to which the client will connect.
+ *
* @param alfrescoHost
* @param alfrescoPort
* @param alfrescoPortSSL
@@ -92,9 +96,10 @@ public class SOLRAPIClientFactory
{
return alfrescoHost + alfrescoPort + alfrescoPortSSL;
}
-
+
/**
* Sets the client in the resource pool.
+ *
* @param alfrescoHost
* @param alfrescoPort
* @param alfrescoPortSSL
@@ -105,21 +110,23 @@ public class SOLRAPIClientFactory
String key = constructKey(alfrescoHost, alfrescoPort, alfrescoPortSSL);
clientsPerAlfresco.put(key, client);
}
-
+
/**
* Creates the SOLRAPIClient or gets it from a pool
+ *
* @param props solrcore.properties in the /conf directory
* @param keyResourceLoader reads encryption key resources
* @param dictionaryService represents the Repository Data Dictionary
* @param namespaceDAO allows retrieving and creating Namespace definitions
* @return an instance of SOLRAPIClient
*/
- public SOLRAPIClient getSOLRAPIClient(Properties props, KeyResourceLoader keyResourceLoader, DictionaryService dictionaryService, NamespaceDAO namespaceDAO)
+ public SOLRAPIClient getSOLRAPIClient(Properties props, KeyResourceLoader keyResourceLoader,
+ DictionaryService dictionaryService, NamespaceDAO namespaceDAO)
{
alfrescoHost = props.getProperty("alfresco.host", "localhost");
alfrescoPort = Integer.parseInt(props.getProperty("alfresco.port", "8080"));
alfrescoPortSSL = Integer.parseInt(props.getProperty("alfresco.port.ssl", "8443"));
-
+
SOLRAPIClient client = getCachedClient(alfrescoHost, alfrescoPort, alfrescoPortSSL);
if (client == null)
{
@@ -130,35 +137,43 @@ public class SOLRAPIClientFactory
keyStoreLocation = props.getProperty("alfresco.encryption.keystore.location");
sslKeyStoreType = props.getProperty("alfresco.encryption.ssl.keystore.type");
sslKeyStoreProvider = props.getProperty("alfresco.encryption.ssl.keystore.provider", "");
- sslKeyStoreLocation = props.getProperty("alfresco.encryption.ssl.keystore.location", "ssl.repo.client.keystore");
- sslKeyStorePasswordFileLocation = props.getProperty("alfresco.encryption.ssl.keystore.passwordFileLocation", "ssl-keystore-passwords.properties");
+ sslKeyStoreLocation = props.getProperty("alfresco.encryption.ssl.keystore.location",
+ "ssl.repo.client.keystore");
+ sslKeyStorePasswordFileLocation = props.getProperty(
+ "alfresco.encryption.ssl.keystore.passwordFileLocation", "ssl-keystore-passwords.properties");
sslTrustStoreType = props.getProperty("alfresco.encryption.ssl.truststore.type", "JCEKS");
sslTrustStoreProvider = props.getProperty("alfresco.encryption.ssl.truststore.provider", "");
- sslTrustStoreLocation = props.getProperty("alfresco.encryption.ssl.truststore.location", "ssl.repo.client.truststore");
- sslTrustStorePasswordFileLocation = props.getProperty("alfresco.encryption.ssl.truststore.passwordFileLocation", "ssl-truststore-passwords.properties");
+ sslTrustStoreLocation = props.getProperty("alfresco.encryption.ssl.truststore.location",
+ "ssl.repo.client.truststore");
+ sslTrustStorePasswordFileLocation = props.getProperty(
+ "alfresco.encryption.ssl.truststore.passwordFileLocation",
+ "ssl-truststore-passwords.properties");
secureCommsType = props.getProperty("alfresco.secureComms", "https");
maxTotalConnections = Integer.parseInt(props.getProperty("alfresco.maxTotalConnections", "40"));
maxHostConnections = Integer.parseInt(props.getProperty("alfresco.maxHostConnections", "40"));
socketTimeout = Integer.parseInt(props.getProperty("alfresco.socketTimeout", "0"));
-
+
client = new SOLRAPIClient(getRepoClient(keyResourceLoader), dictionaryService, namespaceDAO);
setCachedClient(alfrescoHost, alfrescoPort, alfrescoPortSSL, client);
}
-
- return client;
+
+ return client;
}
-
+
protected AlfrescoHttpClient getRepoClient(KeyResourceLoader keyResourceLoader)
{
// TODO i18n
- KeyStoreParameters keyStoreParameters = new KeyStoreParameters("SSL Key Store", sslKeyStoreType, sslKeyStoreProvider, sslKeyStorePasswordFileLocation, sslKeyStoreLocation);
- KeyStoreParameters trustStoreParameters = new KeyStoreParameters("SSL Trust Store", sslTrustStoreType, sslTrustStoreProvider, sslTrustStorePasswordFileLocation, sslTrustStoreLocation);
- SSLEncryptionParameters sslEncryptionParameters = new SSLEncryptionParameters(keyStoreParameters, trustStoreParameters);
-
+ KeyStoreParameters keyStoreParameters = new KeyStoreParameters("SSL Key Store", sslKeyStoreType,
+ sslKeyStoreProvider, sslKeyStorePasswordFileLocation, sslKeyStoreLocation);
+ KeyStoreParameters trustStoreParameters = new KeyStoreParameters("SSL Trust Store", sslTrustStoreType,
+ sslTrustStoreProvider, sslTrustStorePasswordFileLocation, sslTrustStoreLocation);
+ SSLEncryptionParameters sslEncryptionParameters = new SSLEncryptionParameters(keyStoreParameters,
+ trustStoreParameters);
+
HttpClientFactory httpClientFactory = new HttpClientFactory(SecureCommsType.getType(secureCommsType),
- sslEncryptionParameters, keyResourceLoader, null, null, alfrescoHost, alfrescoPort, alfrescoPortSSL, maxTotalConnections, maxHostConnections, socketTimeout);
- // TODO need to make port configurable depending on secure comms, or just make redirects
- // work
+ sslEncryptionParameters, keyResourceLoader, null, null, alfrescoHost, alfrescoPort,
+ alfrescoPortSSL, maxTotalConnections, maxHostConnections, socketTimeout);
+ // TODO need to make port configurable depending on secure comms, or just make redirects work
AlfrescoHttpClient repoClient = httpClientFactory.getRepoClient(alfrescoHost, alfrescoPortSSL);
repoClient.setBaseUrl(baseUrl);
return repoClient;