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 2018/02/19 12:46:53 UTC
[isis] 08/29: ISIS-1725: requires that an AppManifest is supplied
(used to obtain list of entities).
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch dev/2.0.0-M2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit f2bc631c1d4e1eccec0c20383e4eb334410eca88
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Sep 19 22:55:48 2017 +0100
ISIS-1725: requires that an AppManifest is supplied (used to obtain list of entities).
---
.../persistence/PersistenceSessionFactory.java | 2 +-
.../objectstore/jdo/service/RegisterEntities.java | 83 ++++------------------
2 files changed, 15 insertions(+), 70 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 095fbee..92f950d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -93,7 +93,7 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
final Map<String, String> datanucleusProps = dataNucleusConfig.asMap();
addDataNucleusPropertiesIfRequired(datanucleusProps);
- final RegisterEntities registerEntities = new RegisterEntities(configuration.asMap(), specificationLoader);
+ final RegisterEntities registerEntities = new RegisterEntities(specificationLoader);
final Set<String> classesToBePersisted = registerEntities.getEntityTypes();
applicationComponents = new DataNucleusApplicationComponents(jdoObjectstoreConfig, specificationLoader,
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
index 7cbb48b..1908dfe 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -18,33 +18,30 @@
*/
package org.apache.isis.objectstore.jdo.service;
-import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import javax.jdo.annotations.PersistenceCapable;
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.internal.reflection._Reflect;
-import org.apache.isis.applib.internal.reflection._Reflect.Discovery;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Function;
import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.isis.applib.AppManifest;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+
public class RegisterEntities {
@SuppressWarnings("unused")
private final static Logger LOG = LoggerFactory.getLogger(RegisterEntities.class);
-
+
+ /**
+ * @deprecated - no longer used; instead an AppManifest must be specified.
+ */
+ @Deprecated
public final static String PACKAGE_PREFIX_KEY = "isis.persistor.datanucleus.RegisterEntities.packagePrefix";
// //////////////////////////////////////
@@ -59,13 +56,13 @@ public class RegisterEntities {
}
//endregion
- public RegisterEntities(final Map<String, String> configuration, final SpecificationLoader specificationLoader) {
+ public RegisterEntities(final SpecificationLoader specificationLoader) {
this.specificationLoader = specificationLoader;
Set<Class<?>> persistenceCapableTypes = AppManifest.Registry.instance().getPersistenceCapableTypes();
if(persistenceCapableTypes == null) {
- persistenceCapableTypes = searchForPersistenceCapables(configuration);
+ throw new IllegalStateException("AppManifest is required");
}
final List<String> classNamesNotEnhanced = Lists.newArrayList();
@@ -85,52 +82,11 @@ public class RegisterEntities {
}
}
- /**
- * only called if no appManifest
- */
- Set<Class<?>> searchForPersistenceCapables(final Map<String, String> configuration) {
-
- final String packagePrefixes = lookupPackagePrefixes(configuration);
-
- final Set<Class<?>> persistenceCapableTypes = Sets.newLinkedHashSet();
- final List<String> domPackages = parseDomPackages(packagePrefixes);
- for (final String packageName : domPackages) {
-
- final Discovery dicovery = _Reflect.discover(packageName);
-
- final Set<Class<?>> entityTypesInPackage =
- dicovery.getTypesAnnotatedWith(PersistenceCapable.class);
-
- if(entityTypesInPackage.isEmpty()) {
- throw new IllegalArgumentException(String.format(
- "Bad configuration.\n\nCould not locate any @PersistenceCapable entities in package '%s'\n" +
- "Check value of '%s' key in WEB-INF/*.properties\n",
- packageName,
- PACKAGE_PREFIX_KEY));
- }
- persistenceCapableTypes.addAll(entityTypesInPackage);
- }
- return persistenceCapableTypes;
- }
-
- private String lookupPackagePrefixes(final Map<String, String> configuration) {
- final String packagePrefixes = configuration.get(PACKAGE_PREFIX_KEY);
- if(Strings.isNullOrEmpty(packagePrefixes)) {
- throw new IllegalArgumentException(String.format(
- "Could not locate '%s' key in property files - aborting",
- PACKAGE_PREFIX_KEY));
- }
- return packagePrefixes;
- }
-
- private static List<String> parseDomPackages(String packagePrefixes) {
- return Collections.unmodifiableList(Lists.newArrayList(Iterables.transform(Splitter.on(",").split(packagePrefixes), trim())));
- }
private static boolean ignore(final Class<?> entityType) {
try {
if(entityType.isAnonymousClass() || entityType.isLocalClass() || entityType.isMemberClass() ||
- entityType.isInterface()) {
+ entityType.isInterface() || entityType.isAnnotation()) {
return true;
}
final PersistenceCapable persistenceCapable = entityType.getAnnotation(PersistenceCapable.class);
@@ -140,20 +96,9 @@ public class RegisterEntities {
}
}
- private static Function<String,String> trim() {
- return new Function<String,String>(){
- @Override
- public String apply(String input) {
- return input.trim();
- }
- };
- }
-
- // //////////////////////////////////////
SpecificationLoader getSpecificationLoader() {
return specificationLoader;
}
-
}
--
To stop receiving notification emails like this one, please contact
ahuber@apache.org.