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/10/28 17:16:19 UTC
[isis] 07/10: ISIS-2158: ClassSubstitutor: also allow to filter by
package name
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
commit 4f23c34a9f9602e248028b7d9baa41d6e2eef026
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Oct 28 15:41:22 2019 +0100
ISIS-2158: ClassSubstitutor: also allow to filter by package name
---
.../isis/config/registry/IsisBeanTypeRegistry.java | 21 ++++++++++++---------
.../ApplicationFeatureRepositoryDefault.java | 3 +--
.../specloader/SpecificationLoaderDefault.java | 4 ++++
.../classsubstitutor/ClassSubstitutor.java | 18 +++++++++++++++++-
.../isis/testdomain/jdo/InventoryResource.java | 4 ++--
5 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java b/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java
index 170183c..6ec1bdf 100644
--- a/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java
+++ b/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java
@@ -171,23 +171,27 @@ public final class IsisBeanTypeRegistry implements IsisComponentScanInterceptor,
typeMeta.setBeanNameOverride(extractObjectType(typeMeta.getUnderlyingClass()).orElse(null));
}
- val isToBeRegistered = beanSort.isManagedBean();
- val isToBeInspected = !beanSort.isUnknown();
+ val isManagedBeanToBeInspected = beanSort.isManagedBean()
+ && findNearestAnnotation(type, DomainService.class).isPresent();
+
+ val isManagedObjectToBeInspected = !beanSort.isManagedBean()
+ && !beanSort.isUnknown();
+ val isToBeInspected = isManagedBeanToBeInspected || isManagedObjectToBeInspected;
+
if(isToBeInspected) {
addIntrospectableType(beanSort, typeMeta);
- }
-
- if(log.isDebugEnabled()) {
- if(isToBeInspected || isToBeRegistered) {
- log.debug("{} {} [{}]",
- isToBeRegistered ? "provision" : beanSort.isEntity() ? "entity" : "skip",
+
+ if(log.isDebugEnabled()) {
+ log.debug("to-be-inspected: {} [{}]",
type,
beanSort.name());
}
}
+
+
}
/**
@@ -218,7 +222,6 @@ public final class IsisBeanTypeRegistry implements IsisComponentScanInterceptor,
private BeanSort quickClassify(Class<?> type) {
requires(type, "type");
-
if(findNearestAnnotation(type, Vetoed.class).isPresent()) {
return BeanSort.UNKNOWN; // reject
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 495f5ca..b179fb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -81,8 +81,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
}
}
- @Inject
- IsisConfiguration configuration;
+ @Inject IsisConfiguration configuration;
private boolean isEagerInitialize() {
ApplicationFeaturesInitConfiguration setting = configuration.getServices().getApplicationFeatures().getInit();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
index 054a101..d7b672d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
@@ -276,6 +276,10 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
return null;
}
+// if(type.getName().equals("com.fasterxml.jackson.core.Version")) {
+// System.out.println("####");
+// }
+
requires(upTo, "upTo");
val substitutedType = classSubstitutor.getClass(type);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/classsubstitutor/ClassSubstitutor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
index 2a40440..83236c4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/classsubstitutor/ClassSubstitutor.java
@@ -26,6 +26,8 @@ import org.apache.isis.commons.internal.base._Blackhole;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.metamodel.commons.ClassUtil;
+import lombok.val;
+
/**
* Provides capability to translate or ignore classes.
*/
@@ -44,6 +46,9 @@ public class ClassSubstitutor {
// ignore javassist
ignore("javassist.util.proxy.ProxyObject");
ignore("javassist.util.proxy.MethodHandler");
+
+ ignorePackage("com.fasterxml.jackson.");
+ ignorePackage("com.google.gson.");
}
@@ -95,6 +100,7 @@ public class ClassSubstitutor {
private final Set<Class<?>> classesToIgnore = _Sets.newConcurrentHashSet();
private final Set<String> classNamesToIgnore = _Sets.newHashSet();
+ private final Set<String> packageNamesToIgnore = _Sets.newHashSet();
/**
@@ -104,6 +110,10 @@ public class ClassSubstitutor {
private void ignore(final String className) {
classNamesToIgnore.add(className);
}
+
+ private void ignorePackage(final String packageName) {
+ packageNamesToIgnore.add(packageName);
+ }
private boolean shouldIgnore(final Class<?> cls) {
if (cls.isArray()) {
@@ -115,8 +125,14 @@ public class ClassSubstitutor {
return true;
}
+ val className = cls.getName();
+
try{
- return classesToIgnore.contains(cls) || classNamesToIgnore.contains(cls.getCanonicalName());
+ return classesToIgnore.contains(cls)
+ || classNamesToIgnore.contains(cls.getCanonicalName())
+ || packageNamesToIgnore.stream().anyMatch(className::startsWith)
+ ;
+
} catch(java.lang.NoClassDefFoundError e) {
try{
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryResource.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryResource.java
index b77390a..a5b64a2 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryResource.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryResource.java
@@ -57,8 +57,8 @@ public class InventoryResource {
return Book.of("Book of the week", "An awesome Book", 12, "Author", "ISBN", "Publisher");
}
- @Action
- public Book storeBook(String newBook) throws JAXBException {
+ @Action //TODO improve the REST client such that the param can be of type Book
+ public Book storeBook(String newBook) throws JAXBException {
Book book = BookDto.decode(newBook).toBook();
return repository.persist(book);
}