From 9a6babc07d80c6aa8c10adc12f40f84eef3619c5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 6 Feb 2018 14:15:30 +0100 Subject: [PATCH] Fix regressions --- .../META-INF/spring/common.xml | 2 +- .../jcr/DefaultRepositoryRegister.java | 51 ++++++++----------- .../internal/jcr/NodeContentProvider.java | 1 - .../internal}/jcr/RepositoryRegister.java | 2 +- .../internal/jcr/model/RepositoriesElem.java | 2 +- .../cms/ui/workbench/jcr/JcrBrowserView.java | 5 +- .../argeo/cms/internal/kernel/DataModels.java | 17 +++++-- .../cms/internal/kernel/DeployConfig.java | 2 +- 8 files changed, 39 insertions(+), 43 deletions(-) rename {org.argeo.jcr/src/org/argeo => org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal}/jcr/DefaultRepositoryRegister.java (61%) rename {org.argeo.jcr/src/org/argeo => org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal}/jcr/RepositoryRegister.java (95%) diff --git a/org.argeo.cms.ui.workbench/META-INF/spring/common.xml b/org.argeo.cms.ui.workbench/META-INF/spring/common.xml index e88329254..4b1b75435 100644 --- a/org.argeo.cms.ui.workbench/META-INF/spring/common.xml +++ b/org.argeo.cms.ui.workbench/META-INF/spring/common.xml @@ -16,6 +16,6 @@ - + diff --git a/org.argeo.jcr/src/org/argeo/jcr/DefaultRepositoryRegister.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/DefaultRepositoryRegister.java similarity index 61% rename from org.argeo.jcr/src/org/argeo/jcr/DefaultRepositoryRegister.java rename to org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/DefaultRepositoryRegister.java index c9835848d..c9ab94648 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/DefaultRepositoryRegister.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/DefaultRepositoryRegister.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.jcr; +package org.argeo.cms.ui.workbench.internal.jcr; import java.util.Collections; import java.util.Map; @@ -25,32 +25,25 @@ import javax.jcr.RepositoryException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.node.NodeConstants; -@Deprecated -public class DefaultRepositoryRegister extends Observable implements - RepositoryRegister { - // FIXME factorize with node +public class DefaultRepositoryRegister extends Observable implements RepositoryRegister { /** Key for a JCR repository alias */ - public final static String JCR_REPOSITORY_ALIAS = "argeo.jcr.repository.alias"; + private final static String CN = NodeConstants.CN; /** Key for a JCR repository URI */ - public final static String JCR_REPOSITORY_URI = "argeo.jcr.repository.uri"; - private final static Log log = LogFactory - .getLog(DefaultRepositoryRegister.class); + // public final static String JCR_REPOSITORY_URI = "argeo.jcr.repository.uri"; + private final static Log log = LogFactory.getLog(DefaultRepositoryRegister.class); /** Read only map which will be directly exposed. */ - private Map repositories = Collections - .unmodifiableMap(new TreeMap()); + private Map repositories = Collections.unmodifiableMap(new TreeMap()); @SuppressWarnings("rawtypes") - public synchronized Repository getRepository(Map parameters) - throws RepositoryException { - if (!parameters.containsKey(JCR_REPOSITORY_ALIAS)) - throw new RepositoryException("Parameter " + JCR_REPOSITORY_ALIAS - + " has to be defined."); - String alias = parameters.get(JCR_REPOSITORY_ALIAS).toString(); + public synchronized Repository getRepository(Map parameters) throws RepositoryException { + if (!parameters.containsKey(CN)) + throw new RepositoryException("Parameter " + CN + " has to be defined."); + String alias = parameters.get(CN).toString(); if (!repositories.containsKey(alias)) - throw new RepositoryException( - "No repository registered with alias " + alias); + throw new RepositoryException("No repository registered with alias " + alias); return repositories.get(alias); } @@ -64,14 +57,12 @@ public class DefaultRepositoryRegister extends Observable implements @SuppressWarnings("rawtypes") public synchronized void register(Repository repository, Map properties) { String alias; - if (properties == null || !properties.containsKey(JCR_REPOSITORY_ALIAS)) { - log.warn("Cannot register a repository if no " - + JCR_REPOSITORY_ALIAS + " property is specified."); + if (properties == null || !properties.containsKey(CN)) { + log.warn("Cannot register a repository if no " + CN + " property is specified."); return; } - alias = properties.get(JCR_REPOSITORY_ALIAS).toString(); - Map map = new TreeMap( - repositories); + alias = properties.get(CN).toString(); + Map map = new TreeMap(repositories); map.put(alias, repository); repositories = Collections.unmodifiableMap(map); setChanged(); @@ -82,15 +73,13 @@ public class DefaultRepositoryRegister extends Observable implements @SuppressWarnings("rawtypes") public synchronized void unregister(Repository repository, Map properties) { // TODO: also check bean name? - if (properties == null || !properties.containsKey(JCR_REPOSITORY_ALIAS)) { - log.warn("Cannot unregister a repository without property " - + JCR_REPOSITORY_ALIAS); + if (properties == null || !properties.containsKey(CN)) { + log.warn("Cannot unregister a repository without property " + CN); return; } - String alias = properties.get(JCR_REPOSITORY_ALIAS).toString(); - Map map = new TreeMap( - repositories); + String alias = properties.get(CN).toString(); + Map map = new TreeMap(repositories); if (map.remove(alias) == null) { log.warn("No repository was registered with alias " + alias); return; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeContentProvider.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeContentProvider.java index df2ece76a..fc7f16a1b 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeContentProvider.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeContentProvider.java @@ -29,7 +29,6 @@ import javax.jcr.nodetype.NodeType; import org.argeo.cms.ui.workbench.internal.jcr.model.RepositoriesElem; import org.argeo.cms.ui.workbench.internal.jcr.model.SingleJcrNodeElem; import org.argeo.eclipse.ui.TreeParent; -import org.argeo.jcr.RepositoryRegister; import org.argeo.node.NodeConstants; import org.argeo.node.NodeUtils; import org.argeo.node.security.Keyring; diff --git a/org.argeo.jcr/src/org/argeo/jcr/RepositoryRegister.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/RepositoryRegister.java similarity index 95% rename from org.argeo.jcr/src/org/argeo/jcr/RepositoryRegister.java rename to org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/RepositoryRegister.java index 2e3d4550d..cd9540925 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/RepositoryRegister.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/RepositoryRegister.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.jcr; +package org.argeo.cms.ui.workbench.internal.jcr; import java.util.Map; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoriesElem.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoriesElem.java index 70922fe1b..45c13fb28 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoriesElem.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoriesElem.java @@ -25,10 +25,10 @@ import javax.jcr.RepositoryFactory; import javax.jcr.Session; import org.argeo.cms.ArgeoNames; +import org.argeo.cms.ui.workbench.internal.jcr.RepositoryRegister; import org.argeo.eclipse.ui.EclipseUiException; import org.argeo.eclipse.ui.TreeParent; import org.argeo.eclipse.ui.dialogs.ErrorFeedback; -import org.argeo.jcr.RepositoryRegister; import org.argeo.node.NodeUtils; import org.argeo.node.security.Keyring; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/jcr/JcrBrowserView.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/jcr/JcrBrowserView.java index 35586453b..44eb446df 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/jcr/JcrBrowserView.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/jcr/JcrBrowserView.java @@ -29,17 +29,18 @@ import javax.jcr.observation.EventListener; import javax.jcr.observation.ObservationManager; import org.argeo.cms.ui.workbench.WorkbenchUiPlugin; +import org.argeo.cms.ui.workbench.internal.jcr.DefaultRepositoryRegister; import org.argeo.cms.ui.workbench.internal.jcr.JcrBrowserUtils; import org.argeo.cms.ui.workbench.internal.jcr.JcrDClickListener; import org.argeo.cms.ui.workbench.internal.jcr.NodeContentProvider; import org.argeo.cms.ui.workbench.internal.jcr.NodeLabelProvider; import org.argeo.cms.ui.workbench.internal.jcr.PropertiesContentProvider; +import org.argeo.cms.ui.workbench.internal.jcr.RepositoryRegister; import org.argeo.cms.ui.workbench.internal.jcr.model.SingleJcrNodeElem; import org.argeo.eclipse.ui.EclipseUiException; import org.argeo.eclipse.ui.TreeParent; import org.argeo.eclipse.ui.jcr.AsyncUiEventListener; import org.argeo.eclipse.ui.jcr.utils.NodeViewerComparer; -import org.argeo.jcr.RepositoryRegister; import org.argeo.node.security.Keyring; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ColumnLabelProvider; @@ -71,7 +72,7 @@ public class JcrBrowserView extends ViewPart { /* DEPENDENCY INJECTION */ private Keyring keyring; - private RepositoryRegister repositoryRegister; + private RepositoryRegister repositoryRegister = new DefaultRepositoryRegister(); private RepositoryFactory repositoryFactory; private Repository nodeRepository; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/DataModels.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/DataModels.java index b758a3063..5f5b95405 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/DataModels.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/DataModels.java @@ -60,9 +60,17 @@ class DataModels implements BundleListener { if (providedDataModels.size() == 0) return; List requiredDataModels = wiring.getRequiredWires(CMS_DATA_MODEL_NAMESPACE); + // process requirements first + for (BundleWire bundleWire : requiredDataModels) { + processBundle(bundleWire.getProvider().getBundle()); + } for (BundleCapability bundleCapability : providedDataModels) { - DataModel dataModel = new DataModel(bundleCapability, requiredDataModels); - dataModels.put(dataModel.getName(), dataModel); + String name = (String) bundleCapability.getAttributes().get(DataModelNamespace.NAME); + assert name != null; + if (!dataModels.containsKey(name)) { + DataModel dataModel = new DataModel(name, bundleCapability, requiredDataModels); + dataModels.put(dataModel.getName(), dataModel); + } } } @@ -85,11 +93,10 @@ class DataModels implements BundleListener { private final String cnd; private final List required; - private DataModel(BundleCapability bundleCapability, List requiredDataModels) { + private DataModel(String name, BundleCapability bundleCapability, List requiredDataModels) { assert CMS_DATA_MODEL_NAMESPACE.equals(bundleCapability.getNamespace()); + this.name = name; Map attrs = bundleCapability.getAttributes(); - name = (String) attrs.get(DataModelNamespace.NAME); - assert name != null; abstrct = KernelUtils.asBoolean((String) attrs.get(DataModelNamespace.ABSTRACT)); // standalone = KernelUtils.asBoolean((String) // attrs.get(DataModelNamespace.CAPABILITY_STANDALONE_ATTRIBUTE)); 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 bff544ab2..b42220a6c 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 @@ -86,7 +86,7 @@ class DeployConfig implements ConfigurationListener { if (NodeConstants.NODE.equals(dataModel.getName())) continue dataModels; Dictionary config = InitUtils.getRepositoryConfig(dataModel.getName(), - getProps(NodeConstants.NODE_REPOS_FACTORY_PID, NodeConstants.NODE)); + getProps(NodeConstants.NODE_REPOS_FACTORY_PID, dataModel.getName())); if (config.size() != 0) putFactoryDeployConfig(NodeConstants.NODE_REPOS_FACTORY_PID, config); } -- 2.30.2