You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/09/19 10:06:58 UTC
[isis] branch v2 updated: ISIS-2158 changes MetaModelExporter
behavior
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new dbaef8e ISIS-2158 changes MetaModelExporter behavior
dbaef8e is described below
commit dbaef8e4f48abdc6f28c2dd281109fd837e0fda4
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 19 12:06:49 2019 +0200
ISIS-2158 changes MetaModelExporter behavior
- if no package prefixes configured export all instead of none
---
.../services/metamodel/MetaModelService.java | 35 ++++++++++++++--------
.../metamodel/MetaModelService_Config_Test.java | 7 +++--
.../java/org/apache/isis/config/IsisPresets.java | 1 +
.../services/metamodel/MetaModelExporter.java | 14 +++++++--
4 files changed, 38 insertions(+), 19 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java b/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
index 9ea6347..c11cfa7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
@@ -18,18 +18,21 @@
*/
package org.apache.isis.applib.services.metamodel;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
+import java.util.Set;
import org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties.Sort;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.command.CommandDtoProcessor;
-import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.ioc.BeanSort;
import org.apache.isis.schema.metamodel.v1.MetamodelDto;
+import lombok.val;
+
/**
* This service provides a formal API into Isis' metamodel.
*
@@ -92,14 +95,19 @@ public interface MetaModelService {
private static final int IGNORE_MIXINS = 16;
private final int mask;
- private final List<String> packagePrefixes;
+
+ private final Set<String> packagePrefixes = _Sets.newHashSet();
public Config() {
this(0, Collections.emptyList());
}
- private Config(final int mask, final List<String> packagePrefixes) {
+ private Config(final int mask, final Collection<String> packagePrefixes) {
this.mask = mask;
- this.packagePrefixes = Collections.unmodifiableList(packagePrefixes);
+ this.packagePrefixes.addAll(packagePrefixes);
+ }
+
+ public Set<String> getPackagePrefixes() {
+ return Collections.unmodifiableSet(packagePrefixes);
}
public Config withIgnoreNoop() {
@@ -123,10 +131,15 @@ public interface MetaModelService {
return new Config(mask | x, packagePrefixes);
}
+ /**
+ * 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
+ */
public Config withPackagePrefix(final String packagePrefix) {
- final List<String> prefixes = _Lists.newArrayList(this.packagePrefixes);
- prefixes.add(packagePrefix);
- return new Config(mask, prefixes);
+ val newPrefixes = _Sets.newHashSet(this.packagePrefixes);
+ newPrefixes.add(packagePrefix);
+ return new Config(mask, newPrefixes);
}
public boolean isIgnoreNoop() {
@@ -147,14 +160,10 @@ public interface MetaModelService {
return hasFlag(IGNORE_MIXINS);
}
- public List<String> getPackagePrefixes() {
- return packagePrefixes;
- }
-
private boolean hasFlag(final int x) {
return (mask & x) == x;
}
-
+
}
MetamodelDto exportMetaModel(final Config config);
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java b/core/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java
index 914aef5..9ed693c 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/metamodel/MetaModelService_Config_Test.java
@@ -25,6 +25,7 @@ import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
public class MetaModelService_Config_Test {
@@ -59,7 +60,7 @@ public class MetaModelService_Config_Test {
// then
assertNotSame(config, config2);
assertThat(config2.getPackagePrefixes().size(), is(equalTo(1)));
- assertThat(config2.getPackagePrefixes().get(0), is(equalTo("org.foo")));
+ assertThat(config2.getPackagePrefixes().iterator().next(), is(equalTo("org.foo")));
// and when
MetaModelService.Config config3 = config2.withPackagePrefix("org.bar");
@@ -68,7 +69,7 @@ public class MetaModelService_Config_Test {
assertNotSame(config, config3);
assertNotSame(config2, config3);
assertThat(config3.getPackagePrefixes().size(), is(equalTo(2)));
- assertThat(config3.getPackagePrefixes().get(0), is(equalTo("org.foo")));
- assertThat(config3.getPackagePrefixes().get(1), is(equalTo("org.bar")));
+ assertTrue(config3.getPackagePrefixes().contains("org.foo"));
+ assertTrue(config3.getPackagePrefixes().contains("org.bar"));
}
}
\ No newline at end of file
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisPresets.java b/core/config/src/main/java/org/apache/isis/config/IsisPresets.java
index a160e20..124bf67 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisPresets.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisPresets.java
@@ -96,6 +96,7 @@ public final class IsisPresets {
public static final String DataNucleusAutoCreate = "classpath:/presets/DataNucleusAutoCreate.properties";
public static final String DebugPersistence = "classpath:/presets/DebugPersistence.properties";
+ public static final String DebugDiscovery = "logging.level.org.apache.isis.config.registry.IsisBeanTypeRegistry=DEBUG";
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelExporter.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelExporter.java
index 0fb6374..e823c87 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelExporter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelExporter.java
@@ -57,6 +57,8 @@ import org.apache.isis.schema.metamodel.v1.ScalarParam;
import org.apache.isis.schema.metamodel.v1.VectorParam;
import org.apache.isis.schema.utils.CommonDtoUtils;
+import lombok.val;
+
class MetaModelExporter {
SpecificationLoader specificationLookup;
@@ -155,9 +157,15 @@ class MetaModelExporter {
private boolean inPackagePrefixes(
final ObjectSpecification specification,
final MetaModelService.Config config) {
- final String canonicalName = specification.getCorrespondingClass().getCanonicalName();
- for (final String s : config.getPackagePrefixes()) {
- if(canonicalName.startsWith(s)) {
+
+ val prefixes = config.getPackagePrefixes();
+ if(prefixes.isEmpty()) {
+ return true; // treat no prefixes configured as a wildcard to export them all
+ }
+
+ val canonicalName = specification.getCorrespondingClass().getCanonicalName();
+ for (val prefix : prefixes) {
+ if(canonicalName.startsWith(prefix)) {
return true;
}
}