X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FDeployConfig.java;h=a2618922212b3ec34ebfba678f2c972ffb7f1042;hb=6338d85d3f970dd0eb8845693ddad90a93b99d03;hp=572631effec0487231da9dd0c4c6c114f06c60f5;hpb=828c592e047d6dd0b88c1835093e07b1526036b0;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/DeployConfig.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/DeployConfig.java index 572631eff..a26189222 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/DeployConfig.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/DeployConfig.java @@ -6,6 +6,7 @@ import java.io.Writer; import java.nio.file.Files; import java.nio.file.Path; import java.util.Dictionary; +import java.util.List; import java.util.SortedMap; import java.util.TreeMap; @@ -18,11 +19,10 @@ import javax.naming.ldap.Rdn; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; -import org.argeo.jcr.ArgeoJcrConstants; +import org.argeo.naming.AttributesDictionary; +import org.argeo.naming.LdifParser; +import org.argeo.naming.LdifWriter; import org.argeo.node.NodeConstants; -import org.argeo.util.naming.AttributesDictionary; -import org.argeo.util.naming.LdifParser; -import org.argeo.util.naming.LdifWriter; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.service.cm.Configuration; @@ -34,13 +34,14 @@ class DeployConfig implements ConfigurationListener { private final Log log = LogFactory.getLog(getClass()); private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext(); - private Path deployConfigPath = KernelUtils.getOsgiInstancePath(KernelConstants.DEPLOY_CONFIG_PATH); + private static Path deployConfigPath = KernelUtils.getOsgiInstancePath(KernelConstants.DEPLOY_CONFIG_PATH); private SortedMap deployConfigs = new TreeMap<>(); - public DeployConfig(boolean isClean) { - ConfigurationAdmin configurationAdmin = bc.getService(bc.getServiceReference(ConfigurationAdmin.class)); + public DeployConfig(ConfigurationAdmin configurationAdmin, boolean isClean) { + // ConfigurationAdmin configurationAdmin = + // bc.getService(bc.getServiceReference(ConfigurationAdmin.class)); try { - if (!Files.exists(deployConfigPath)) { // first init + if (!isInitialized()) { // first init firstInit(); } init(configurationAdmin, isClean); @@ -54,23 +55,35 @@ class DeployConfig implements ConfigurationListener { private void firstInit() throws IOException { Files.createDirectories(deployConfigPath.getParent()); - FirstInitProperties firstInit = new FirstInitProperties(); - firstInit.prepareInstanceArea(); + FirstInit firstInit = new FirstInit(); + FirstInit.prepareInstanceArea(); - if (!Files.exists(deployConfigPath))// could have juste been copied - Files.createFile(deployConfigPath); - - try (InputStream in = Files.newInputStream(deployConfigPath)) { - deployConfigs = new LdifParser().read(in); - } + if (!Files.exists(deployConfigPath)) + deployConfigs = new TreeMap<>(); + else// config file could have juste been copied by preparation + try (InputStream in = Files.newInputStream(deployConfigPath)) { + deployConfigs = new LdifParser().read(in); + } + // node repository Dictionary nodeConfig = firstInit - .getNodeRepositoryConfig(getProps(NodeConstants.NODE_REPOS_FACTORY_PID, ArgeoJcrConstants.ALIAS_NODE)); + .getNodeRepositoryConfig(getProps(NodeConstants.NODE_REPOS_FACTORY_PID, NodeConstants.NODE)); // node repository is mandatory putFactoryDeployConfig(NodeConstants.NODE_REPOS_FACTORY_PID, nodeConfig); + // user admin + + List> userDirectoryConfigs = firstInit.getUserDirectoryConfigs(); + for (int i = 0; i < userDirectoryConfigs.size(); i++) { + Dictionary userDirectoryConfig = userDirectoryConfigs.get(i); + String cn = Integer.toString(i); + userDirectoryConfig.put(NodeConstants.CN, cn); + putFactoryDeployConfig(NodeConstants.NODE_USER_ADMIN_PID, userDirectoryConfig); + } + + // http server Dictionary webServerConfig = firstInit - .getHttpServerConfig(getProps(KernelConstants.JETTY_FACTORY_PID, ArgeoJcrConstants.ALIAS_NODE)); + .getHttpServerConfig(getProps(KernelConstants.JETTY_FACTORY_PID, NodeConstants.DEFAULT)); if (!webServerConfig.isEmpty()) putFactoryDeployConfig(KernelConstants.JETTY_FACTORY_PID, webServerConfig); @@ -232,4 +245,8 @@ class DeployConfig implements ConfigurationListener { return null; } + static boolean isInitialized() { + return Files.exists(deployConfigPath); + } + }