in connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java [192:392]
protected void getSession() throws ManifoldCFException {
if (poster == null) {
String updatePath = params.getParameter(SolrConfig.PARAM_UPDATEPATH);
if (updatePath == null || updatePath.length() == 0)
updatePath = "";
String removePath = params.getParameter(SolrConfig.PARAM_REMOVEPATH);
if (removePath == null || removePath.length() == 0)
removePath = "";
String statusPath = params.getParameter(SolrConfig.PARAM_STATUSPATH);
if (statusPath == null || statusPath.length() == 0)
statusPath = "";
idAttributeName = params.getParameter(SolrConfig.PARAM_IDFIELD);
if (idAttributeName == null || idAttributeName.length() == 0)
idAttributeName = "id";
originalSizeAttributeName = params.getParameter(SolrConfig.PARAM_ORIGINALSIZEFIELD);
if (originalSizeAttributeName == null || originalSizeAttributeName.length() == 0)
originalSizeAttributeName = null;
modifiedDateAttributeName = params.getParameter(SolrConfig.PARAM_MODIFIEDDATEFIELD);
if (modifiedDateAttributeName == null || modifiedDateAttributeName.length() == 0)
modifiedDateAttributeName = null;
createdDateAttributeName = params.getParameter(SolrConfig.PARAM_CREATEDDATEFIELD);
if (createdDateAttributeName == null || createdDateAttributeName.length() == 0)
createdDateAttributeName = null;
indexedDateAttributeName = params.getParameter(SolrConfig.PARAM_INDEXEDDATEFIELD);
if (indexedDateAttributeName == null || indexedDateAttributeName.length() == 0)
indexedDateAttributeName = null;
fileNameAttributeName = params.getParameter(SolrConfig.PARAM_FILENAMEFIELD);
if (fileNameAttributeName == null || fileNameAttributeName.length() == 0)
fileNameAttributeName = null;
mimeTypeAttributeName = params.getParameter(SolrConfig.PARAM_MIMETYPEFIELD);
if (mimeTypeAttributeName == null || mimeTypeAttributeName.length() == 0)
mimeTypeAttributeName = null;
contentAttributeName = params.getParameter(SolrConfig.PARAM_CONTENTFIELD);
if (contentAttributeName == null || contentAttributeName.length() == 0)
contentAttributeName = null;
final String useExtractUpdateHandlerValue = params.getParameter(SolrConfig.PARAM_EXTRACTUPDATE);
if (useExtractUpdateHandlerValue == null || useExtractUpdateHandlerValue.length() == 0)
useExtractUpdateHandler = true;
else
useExtractUpdateHandler = !useExtractUpdateHandlerValue.equals("false");
if (contentAttributeName == null && !useExtractUpdateHandler)
throw new ManifoldCFException("Content attribute name required for non-extract-update indexing");
String commits = params.getParameter(SolrConfig.PARAM_COMMITS);
if (commits == null || commits.length() == 0)
commits = "true";
doCommits = commits.equals("true");
String commitWithin = params.getParameter(SolrConfig.PARAM_COMMITWITHIN);
if (commitWithin == null || commitWithin.length() == 0)
commitWithin = null;
final String docMax = params.getParameter(SolrConfig.PARAM_MAXLENGTH);
if (docMax == null || docMax.length() == 0)
maxDocumentLength = null;
else
maxDocumentLength = new Long(docMax);
if (maxDocumentLength == null && !useExtractUpdateHandler)
throw new ManifoldCFException("Maximum document length required for non-extract-update indexing");
includedMimeTypesString = params.getParameter(SolrConfig.PARAM_INCLUDEDMIMETYPES);
if (includedMimeTypesString == null || includedMimeTypesString.length() == 0) {
includedMimeTypesString = null;
includedMimeTypes = null;
} else {
// Parse the included mime types
includedMimeTypes = parseMimeTypes(includedMimeTypesString);
if (includedMimeTypes.size() == 0) {
includedMimeTypesString = null;
includedMimeTypes = null;
}
}
excludedMimeTypesString = params.getParameter(SolrConfig.PARAM_EXCLUDEDMIMETYPES);
if (excludedMimeTypesString == null || excludedMimeTypesString.length() == 0) {
excludedMimeTypesString = null;
excludedMimeTypes = null;
} else {
// Parse the included mime types
excludedMimeTypes = parseMimeTypes(excludedMimeTypesString);
if (excludedMimeTypes.size() == 0) {
excludedMimeTypesString = null;
excludedMimeTypes = null;
}
}
// Now, initialize Solr-j
String solrType = params.getParameter(SolrConfig.PARAM_SOLR_TYPE);
if (solrType == null)
solrType = SolrConfig.SOLR_TYPE_STANDARD;
if (solrType.equals(SolrConfig.SOLR_TYPE_STANDARD)) {
final String userID = params.getParameter(SolrConfig.PARAM_USERID);
final String password = params.getObfuscatedParameter(SolrConfig.PARAM_PASSWORD);
final String realm = params.getParameter(SolrConfig.PARAM_REALM);
final String keystoreData = params.getParameter(SolrConfig.PARAM_KEYSTORE);
IKeystoreManager keystoreManager;
if (keystoreData != null)
keystoreManager = KeystoreManagerFactory.make("", keystoreData);
else
keystoreManager = null;
final String protocol = params.getParameter(SolrConfig.PARAM_PROTOCOL);
if (protocol == null || protocol.length() == 0)
throw new ManifoldCFException("Missing parameter: " + SolrConfig.PARAM_PROTOCOL);
final String server = params.getParameter(SolrConfig.PARAM_SERVER);
if (server == null || server.length() == 0)
throw new ManifoldCFException("Missing parameter: " + SolrConfig.PARAM_SERVER);
String port = params.getParameter(SolrConfig.PARAM_PORT);
if (port == null || port.length() == 0)
port = "80";
String webapp = params.getParameter(SolrConfig.PARAM_WEBAPPNAME);
if (webapp != null && webapp.length() == 0)
webapp = null;
String core = params.getParameter(SolrConfig.PARAM_CORE);
if (core != null && core.length() == 0)
core = "collection1";
// Pick up timeouts
String socketTimeoutString = params.getParameter(SolrConfig.PARAM_SOCKET_TIMEOUT);
if (socketTimeoutString == null)
socketTimeoutString = "900";
String connectTimeoutString = params.getParameter(SolrConfig.PARAM_CONNECTION_TIMEOUT);
if (connectTimeoutString == null)
connectTimeoutString = "60";
collectionName = null;
try {
final int socketTimeout = Integer.parseInt(socketTimeoutString) * 1000;
final int connectTimeout = Integer.parseInt(connectTimeoutString) * 1000;
poster = new HttpPoster(protocol, server, Integer.parseInt(port), webapp, core, connectTimeout, socketTimeout, updatePath, removePath, statusPath, realm, userID, password, allowAttributeName, denyAttributeName, idAttributeName,
originalSizeAttributeName, modifiedDateAttributeName, createdDateAttributeName, indexedDateAttributeName, fileNameAttributeName, mimeTypeAttributeName, contentAttributeName, keystoreManager, maxDocumentLength, commitWithin,
useExtractUpdateHandler, includedMimeTypes, excludedMimeTypes, allowCompression);
} catch (final NumberFormatException e) {
throw new ManifoldCFException(e.getMessage());
}
} else if (solrType.equals(SolrConfig.SOLR_TYPE_SOLRCLOUD)) {
final List<String> zookeeperHosts = new ArrayList<>();
// Pull together the zookeeper string describing the zookeeper nodes
for (int i = 0; i < params.getChildCount(); i++) {
final ConfigurationNode cn = params.getChild(i);
if (cn.getType().equals(SolrConfig.NODE_ZOOKEEPER)) {
zookeeperHosts.add(cn.getAttributeValue(SolrConfig.ATTR_HOST) + ":" + cn.getAttributeValue(SolrConfig.ATTR_PORT));
}
}
String znodePath = params.getParameter(SolrConfig.PARAM_ZOOKEEPER_ZNODE_PATH);
// Get collection
String collection = params.getParameter(SolrConfig.PARAM_COLLECTION);
if (collection == null)
collection = "collection1";
collectionName = collection;
// Pick up timeouts
String zkSocketTimeoutString = params.getParameter(SolrConfig.PARAM_ZOOKEEPER_SOCKET_TIMEOUT);
if (zkSocketTimeoutString == null)
zkSocketTimeoutString = "60";
String zkConnectionTimeoutString = params.getParameter(SolrConfig.PARAM_ZOOKEEPER_CONNECTION_TIMEOUT);
if (zkConnectionTimeoutString == null)
zkConnectionTimeoutString = "60";
// Create an httpposter
try {
final int zkClientTimeout = Integer.parseInt(zkSocketTimeoutString) * 1000;
final int zkConnectTimeout = Integer.parseInt(zkConnectionTimeoutString) * 1000;
poster = new HttpPoster(zookeeperHosts, znodePath, collection, zkClientTimeout, zkConnectTimeout, updatePath, removePath, statusPath, allowAttributeName, denyAttributeName, idAttributeName, originalSizeAttributeName,
modifiedDateAttributeName, createdDateAttributeName, indexedDateAttributeName, fileNameAttributeName, mimeTypeAttributeName, contentAttributeName, maxDocumentLength, commitWithin, useExtractUpdateHandler, includedMimeTypes,
excludedMimeTypes, allowCompression);
} catch (final NumberFormatException e) {
throw new ManifoldCFException(e.getMessage());
}
} else
throw new ManifoldCFException("Illegal value for parameter '" + SolrConfig.PARAM_SOLR_TYPE + "': '" + solrType + "'");
}
expirationTime = System.currentTimeMillis() + EXPIRATION_INTERVAL;
}