This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-2050 in repository https://gitbox.apache.org/repos/asf/isis.git
commit 5326283cde5c2c02a934ed109ff890bcba233ef4 Author: danhaywood <d...@haywood-associates.co.uk> AuthorDate: Thu Dec 13 23:27:03 2018 +0000 ISIS-2050: - removes contributingDomainServiceTypes from AppManifest.Registry once more ... will just eagerly introspect type and members for all domain services - fixes introspectUpTo algorithm - skip type hierarchy traversal for domain services with natureOfService=DOMAIN - improves/reduces logging - lazily introspect up to type and members whenever any of the members (properties/collections/actions) are referenced of an ObjectSpecAbstract --- .../java/org/apache/isis/applib/AppManifest.java | 20 +---- .../commons/config/IsisConfigurationDefault.java | 6 +- .../metamodel/specloader/SpecificationLoader.java | 53 +++++++----- .../specimpl/ObjectSpecificationAbstract.java | 98 +++++++++++++--------- .../specimpl/dflt/ObjectSpecificationDefault.java | 33 +++++--- .../runner/opts/OptionHandlerInitParameters.java | 4 +- .../IsisComponentProvider.java | 10 --- .../wicket/viewer/IsisWicketApplication.java | 12 +-- .../src/main/webapp/WEB-INF/logging.properties | 10 ++- 9 files changed, 132 insertions(+), 114 deletions(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java b/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java index 1316315..8bd09bb 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java +++ b/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java @@ -37,7 +37,6 @@ import org.reflections.vfs.SystemDir; import org.reflections.vfs.Vfs; import org.apache.isis.applib.annotation.DomainService; -import org.apache.isis.applib.annotation.NatureOfService; import org.apache.isis.applib.fixturescripts.FixtureScript; /** @@ -200,7 +199,7 @@ public interface AppManifest { private Set<Class<?>> mixinTypes; /** - * Along with {@link #getContributingDomainServiceTypes()}, these are introspected eagerly. + * Along with {@link #getDomainServiceTypes()}, these are introspected eagerly. * * @return <tt>null</tt> if no appManifest is defined */ @@ -239,23 +238,6 @@ public interface AppManifest { } //endregion - //region > contributingDomainServiceTypes - private Set<Class<?>> contributingDomainServiceTypes; - /** - * A subset of {@link #getDomainServiceTypes()}, whose nature is either - * {@link org.apache.isis.applib.annotation.NatureOfService#VIEW_CONTRIBUTIONS_ONLY} or - * {@link NatureOfService#VIEW}. - * - * Along with {@link #getMixinTypes()}, these are introspected eagerly. - */ - public Set<Class<?>> getContributingDomainServiceTypes() { - return contributingDomainServiceTypes; - } - public void setContributingDomainServiceTypes(final Set<Class<?>> contributingDomainServiceTypes) { - this.contributingDomainServiceTypes = contributingDomainServiceTypes; - } - //endregion - //region > urlTypes public List<Vfs.UrlType> getUrlTypes() { final List<Vfs.UrlType> urlTypes = Lists.newArrayList(); diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java index acd2d76..9235c23 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java @@ -161,10 +161,10 @@ public class IsisConfigurationDefault implements ConfigurationServiceInternal { if (properties.containsKey(key)) { switch (policy) { case IGNORE: - LOG.info("ignoring {}={} as value already set (with {})", key, value, properties.get(key)); + LOG.debug("ignoring {}={} as value already set (with {})", key, value, properties.get(key)); break; case OVERWRITE: - LOG.info("overwriting {}={} (previous value was {})", key, value, properties.get(key)); + LOG.debug("overwriting {}={} (previous value was {})", key, value, properties.get(key)); properties.put(key, value); break; case EXCEPTION: @@ -172,7 +172,7 @@ public class IsisConfigurationDefault implements ConfigurationServiceInternal { "Configuration already has a key {}, value of {}%s, value of %s", key, properties.get(key))); } } else { - LOG.info("adding {} = {}", key , safe(key, value)); + LOG.debug("adding {} = {}", key , safe(key, value)); properties.put(key, value); } } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java index 628370d..787f304 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java @@ -95,7 +95,7 @@ public class SpecificationLoader implements ApplicationScopedComponent { new ConfigPropertyBoolean("isis.reflector.introspector.parallelize", true); public static final ConfigPropertyBoolean CONFIG_PROPERTY_FULL_INTROSPECTION = - new ConfigPropertyBoolean("isis.reflector.introspector.fullIntrospection", true); + new ConfigPropertyBoolean("isis.reflector.introspector.fullIntrospection", false); //region > constructor, fields @@ -133,11 +133,6 @@ public class SpecificationLoader implements ApplicationScopedComponent { this.layoutMetadataReaders = layoutMetadataReaders; } - @Override - protected void finalize() throws Throwable { - super.finalize(); - LOG.info("finalizing reflector factory", this); - } //endregion @@ -171,25 +166,25 @@ public class SpecificationLoader implements ApplicationScopedComponent { // need to completely load services and mixins (synchronously) + LOG.info("Loading all specs (up to state of {})", IntrospectionState.NOT_INTROSPECTED); + final List<ObjectSpecification> specificationsFromRegistry = Lists.newArrayList(); - final List<ObjectSpecification> contributingSpecs = Lists.newArrayList(); - contributingSpecs.addAll( - loadSpecificationsFor( - AppManifest.Registry.instance().getContributingDomainServiceTypes(), NatureOfService.DOMAIN, + // we use allServiceClasses() - obtained from servicesInjector - rather than reading from the + // AppManifest.Registry.instance().getDomainServiceTypes(), because the former also has the fallback + // services set up in IsisSessionFactoryBuilder beforehand. + final List<ObjectSpecification> domainServiceSpecs = + loadSpecificationsFor( + allServiceClasses(), NatureOfService.DOMAIN, specificationsFromRegistry, IntrospectionState.NOT_INTROSPECTED - )); - contributingSpecs.addAll( + ); + final List<ObjectSpecification> mixinSpecs = loadSpecificationsFor( AppManifest.Registry.instance().getMixinTypes(), null, specificationsFromRegistry, IntrospectionState.NOT_INTROSPECTED - )); - loadSpecificationsFor( - CommonDtoUtils.VALUE_TYPES, null, - specificationsFromRegistry, IntrospectionState.NOT_INTROSPECTED ); loadSpecificationsFor( - AppManifest.Registry.instance().getDomainServiceTypes(), NatureOfService.DOMAIN, + CommonDtoUtils.VALUE_TYPES, null, specificationsFromRegistry, IntrospectionState.NOT_INTROSPECTED ); loadSpecificationsFor( @@ -211,23 +206,33 @@ public class SpecificationLoader implements ApplicationScopedComponent { logBefore(specificationsFromRegistry, cachedSpecifications); - introspect(contributingSpecs, IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + LOG.info("Introspecting domainService specs up to {}", IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + introspect(domainServiceSpecs, IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + + LOG.info("Introspecting mixin specs up to {}", IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + introspect(mixinSpecs, IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + + LOG.info("Introspecting all specs up to {}", IntrospectionState.TYPE_INTROSPECTED); introspect(specificationsFromRegistry, IntrospectionState.TYPE_INTROSPECTED); logAfter(cachedSpecifications); final boolean validate = CONFIG_PROPERTY_FULL_INTROSPECTION.from(configuration); if(validate) { - LOG.info("Meta model being fully introspected (enables subsequent meta model validation)"); + LOG.info("Introspecting all cached specs up to {}", IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); introspect(cachedSpecifications, IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); } + LOG.info("init() - done"); } private void logBefore( final List<ObjectSpecification> specificationsFromRegistry, final Collection<ObjectSpecification> cachedSpecifications) { - LOG.info(String.format( + if(!LOG.isDebugEnabled()) { + return; + } + LOG.debug(String.format( "specificationsFromRegistry.size = %d ; cachedSpecifications.size = %d", specificationsFromRegistry.size(), cachedSpecifications.size())); @@ -246,12 +251,16 @@ public class SpecificationLoader implements ApplicationScopedComponent { } }).toList(); - LOG.info(String.format( + LOG.debug(String.format( "registryNotCached.size = %d ; cachedNotRegistry.size = %d", registryNotCached.size(), cachedNotRegistry.size())); } private void logAfter(final Collection<ObjectSpecification> cachedSpecifications) { + if(!LOG.isDebugEnabled()) { + return; + } + final Collection<ObjectSpecification> cachedSpecificationsAfter = cache.allSpecifications(); ImmutableList<ObjectSpecification> cachedAfterNotBefore = FluentIterable.from(cachedSpecificationsAfter) .filter(new Predicate<ObjectSpecification>() { @@ -260,7 +269,7 @@ public class SpecificationLoader implements ApplicationScopedComponent { return !cachedSpecifications.contains(objectSpecification); } }).toList(); - LOG.info(String.format("cachedSpecificationsAfter.size = %d ; cachedAfterNotBefore.size = %d", + LOG.debug(String.format("cachedSpecificationsAfter.size = %d ; cachedAfterNotBefore.size = %d", cachedSpecificationsAfter.size(), cachedAfterNotBefore.size())); } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java index df5d7a6..f402648 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java @@ -257,44 +257,41 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem */ public void introspectUpTo(final IntrospectionState upTo) { - LOG.info("introspectingUpTo: {}, {}", getFullIdentifier(), upTo); - - while(this.introspectionState.compareTo(upTo) < 0) { - - switch (introspectionState) { - case NOT_INTROSPECTED: + LOG.debug("introspectingUpTo: {}, {}", getFullIdentifier(), upTo); + switch (introspectionState) { + case NOT_INTROSPECTED: + if(this.introspectionState.compareTo(upTo) < 0) { // set to avoid infinite loops this.introspectionState = IntrospectionState.TYPE_BEING_INTROSPECTED; - try { - introspectTypeHierarchy(); - updateFromFacetValues(); - this.introspectionState = IntrospectionState.TYPE_INTROSPECTED; - } catch(Exception ex) { - this.introspectionState = IntrospectionState.NOT_INTROSPECTED; - throw ex; - } - break; - case TYPE_BEING_INTROSPECTED: - // nothing to do - break; - case TYPE_INTROSPECTED: + introspectTypeHierarchy(); + updateFromFacetValues(); + this.introspectionState = IntrospectionState.TYPE_INTROSPECTED; + } + + if(this.introspectionState.compareTo(upTo) < 0) { + this.introspectionState = IntrospectionState.MEMBERS_BEING_INTROSPECTED; + introspectMembers(); + this.introspectionState = IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED; + } + // set to avoid infinite loops + break; + case TYPE_BEING_INTROSPECTED: + // nothing to do + break; + case TYPE_INTROSPECTED: + if(this.introspectionState.compareTo(upTo) < 0) { // set to avoid infinite loops this.introspectionState = IntrospectionState.MEMBERS_BEING_INTROSPECTED; - try { - introspectMembers(); - this.introspectionState = IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED; - } catch(Exception ex) { - this.introspectionState = IntrospectionState.TYPE_INTROSPECTED; - throw ex; - } - break; - case MEMBERS_BEING_INTROSPECTED: - // nothing to do - case TYPE_AND_MEMBERS_INTROSPECTED: - // nothing to do - break; + introspectMembers(); + this.introspectionState = IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED; } + break; + case MEMBERS_BEING_INTROSPECTED: + // nothing to do + case TYPE_AND_MEMBERS_INTROSPECTED: + // nothing to do + break; } } @@ -634,7 +631,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem return transitiveSubclasses; } - private SubclassList appendSubclasses( + private void appendSubclasses( final ObjectSpecification objectSpecification, final SubclassList appendTo) { @@ -644,7 +641,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem appendSubclasses(subclass, appendTo); } - return appendTo; } @Override @@ -662,6 +658,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem //region > Associations @Override public List<ObjectAssociation> getAssociations(final Contributed contributed) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + // the "contributed.isIncluded()" guard is required because we cannot do this too early; // there must be a session available if(contributed.isIncluded() && !contributeeAndMixedInAssociationsAdded) { @@ -687,6 +685,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem @Override public ObjectMember getMember(final String memberId) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + final ObjectAction objectAction = getObjectAction(memberId); if(objectAction != null) { return objectAction; @@ -715,6 +715,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem */ @Override public ObjectAssociation getAssociation(final String id) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + ObjectAssociation oa = getAssociationWithId(id); if(oa != null) { return oa; @@ -756,11 +758,15 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem @Deprecated @Override public List<ObjectAssociation> getAssociations(Filter<ObjectAssociation> filter) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + return getAssociations(Contributed.INCLUDED, filter); } @Override public List<ObjectAssociation> getAssociations(Contributed contributed, final Filter<ObjectAssociation> filter) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + final List<ObjectAssociation> allAssociations = getAssociations(contributed); return Lists.newArrayList( FluentIterable.from(allAssociations) @@ -772,6 +778,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public List<OneToOneAssociation> getProperties(Contributed contributed) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + final List list = getAssociations(contributed, ObjectAssociation.Filters.PROPERTIES); return list; } @@ -779,6 +787,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public List<OneToManyAssociation> getCollections(Contributed contributed) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + final List list = getAssociations(contributed, ObjectAssociation.Filters.COLLECTIONS); return list; } @@ -792,6 +802,10 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem final Contributed contributed, final Filter<ObjectAction> filter) { + LOG.debug("{} : getObjectActions(...)", this.getFullIdentifier()); + + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + // update our list of actions if requesting for contributed actions // and they have not yet been added // the "contributed.isIncluded()" guard is required because we cannot do this too early; @@ -831,6 +845,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem @Override public List<ObjectAction> getObjectActions( final Contributed contributed) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + return getObjectActions(ActionType.ALL, contributed, Filters.<ObjectAction>any()); } @@ -839,6 +855,9 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem final ActionType type, final Contributed contributed, final Filter<ObjectAction> filter) { + + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + return getObjectActions(Collections.singletonList(type), contributed, filter); } @@ -846,7 +865,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem //region > sorting - protected List<ObjectAssociation> sortAssociations(final List<ObjectAssociation> associations) { + private List<ObjectAssociation> sortAssociations(final List<ObjectAssociation> associations) { final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(associations); final MemberGroupLayoutFacet memberGroupLayoutFacet = this.getFacet(MemberGroupLayoutFacet.class); @@ -879,7 +898,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem } } - protected static List<ObjectAction> sortActions(final List<ObjectAction> actions) { + private static List<ObjectAction> sortActions(final List<ObjectAction> actions) { final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(actions); final List<ObjectAction> orderedActions = Lists.newArrayList(); sortActions(orderSet, orderedActions); @@ -1103,7 +1122,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem * If this specification {@link #isService() is actually for} a service, * then returns an empty list. */ - protected List<ObjectAction> createContributeeActions() { + private List<ObjectAction> createContributeeActions() { if (isService() || isValue()) { return Collections.emptyList(); } @@ -1118,6 +1137,9 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem private void addContributeeActionsIfAny( final Object servicePojo, final List<ObjectAction> contributeeActionsToAppendTo) { + + LOG.debug("{} : addContributeeActionsIfAny(...); servicePojo class is: {}", this.getFullIdentifier(), servicePojo.getClass().getName()); + final Class<?> serviceType = servicePojo.getClass(); final ObjectSpecification specification = getSpecificationLoader().loadSpecification(serviceType, IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); @@ -1182,7 +1204,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem * If this specification {@link #isService() is actually for} a service, * then returns an empty list. */ - protected List<ObjectAction> createMixedInActions() { + private List<ObjectAction> createMixedInActions() { if (isService() || isValue()) { return Collections.emptyList(); } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java index 81c289d..931e532 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java @@ -126,7 +126,16 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl // go no further if a value if(this.containsFacet(ValueFacet.class)) { if (LOG.isDebugEnabled()) { - LOG.debug("skipping full introspection for value type {}", getFullIdentifier()); + LOG.debug("skipping type hierarchy introspection for value type {}", getFullIdentifier()); + } + return; + } + + final DomainServiceFacet facet = getFacet(DomainServiceFacet.class); + final boolean serviceWithNatureOfDomain = facet != null && facet.getNatureOfService() == NatureOfService.DOMAIN; + if (serviceWithNatureOfDomain) { + if (LOG.isDebugEnabled()) { + LOG.debug("skipping type hierarchy introspection for domain service with natureOfService = DOMAIN {}", getFullIdentifier()); } return; } @@ -178,11 +187,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl final List<ObjectAction> actions = createActions(metadataProperties); sortCacheAndUpdateActions(actions); - // ensure the spec is fully rebuilt - // TODO: this probably isn't required... - getObjectActions(Contributed.INCLUDED); - getAssociations(Contributed.INCLUDED); - postProcess(); } @@ -324,21 +328,27 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl @Override public ObjectAction getObjectAction(final ActionType type, final String id, final List<ObjectSpecification> parameters) { - final List<ObjectAction> actions = + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + + final List<ObjectAction> actions = getObjectActions(type, Contributed.INCLUDED, Filters.<ObjectAction>any()); return firstAction(actions, id, parameters); } @Override public ObjectAction getObjectAction(final ActionType type, final String id) { - final List<ObjectAction> actions = + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + + final List<ObjectAction> actions = getObjectActions(type, Contributed.INCLUDED, Filters.<ObjectAction>any()); return firstAction(actions, id); } @Override public ObjectAction getObjectAction(final String id) { - final List<ObjectAction> actions = + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + + final List<ObjectAction> actions = getObjectActions(ActionType.ALL, Contributed.INCLUDED, Filters.<ObjectAction>any()); return firstAction(actions, id); } @@ -389,6 +399,8 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl //region > getMember, catalog... (not API) public ObjectMember getMember(final Method method) { + introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED); + if (membersByMethod == null) { this.membersByMethod = catalogueMembers(); } @@ -405,8 +417,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl private void cataloguePropertiesAndCollections(final Map<Method, ObjectMember> membersByMethod) { final Filter<ObjectAssociation> noop = Filters.anyOfType(ObjectAssociation.class); final List<ObjectAssociation> fields = getAssociations(Contributed.EXCLUDED, noop); - for (int i = 0; i < fields.size(); i++) { - final ObjectAssociation field = fields.get(i); + for (final ObjectAssociation field : fields) { final List<Facet> facets = field.getFacets(ImperativeFacet.FILTER); for (final Facet facet : facets) { final ImperativeFacet imperativeFacet = ImperativeFacet.Util.getImperativeFacet(facet); diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerInitParameters.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerInitParameters.java index dee668a..64c871f 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerInitParameters.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerInitParameters.java @@ -57,7 +57,7 @@ public class OptionHandlerInitParameters extends OptionHandlerAbstract { @Override public void prime(final IsisConfigurationBuilder isisConfigurationBuilder) { Map<String,String> additionalProperties = asMap(servletContext); - LOG.info("priming configuration builder: {} properties to prime", additionalProperties.size()); + LOG.debug("priming configuration builder: {} properties to prime", additionalProperties.size()); addConfigurationProperties(isisConfigurationBuilder, additionalProperties); } @@ -78,7 +78,7 @@ public class OptionHandlerInitParameters extends OptionHandlerAbstract { for (final String propertyKey : additionalProperties.keySet()) { final String propertyValue = additionalProperties.get(propertyKey); - LOG.info("priming: {}={}", propertyKey, propertyValue); + LOG.debug("priming: {}={}", propertyKey, propertyValue); isisConfigurationBuilder.add(propertyKey, propertyValue); } } diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java index d5f5fe0..06d7ba6 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java @@ -46,7 +46,6 @@ import org.apache.isis.applib.annotation.DomainService; import org.apache.isis.applib.annotation.DomainServiceLayout; import org.apache.isis.applib.annotation.Mixin; import org.apache.isis.applib.annotation.Nature; -import org.apache.isis.applib.annotation.NatureOfService; import org.apache.isis.applib.annotation.Programmatic; import org.apache.isis.applib.annotation.ViewModel; import org.apache.isis.applib.annotation.ViewModelLayout; @@ -153,14 +152,6 @@ public abstract class IsisComponentProvider { final Set<Class<?>> domainServiceTypes = Sets.newLinkedHashSet(); domainServiceTypes.addAll(reflections.getTypesAnnotatedWith(DomainService.class)); - final Set<Class<?>> contributingDomainServiceTypes = FluentIterable.from(domainServiceTypes) - .filter(new Predicate<Class<?>>() { - @Override public boolean apply(@Nullable final Class<?> aClass) { - final DomainService domainService = aClass.getAnnotation(DomainService.class); - return domainService.nature() == NatureOfService.VIEW || - domainService.nature() == NatureOfService.VIEW_CONTRIBUTIONS_ONLY; - } - }).toSet(); domainServiceTypes.addAll(reflections.getTypesAnnotatedWith(DomainServiceLayout.class)); @@ -227,7 +218,6 @@ public abstract class IsisComponentProvider { }).toList(); registry.setDomainServiceTypes(withinPackageAndNotAnonymous(packagesWithDotSuffix, domainServiceTypes)); - registry.setContributingDomainServiceTypes(withinPackageAndNotAnonymous(packagesWithDotSuffix, contributingDomainServiceTypes)); registry.setPersistenceCapableTypes(withinPackageAndNotAnonymous(packagesWithDotSuffix, persistenceCapableTypes)); registry.setFixtureScriptTypes(withinPackageAndNotAnonymous(packagesWithDotSuffix, fixtureScriptTypes)); registry.setMixinTypes(withinPackageAndNotAnonymous(packagesWithDotSuffix, mixinTypes)); diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java index b15f156..deff2d1 100644 --- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java +++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java @@ -407,8 +407,8 @@ public class IsisWicketApplication if(getDeploymentCategory().isPrototyping()) { DebugDiskDataStore.register(this); - LOG.info("DebugDiskDataStore registered; access via ~/wicket/internal/debug/diskDataStore"); - LOG.info("DebugDiskDataStore: eg, http://localhost:8080/wicket/wicket/internal/debug/diskDataStore"); + LOG.debug("DebugDiskDataStore registered; access via ~/wicket/internal/debug/diskDataStore"); + LOG.debug("DebugDiskDataStore: eg, http://localhost:8080/wicket/wicket/internal/debug/diskDataStore"); } if(!getDebugSettings().isDevelopmentUtilitiesEnabled()) { @@ -429,10 +429,10 @@ public class IsisWicketApplication } } - LOG.info("storeSettings.inmemoryCacheSize : {}", getStoreSettings().getInmemoryCacheSize()); - LOG.info("storeSettings.asynchronousQueueCapacity: {}", getStoreSettings().getAsynchronousQueueCapacity()); - LOG.info("storeSettings.maxSizePerSession : {}", getStoreSettings().getMaxSizePerSession()); - LOG.info("storeSettings.fileStoreFolder : {}", getStoreSettings().getFileStoreFolder()); + LOG.debug("storeSettings.inmemoryCacheSize : {}", getStoreSettings().getInmemoryCacheSize()); + LOG.debug("storeSettings.asynchronousQueueCapacity: {}", getStoreSettings().getAsynchronousQueueCapacity()); + LOG.debug("storeSettings.maxSizePerSession : {}", getStoreSettings().getMaxSizePerSession()); + LOG.debug("storeSettings.fileStoreFolder : {}", getStoreSettings().getFileStoreFolder()); } catch(RuntimeException ex) { // because Wicket's handling in its WicketFilter (that calls this method) does not log the exception. diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties index 573a664..b0a0872 100644 --- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties +++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/logging.properties @@ -27,7 +27,7 @@ log4j.rootCategory=INFO, Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.target=System.out log4j.appender.Console.layout=org.apache.log4j.PatternLayout -log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} [%-20c{1} %-10t %-5p] %m%n +log4j.appender.Console.layout.ConversionPattern=%-5r %d{ABSOLUTE} [%-20c{1} %-10t %-5p] %m%n # The stderr appender @@ -122,8 +122,8 @@ log4j.additivity.org.apache.isis.core.runtime.threadpool.ThreadPoolSupport=false # DataNucleus # the first two log the DML and DDL (if set to DEBUG) -log4j.logger.DataNucleus.Datastore.Native=DEBUG, Console, sql-dml -log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console, sql-ddl +log4j.logger.DataNucleus.Datastore.Native=INFO, Console, sql-dml +log4j.logger.DataNucleus.Datastore.Schema=INFO, Console, sql-ddl #log4j.logger.DataNucleus.Datastore.Native=WARN, Console, sql-dml #log4j.logger.DataNucleus.Datastore.Schema=WARN, Console, sql-ddl # the remainder can probably be left to WARN @@ -207,6 +207,8 @@ log4j.additivity.DataNucleus.Datastore.IDE=false log4j.logger.org.apache.isis.viewer.wicket.viewer.TargetRespondListenerToResetQueryResultCache=DEBUG,Console log4j.additivity.org.apache.isis.viewer.wicket.viewer.TargetRespondListenerToResetQueryResultCache=false +log4j.logger.org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract=INFO,Console +log4j.additivity.org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract=false # quieten some of the noisier classes in Isis' bootstrapping @@ -242,3 +244,5 @@ log4j.additivity.dom.simple.SimpleObject=false # ERROR to suppress the WARNings we get as of 1.15.0 log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,Console log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false + +