You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/06/02 05:37:53 UTC

[isis] branch ISIS-2712 created (now 159448d)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch ISIS-2712
in repository https://gitbox.apache.org/repos/asf/isis.git.


      at 159448d  ISIS-2712: metamodel XML downloads now filter on namespace rather than package

This branch includes the following new commits:

     new 6e46c5d  ISIS-2657: removes spurious console warning if there is no element to focus on.
     new 159448d  ISIS-2712: metamodel XML downloads now filter on namespace rather than package

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[isis] 01/02: ISIS-2657: removes spurious console warning if there is no element to focus on.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2712
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 6e46c5d362ea673f487b624e96a394a4bf2ce149
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jun 2 06:30:04 2021 +0100

    ISIS-2657: removes spurious console warning if there is no element to focus on.
---
 .../wicket/ui/pages/jquery.isis.wicket.viewer.js       | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index 8083257..c5b5675 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -106,11 +106,19 @@ $(function() {
     Wicket.Event.subscribe(Isis.Topic.FOCUS_FIRST_PARAMETER, function(jqEvent, elementId) {
         setTimeout(function() {
             let el = $('#'+elementId).find('.inputFormTable.parameters').find('input,textarea,div.cbx,select').filter(':visible:first');
-            let x = $(el).prop('nodeName').toLowerCase()
-            if(x === 'input') {
-                el.focus();
-            } else {
-                el.select2('open').select2('close');
+            if(el) {
+                let elNodeName = $(el).prop('nodeName')
+                if (elNodeName) {
+                    let x = elNodeName.toLowerCase()
+                    if(x === 'input') {
+                        el.focus();
+                    } else {
+                        el.select2('open').select2('close');
+                    }
+                } else {
+                    // fallback
+                    el.focus();
+                }
             }
         }, 0);
     });

[isis] 02/02: ISIS-2712: metamodel XML downloads now filter on namespace rather than package

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2712
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 159448d661bbbb3a0068ec56dbe39f3de5fd044b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jun 2 06:36:24 2021 +0100

    ISIS-2712: metamodel XML downloads now filter on namespace rather than package
---
 .../metamodel/Object_downloadMetamodelXml.java     | 15 ++++++++---
 .../isis/applib/services/metamodel/Config.java     | 30 +++++++++-------------
 .../applib/services/metamodel/DomainMember.java    |  1 +
 .../services/metamodel/MetaModelService.java       |  2 +-
 .../services/metamodel/MetaModelServiceMenu.java   | 18 ++++++-------
 .../metamodel/MetaModelService_Config_Test.java    | 18 ++++++-------
 .../metamodel/inspect/Object_inspectMetamodel.java | 17 +++++++++---
 .../services/metamodel/DomainMemberDefault.java    |  5 ++++
 .../services/metamodel/MetaModelExporter.java      | 27 ++++++++++---------
 .../metamodel/MetaModelServiceDefault.java         |  3 +--
 10 files changed, 76 insertions(+), 60 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
index 1d6da64..e556dc3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
@@ -19,6 +19,7 @@
 package org.apache.isis.applib.mixins.metamodel;
 
 import java.util.Objects;
+import java.util.Optional;
 
 import javax.inject.Inject;
 
@@ -29,9 +30,11 @@ import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.applib.mixins.dto.DtoMixinConstants;
 import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
 import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.metamodel.Config;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.applib.services.metamodel.MetaModelServiceMenu;
@@ -75,7 +78,13 @@ public class Object_downloadMetamodelXml {
                     describedAs = DtoMixinConstants.FILENAME_PROPERTY_DESCRIPTION)
             final String fileName) {
 
-        val pkg = holder.getClass().getPackage().getName();
+
+        final Optional<LogicalType> logicalTypeIfAny = metaModelService.lookupLogicalTypeByClass(holder.getClass());
+        if(!logicalTypeIfAny.isPresent()) {
+            messageService.warnUser("Unknown class, unable to export");
+            return null;
+        }
+        final String namespace = logicalTypeIfAny.get().getNamespace();
 
         val config =
                 new Config()
@@ -83,7 +92,7 @@ public class Object_downloadMetamodelXml {
                 .withIgnoreAbstractClasses()
                 .withIgnoreInterfaces()
                 .withIgnoreBuiltInValueTypes()
-                .withPackagePrefix(pkg);
+                .withNamespacePrefix(namespace);
 
         val metamodelDto = metaModelService.exportMetaModel(config);
 
@@ -108,8 +117,8 @@ public class Object_downloadMetamodelXml {
 
 
     @Inject MetaModelService metaModelService;
+    @Inject MessageService messageService;
     @Inject JaxbService jaxbService;
-    @Inject MetaModelServiceMenu metaModelServiceMenu;
 
 
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/Config.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/Config.java
index b6e7c0c..75528c0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/Config.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/Config.java
@@ -44,19 +44,19 @@ public class Config {
 
     private final int mask;
 
-    private final Set<String> packagePrefixes = _Sets.newHashSet();
+    private final Set<String> namespacePrefixes = _Sets.newHashSet();
 
     public Config() {
         this(0, Collections.emptyList());
     }
 
-    private Config(final int mask, final Collection<String> packagePrefixes) {
+    private Config(final int mask, final Collection<String> namespacePrefixes) {
         this.mask = mask;
-        this.packagePrefixes.addAll(packagePrefixes);
+        this.namespacePrefixes.addAll(namespacePrefixes);
     }
 
-    public Set<String> getPackagePrefixes() {
-        return Collections.unmodifiableSet(packagePrefixes);
+    public Set<String> getNamespacePrefixes() {
+        return Collections.unmodifiableSet(namespacePrefixes);
     }
 
     public Config withIgnoreNoop() {
@@ -80,28 +80,22 @@ public class Config {
     }
 
     private Config newConfigWith(final int x) {
-        return new Config(mask | x, packagePrefixes);
+        return new Config(mask | x, namespacePrefixes);
     }
 
-    public Config withPackagePrefixAny() {
-        val newPrefixes = _Sets.<String>newHashSet();
-        newPrefixes.add(WILDCARD);
-        return new Config(mask, newPrefixes);
-    }
-
-    public boolean isPackagePrefixAny() {
-        return packagePrefixes.contains(WILDCARD);
+    public boolean isNamespacePrefixAny() {
+        return namespacePrefixes.contains(WILDCARD);
     }
 
     /**
      * Returns a new {@code Config} with given {@code packagePrefix} added to the set of
      * this {@code Config}'s packagePrefixes.
      *
-     * @param packagePrefix - prefix to be added
+     * @param namespacePrefix - prefix to be added
      */
-    public Config withPackagePrefix(final String packagePrefix) {
-        val newPrefixes = _Sets.newHashSet(this.packagePrefixes);
-        newPrefixes.add(packagePrefix);
+    public Config withNamespacePrefix(final String namespacePrefix) {
+        val newPrefixes = _Sets.newHashSet(this.namespacePrefixes);
+        newPrefixes.add(namespacePrefix);
         return new Config(mask, newPrefixes);
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java
index 2738114..bd1c938 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java
@@ -27,6 +27,7 @@ public interface DomainMember extends Comparable<DomainMember> {
     String getClassType();
 
     String getLogicalTypeName();
+    String getNamespace();
     String getClassName();
     String getPackageName();
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
index 1cf783b..bf60e83 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
@@ -128,7 +128,7 @@ public interface MetaModelService {
      * <p>
      *     The {@link Config} parameter can be used to restrict/filter the
      *     export to some subset of the metamodel; in particular to specific
-     *     {@link Config#getPackagePrefixes() package prefixes}.
+     *     {@link Config#getNamespacePrefixes() namespace prefixes}.
      * </p>
      *
      * @param config - restricts/filters to a subsets of the metamodel.
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
index 63e81e7..3c8b597 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
@@ -122,8 +122,8 @@ public class MetaModelServiceMenu {
             @ParameterLayout(named = ".xml file name")
             final String fileName,
             @ParameterLayout(named = "Packages",
-            describedAs="Subset of the complete meta model, only including packages starting with given prefix.")
-            final List<String> packages,
+            describedAs="Subset of the complete meta model, only including namespaces starting with given prefix")
+            final List<String> namespaces,
             @ParameterLayout(named = "Ignore Interfaces")
             @Parameter(optionality=Optionality.MANDATORY)
             final boolean ignoreInterfaces
@@ -135,8 +135,8 @@ public class MetaModelServiceMenu {
                 .withIgnoreAbstractClasses()
                 .withIgnoreInterfaces()
                 .withIgnoreBuiltInValueTypes();
-        for (final String pkg : packages) {
-            config = config.withPackagePrefix(pkg);
+        for (final String namespace : namespaces) {
+            config = config.withNamespacePrefix(namespace);
         }
         if(ignoreInterfaces) {
             config = config.withIgnoreInterfaces();
@@ -166,20 +166,20 @@ public class MetaModelServiceMenu {
     public List<String> choices1DownloadMetaModelXml() {
         final DomainModel domainModel = metaModelService.getDomainModel();
         final List<DomainMember> export = domainModel.getDomainMembers();
-        final SortedSet<String> packages = _Sets.newTreeSet();
+        final SortedSet<String> namespaces = _Sets.newTreeSet();
         for (final DomainMember domainMember : export) {
-            final String packageName = domainMember.getPackageName();
-            final String[] split = packageName.split("[.]");
+            final String namespace = domainMember.getNamespace();
+            final String[] split = namespace.split("[.]");
             final StringBuilder buf = new StringBuilder();
             for (final String part : split) {
                 if(buf.length() > 0) {
                     buf.append(".");
                 }
                 buf.append(part);
-                packages.add(buf.toString());
+                namespaces.add(buf.toString());
             }
         }
-        return new ArrayList<>(packages);
+        return new ArrayList<>(namespaces);
     }
 
     public boolean default2DownloadMetaModelXml() {
diff --git a/api/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java b/api/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java
index 9719004..956f203 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java
@@ -47,29 +47,29 @@ public class MetaModelService_Config_Test {
     }
 
     @Test
-    public void packages_prefixes() throws Exception {
+    public void namespace_prefixes() throws Exception {
 
         // when
         Config config = new Config();
         // then
-        assertThat(config.getPackagePrefixes(), is(emptyCollectionOf(String.class)));
+        assertThat(config.getNamespacePrefixes(), is(emptyCollectionOf(String.class)));
 
         // and when
-        Config config2 = config.withPackagePrefix("org.foo");
+        Config config2 = config.withNamespacePrefix("org.foo");
 
         // then
         assertNotSame(config, config2);
-        assertThat(config2.getPackagePrefixes().size(), is(equalTo(1)));
-        assertThat(config2.getPackagePrefixes().iterator().next(), is(equalTo("org.foo")));
+        assertThat(config2.getNamespacePrefixes().size(), is(equalTo(1)));
+        assertThat(config2.getNamespacePrefixes().iterator().next(), is(equalTo("org.foo")));
 
         // and when
-        Config config3 = config2.withPackagePrefix("org.bar");
+        Config config3 = config2.withNamespacePrefix("org.bar");
 
         // then
         assertNotSame(config, config3);
         assertNotSame(config2, config3);
-        assertThat(config3.getPackagePrefixes().size(), is(equalTo(2)));
-        assertTrue(config3.getPackagePrefixes().contains("org.foo"));
-        assertTrue(config3.getPackagePrefixes().contains("org.bar"));
+        assertThat(config3.getNamespacePrefixes().size(), is(equalTo(2)));
+        assertTrue(config3.getNamespacePrefixes().contains("org.foo"));
+        assertTrue(config3.getNamespacePrefixes().contains("org.bar"));
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java
index d060481..e8bf35f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java
@@ -19,6 +19,7 @@
 package org.apache.isis.core.metamodel.inspect;
 
 import java.util.Objects;
+import java.util.Optional;
 
 import javax.inject.Inject;
 
@@ -29,7 +30,10 @@ import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.graph.tree.TreeNode;
 import org.apache.isis.applib.graph.tree.TreePath;
+import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
+import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.metamodel.Config;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -55,8 +59,6 @@ import lombok.val;
 @RequiredArgsConstructor
 public class Object_inspectMetamodel {
 
-    @Inject private MetaModelService metaModelService;
-    //@Inject private SpecificationLoader specificationLoader;
 
     private final Object holder;
 
@@ -65,7 +67,12 @@ public class Object_inspectMetamodel {
 
     public Object act() {
 
-        val pkg = holder.getClass().getPackage().getName();
+        final Optional<LogicalType> logicalTypeIfAny = metaModelService.lookupLogicalTypeByClass(holder.getClass());
+        if(!logicalTypeIfAny.isPresent()) {
+            messageService.warnUser("Unknown class, unable to export");
+            return null;
+        }
+        final String namespace = logicalTypeIfAny.get().getNamespace();
 
         val config =
                 new Config()
@@ -73,7 +80,7 @@ public class Object_inspectMetamodel {
                 .withIgnoreAbstractClasses()
                 .withIgnoreInterfaces()
                 .withIgnoreBuiltInValueTypes()
-                .withPackagePrefix(pkg);
+                .withNamespacePrefix(namespace);
 
         val metamodelDto = metaModelService.exportMetaModel(config);
 
@@ -99,5 +106,7 @@ public class Object_inspectMetamodel {
         return tree;
     }
 
+    @Inject private MetaModelService metaModelService;
+    @Inject MessageService messageService;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
index 03dc543..aa07dea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
@@ -114,6 +114,11 @@ public class DomainMemberDefault implements DomainMember {
         return spec.getLogicalTypeName();
     }
 
+    @Override
+    public String getNamespace() {
+        return spec.getLogicalType().getNamespace();
+    }
+
     @XmlElement @Override
     public String getClassName() {
         final String fullIdentifier = spec.getFullIdentifier();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java
index 7521da4..b10e475 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelExporter.java
@@ -82,7 +82,7 @@ class MetaModelExporter {
         // these are added into a map for lookups in phase 2
         final Map<ObjectSpecification, DomainClassDto> domainClassByObjectSpec = _Maps.newHashMap();
         for (final ObjectSpecification specification : specificationLookup.snapshotSpecifications()) {
-            DomainClassDto domainClassType = asXsdType(specification, config);
+            DomainClassDto domainClassType = asXsdType(specification);
             domainClassByObjectSpec.put(specification, domainClassType);
         }
 
@@ -135,7 +135,7 @@ class MetaModelExporter {
     }
 
     private boolean shouldIgnore(final Config config, final ObjectSpecification specification) {
-        return notInPackagePrefixes(specification, config) ||
+        return notInNamespacePrefixes(specification, config) ||
                 config.isIgnoreMixins() && specification.isMixin() ||
                 config.isIgnoreInterfaces() && specification.getCorrespondingClass().isInterface() ||
                 config.isIgnoreAbstractClasses() && Modifier.isAbstract(specification.getCorrespondingClass().getModifiers()) ||
@@ -148,27 +148,27 @@ class MetaModelExporter {
         return x;
     }
 
-    private boolean notInPackagePrefixes(
+    private boolean notInNamespacePrefixes(
             final ObjectSpecification specification, final Config config) {
-        return !inPackagePrefixes(specification, config);
+        return !inNamespacePrefixes(specification, config);
     }
 
-    private boolean inPackagePrefixes(
+    private boolean inNamespacePrefixes(
             final ObjectSpecification specification,
             final Config config) {
 
-        val prefixes = config.getPackagePrefixes();
-        if(prefixes.isEmpty()) {
+        val namespacePrefixes = config.getNamespacePrefixes();
+        if(namespacePrefixes.isEmpty()) {
             return false; // export none
         }
 
-        if(config.isPackagePrefixAny()) {
+        if(config.isNamespacePrefixAny()) {
             return true; // export all
         }
 
-        val canonicalName = specification.getCorrespondingClass().getCanonicalName();
-        for (val prefix : prefixes) {
-            if(canonicalName.startsWith(prefix)) {
+        val logicalTypeName = specification.getLogicalTypeName();
+        for (val prefix : namespacePrefixes) {
+            if(logicalTypeName.startsWith(prefix)) {
                 return true;
             }
         }
@@ -176,8 +176,7 @@ class MetaModelExporter {
     }
 
     private DomainClassDto asXsdType(
-            final ObjectSpecification specification,
-            final Config config) {
+            final ObjectSpecification specification) {
 
         final DomainClassDto domainClass = new DomainClassDto();
 
@@ -334,7 +333,7 @@ class MetaModelExporter {
             final Config config) {
         DomainClassDto value = domainClassByObjectSpec.get(specification);
         if(value == null) {
-            final DomainClassDto domainClass = asXsdType(specification, config);
+            final DomainClassDto domainClass = asXsdType(specification);
             domainClassByObjectSpec.put(specification, domainClass);
             value = domainClass;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 34a20c6..401cb6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -87,7 +87,6 @@ public class MetaModelServiceDefault implements MetaModelService {
         specificationLoader.reloadSpecification(domainType);
     }
 
-    // //////////////////////////////////////
 
 
 
@@ -143,7 +142,7 @@ public class MetaModelServiceDefault implements MetaModelService {
         return className.startsWith("java") || className.startsWith("org.joda");
     }
 
-    // //////////////////////////////////////
+
 
     @Override
     public BeanSort sortOf(