X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FDataModels.java;fp=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FDataModels.java;h=5f5b95405c1ddb0bf4c134a9fceeb983c6b026d3;hb=9a6babc07d80c6aa8c10adc12f40f84eef3619c5;hp=b758a30637a9aac70d79c5a846618b1fad62455e;hpb=e61a7a2dbff5e17fbf1c6c8bbd7fa687935d2897;p=lgpl%2Fargeo-commons.git 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));