import org.collectionspace.authentication.AuthN;\r
\r
import org.collectionspace.services.common.api.JEEServerDeployment;\r
+import org.collectionspace.services.common.api.Tools;\r
import org.collectionspace.services.common.authorization_mgt.AuthorizationCommon;\r
import org.collectionspace.services.common.config.ConfigReader;\r
import org.collectionspace.services.common.config.ConfigUtils;\r
private UriTemplateRegistry uriTemplateRegistry = new UriTemplateRegistry();\r
\r
private static final String SERVER_HOME_PROPERTY = "catalina.home";\r
- private static final boolean USE_APP_GENERATED_CONFIG = true;\r
- \r
+ private static final boolean USE_APP_GENERATED_CONFIG = true;\r
+ \r
+ private static final String COMPONENT_EXTENSION_XPATH = "/component/extension[@point='%s']";\r
+ private static final String REPOSITORY_EXTENSION_POINT_XPATH =\r
+ String.format(COMPONENT_EXTENSION_XPATH, "repository");\r
+ private static final String REPOSITORIES_EXTENSION_POINT_XPATH =\r
+ String.format(COMPONENT_EXTENSION_XPATH, "repositories");\r
+ \r
private ServiceMain() {\r
//empty\r
}\r
List<String> repositoryNameList = ConfigUtils.getRepositoryNameList(tbt);\r
if (repositoryNameList != null && repositoryNameList.isEmpty() == false) {\r
Document repoDoc = null;\r
+ final String PLACEHOLDER = "placeholder";\r
for (String repositoryName : repositoryNameList) {\r
+ if (Tools.isBlank(repositoryName)) {\r
+ continue;\r
+ }\r
+ // FIXME: Remove this and other, similar log statements before merging. \r
logger.warn("Repository name=" + repositoryName);\r
repoDoc = (Document) prototypeDoc.clone();\r
- logger.warn("Before attribute edits=\n" + repoDoc.asXML());\r
- // FIXME: Set up constants and/or methods for XPath expressions, element and attribute names\r
- repoDoc = XmlTools.setAttributeValue(repoDoc, "/component/extension[@point='repository']/repository", "name", repositoryName);\r
- logger.warn("After first attribute edit=\n" + repoDoc.asXML());\r
- repoDoc = XmlTools.setAttributeValue(repoDoc, "/component/extension[@point='repository']/repository/repository", "name", repositoryName);\r
- logger.warn("After second attribute edit=\n" + repoDoc.asXML());\r
- repoDoc = XmlTools.setAttributeValue(repoDoc, "/component/extension[@point='repositories']/repository", "name", repositoryName);\r
- logger.warn("After third attribute edit=\n" + repoDoc.asXML());\r
- repoDoc = XmlTools.setElementValue(repoDoc, "/component/extension[@point='repository']/repository/repository/property[@name='DatabaseName']", repositoryName);\r
- logger.warn("After first element edit=\n" + repoDoc.asXML());\r
+ logger.warn("Before edits=\n" + repoDoc.asXML());\r
+ // Text substitutions within first extension point\r
+ repoDoc = XmlTools.setAttributeValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository", "name", repositoryName);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setAttributeValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository", "name", repositoryName);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/xa-datasource", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='URL']", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='ServerName']", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='DatabaseName']", repositoryName);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='User']", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORY_EXTENSION_POINT_XPATH + "/repository/repository/property[@name='Password']", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ // Text substitutions within second extension point\r
+ repoDoc = XmlTools.setElementValue(repoDoc,\r
+ REPOSITORIES_EXTENSION_POINT_XPATH + "/documentation", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setAttributeValue(repoDoc,\r
+ REPOSITORIES_EXTENSION_POINT_XPATH + "/repository", "name", repositoryName);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
+ repoDoc = XmlTools.setAttributeValue(repoDoc,\r
+ REPOSITORIES_EXTENSION_POINT_XPATH + "/repository", "label", PLACEHOLDER);\r
+ logger.warn("After edit=\n" + repoDoc.asXML());\r
// FIXME: Edit additional element and/or attribute values.\r
// FIXME: Emit serialized XML and write it to an appropriately named file\r
// in the Nuxeo server config directory.\r
return JEEServerDeployment.NUXEO_PROTOTYPE_CONFIG_FILENAME;\r
}\r
\r
+ public String getNuxeoConfigFilename(String reponame) {\r
+ return reponame + JEEServerDeployment.NUXEO_REPO_CONFIG_FILENAME_SUFFIX;\r
+ }\r
+ \r
/**\r
* @return the server resources path\r
*/\r