Fix regressions
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / DataModels.java
index b758a30637a9aac70d79c5a846618b1fad62455e..5f5b95405c1ddb0bf4c134a9fceeb983c6b026d3 100644 (file)
@@ -60,9 +60,17 @@ class DataModels implements BundleListener {
                if (providedDataModels.size() == 0)
                        return;
                List<BundleWire> 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<DataModel> required;
 
-               private DataModel(BundleCapability bundleCapability, List<BundleWire> requiredDataModels) {
+               private DataModel(String name, BundleCapability bundleCapability, List<BundleWire> requiredDataModels) {
                        assert CMS_DATA_MODEL_NAMESPACE.equals(bundleCapability.getNamespace());
+                       this.name = name;
                        Map<String, Object> 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));