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/27 08:34:36 UTC

[isis] branch v2 updated: ISIS-2158: internal API: add shortcuts for trimmed string splitting

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 e15ed4b  ISIS-2158: internal API: add shortcuts for trimmed string splitting
e15ed4b is described below

commit e15ed4b356765a2d81a70c67092b6ed00070ded5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Sep 27 10:34:26 2019 +0200

    ISIS-2158: internal API: add shortcuts for trimmed string splitting
    
    - also resurrecting smoketest 'SpringServiceProvisioningTest'
---
 .../isis/commons/internal/base/_Strings.java       | 29 ++++++-
 .../SpringServiceProvisioningTest.java             | 30 +++++---
 .../testdomain/bootstrapping/builtin-IsisBoot.list | 90 ++++++++++++++++++++++
 .../builtin-requestscoped.json                     |  0
 .../builtin-singleton.json                         |  0
 .../isis/testdomain/tests/builtin-IsisBoot.json    | 29 -------
 6 files changed, 134 insertions(+), 44 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
index 618cd86..5db2260 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
@@ -353,7 +353,7 @@ public final class _Strings {
                 Spliterators.spliteratorUnknownSize(splitIterator(input, separator), Spliterator.ORDERED),
                 false); // not parallel
     }
-
+    
     /**
      * Creates a stream from the given input sequence around matches of {@code delimiterPattern}. 
      * @param input
@@ -361,13 +361,13 @@ public final class _Strings {
      * @return
      */
     public static Stream<String> splitThenStream(@Nullable final CharSequence input, Pattern delimiterPattern) {
-        requires(delimiterPattern, "delimiterPattern");
         if(isEmpty(input)) {
             return Stream.of();
         }
+        requires(delimiterPattern, "delimiterPattern");
         return delimiterPattern.splitAsStream(input);
     }
-
+    
 
     public static void splitThenAccept(
             @Nullable final String input, 
@@ -510,7 +510,28 @@ public final class _Strings {
         return suffix(fileName, prefix(fileExtension, "."));
     }
 
+    // -- SHORTCUTS
 
-
+    /**
+     * Like {@link _Strings#splitThenStream(String, String)} but also trimming each junk, then discarding
+     * empty chunks.
+     * @return empty stream if {@code input} is null
+     */
+    public static Stream<String> splitThenStreamTrimmed(@Nullable String input, String separator) {
+        return splitThenStream(input, separator)
+                .map(String::trim)
+                .filter(String::isEmpty);
+    }
+    
+    /**
+     * Like {@link _Strings#splitThenStream(CharSequence, Pattern)} but also trimming each junk, 
+     * then discarding empty chunks.
+     * @return empty stream if {@code input} is null
+     */
+    public static Stream<String> splitThenStreamTrimmed(@Nullable CharSequence input, Pattern delimiterPattern) {
+        return splitThenStream(input, delimiterPattern)
+                .map(String::trim)
+                .filter(String::isEmpty);
+    }
 
 }
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
index 49c1019..be426ab 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
@@ -18,27 +18,27 @@
  */
 package org.apache.isis.testdomain.bootstrapping;
 
-import static org.apache.isis.commons.internal.collections._Collections.toStringJoiningNewLine;
-import static org.apache.isis.commons.internal.collections._Sets.intersectSorted;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.TreeSet;
 import java.util.stream.Collectors;
 
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.ioc.BeanAdapter;
-import org.apache.isis.commons.internal.resources._Json;
 import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.runtime.system.context.IsisContext;
+//import org.apache.isis.testdomain.Incubating;
 import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 
+import static org.apache.isis.commons.internal.collections._Collections.toStringJoiningNewLine;
+import static org.apache.isis.commons.internal.collections._Sets.intersectSorted;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 import lombok.val;
 
 @Smoketest
@@ -51,7 +51,7 @@ import lombok.val;
                 // "isis.reflector.introspector.parallelize=false",
                 // "logging.level.org.apache.isis.metamodel.specloader.specimpl.ObjectSpecificationAbstract=TRACE"
         })
-@Disabled("with development work on 'v2' the reference list of services constantly changes")
+//@Incubating("with development work on 'v2' the reference list of services constantly changes")
 class SpringServiceProvisioningTest {
 
     @BeforeEach
@@ -68,13 +68,21 @@ class SpringServiceProvisioningTest {
                 .map(Class::getName)
                 .collect(Collectors.toCollection(TreeSet::new));
 
-        val singletonJson = _Resources.loadAsString(this.getClass(), "builtin-IsisBoot.json", StandardCharsets.UTF_8);
-        val singletonSet = new TreeSet<>(_Json.readJsonList(String.class, singletonJson));
+        val singletonListing = _Resources.loadAsString(
+                this.getClass(), "builtin-IsisBoot.json", StandardCharsets.UTF_8);
+        val expectedSingletons = _Strings.splitThenStreamTrimmed(singletonListing, "\n")
+                .collect(Collectors.toCollection(TreeSet::new));
+        
+        val servicesFound = toStringJoiningNewLine(managedServices);
+        System.out.println("--- Beans discovered by Isis ---");
+        System.out.println(servicesFound);
+        System.out.println("--------------------------------");
+        
 
         // same as managedServices.containsAll(singletonSet) but more verbose in case of
         // failure
-        assertEquals(toStringJoiningNewLine(singletonSet),
-                toStringJoiningNewLine(intersectSorted(managedServices, singletonSet)));
+        assertEquals(toStringJoiningNewLine(expectedSingletons),
+                toStringJoiningNewLine(intersectSorted(managedServices, expectedSingletons)));
 
         // TODO also test for request-scoped service (requires a means to mock a
         // request-context)
diff --git a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-IsisBoot.list b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-IsisBoot.list
new file mode 100644
index 0000000..0eb408e
--- /dev/null
+++ b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-IsisBoot.list
@@ -0,0 +1,90 @@
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto$CopyOverFromCommand
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandsDto
+org.apache.isis.applib.mixins.dto.DtoMappingHelper
+org.apache.isis.applib.services.audit.AuditerServiceLogging
+org.apache.isis.applib.services.clock.ClockService
+org.apache.isis.applib.services.command.CommandContext
+org.apache.isis.applib.services.confview.ConfigurationMenu
+org.apache.isis.applib.services.iactn.InteractionContext
+org.apache.isis.applib.services.jaxb.JaxbServiceDefault
+org.apache.isis.applib.services.layout.LayoutServiceMenu
+org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+org.apache.isis.applib.services.publish.PublisherServiceLogging
+org.apache.isis.applib.services.queryresultscache.QueryResultsCacheInternal
+org.apache.isis.applib.services.scratchpad.Scratchpad
+org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+org.apache.isis.applib.services.tablecol.TableColumnOrderService$Default
+org.apache.isis.applib.services.urlencoding.UrlEncodingServiceWithCompression
+org.apache.isis.config.beans.WebAppConfigBean
+org.apache.isis.extensions.fixtures.FixturesEventService
+org.apache.isis.extensions.fixtures.FixturesLifecyleService
+org.apache.isis.extensions.fixtures.fixturescripts.ExecutionParametersService
+org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsDefault
+org.apache.isis.extensions.fixtures.legacy.queryresultscache.QueryResultsCacheControlInternal
+org.apache.isis.jdo.jdosupport.IsisJdoSupportDN5
+org.apache.isis.jdo.metrics.MetricsServiceDefault
+org.apache.isis.jdo.persistence.IsisPlatformTransactionManagerForJdo
+org.apache.isis.metamodel.services.ServiceInjectorDefault
+org.apache.isis.metamodel.services.appfeat.ApplicationFeatureFactory
+org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault
+org.apache.isis.metamodel.services.events.MetamodelEventService
+org.apache.isis.metamodel.services.exceprecog.ExceptionRecognizerDocDefault
+org.apache.isis.metamodel.services.grid.GridLoaderServiceDefault
+org.apache.isis.metamodel.services.grid.GridReaderUsingJaxb
+org.apache.isis.metamodel.services.grid.GridServiceDefault
+org.apache.isis.metamodel.services.grid.bootstrap3.GridSystemServiceBS3
+org.apache.isis.metamodel.services.layout.LayoutServiceDefault
+org.apache.isis.metamodel.services.metamodel.MetaModelServiceDefault
+org.apache.isis.metamodel.services.registry.ServiceRegistryDefault
+org.apache.isis.metamodel.services.repository.RepositoryServiceJdo
+org.apache.isis.metamodel.services.swagger.SwaggerServiceDefault
+org.apache.isis.metamodel.services.title.TitleServiceDefault
+org.apache.isis.metamodel.services.user.UserServiceDefault
+org.apache.isis.metamodel.services.user.UserServiceDefault$SudoServiceSpi
+org.apache.isis.metamodel.specloader.InjectorMethodEvaluatorDefault
+org.apache.isis.metamodel.specloader.MetaModelValidatorServiceDefault
+org.apache.isis.metamodel.specloader.ProgrammingModelServiceDefault
+org.apache.isis.metamodel.specloader.SpecificationLoaderDefault
+org.apache.isis.runtime.services.authsess.AuthenticationSessionProviderDefault
+org.apache.isis.runtime.services.background.BackgroundServiceDefault
+org.apache.isis.runtime.services.background.CommandExecutorServiceDefault
+org.apache.isis.runtime.services.bookmarks.BookmarkServiceInternalDefault
+org.apache.isis.runtime.services.command.CommandDtoServiceInternalDefault
+org.apache.isis.runtime.services.command.CommandServiceDefault
+org.apache.isis.runtime.services.confmenu.ConfigurationViewServiceDefault
+org.apache.isis.runtime.services.email.EmailServiceDefault
+org.apache.isis.runtime.services.eventbus.EventBusServiceSpring
+org.apache.isis.runtime.services.factory.FactoryServiceInternalDefault
+org.apache.isis.runtime.services.homepage.HomePageResolverServiceDefault
+org.apache.isis.runtime.services.hsqldb.HsqlDbManagerMenu
+org.apache.isis.runtime.services.i18n.po.TranslationServicePo
+org.apache.isis.runtime.services.i18n.po.TranslationServicePoMenu
+org.apache.isis.runtime.services.ixn.InteractionDtoServiceInternalDefault
+org.apache.isis.runtime.services.menubars.MenuBarsLoaderServiceDefault
+org.apache.isis.runtime.services.menubars.bootstrap3.MenuBarsServiceBS3
+org.apache.isis.runtime.services.message.MessageServiceDefault
+org.apache.isis.runtime.services.persist.ObjectAdapterServiceDefault
+org.apache.isis.runtime.services.publish.PublishingServiceInternalDefault
+org.apache.isis.runtime.services.routing.RoutingServiceDefault
+org.apache.isis.runtime.services.sessmgmt.SessionManagementServiceDefault
+org.apache.isis.runtime.services.sse.EventStreamServiceDefault
+org.apache.isis.runtime.services.sudo.SudoServiceDefault
+org.apache.isis.runtime.services.userprof.UserProfileServiceDefault
+org.apache.isis.runtime.services.userreg.EmailNotificationServiceDefault
+org.apache.isis.runtime.services.xactn.TransactionServiceSpring
+org.apache.isis.runtime.services.xmlsnapshot.XmlSnapshotServiceDefault
+org.apache.isis.runtime.system.context.session.RuntimeEventService
+org.apache.isis.runtime.system.persistence.JdoPersistenceLifecycleService
+org.apache.isis.runtime.system.persistence.events.PersistenceEventService
+org.apache.isis.runtime.system.persistence.events.TimestampService
+org.apache.isis.runtime.system.session.IsisSessionFactoryDefault
+org.apache.isis.runtime.system.transaction.AuditingServiceInternal
+org.apache.isis.runtime.system.transaction.ChangedObjectsServiceInternal
+org.apache.isis.runtime.system.transaction.PersistenceSessionServiceInternalDefault
+org.apache.isis.security.authentication.bypass.AuthenticatorBypass
+org.apache.isis.security.authentication.manager.AuthorizationManagerStandard
+org.apache.isis.security.authentication.standard.AuthenticationManagerStandard
+org.apache.isis.security.authorization.bypass.AuthorizorBypass
+org.apache.isis.testdomain.jdo.InventoryResource
+org.apache.isis.wrapper.WrapperFactoryDefault
\ No newline at end of file
diff --git a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-requestscoped.json b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-requestscoped.json
similarity index 100%
rename from examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-requestscoped.json
rename to examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-requestscoped.json
diff --git a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-singleton.json b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-singleton.json
similarity index 100%
rename from examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-singleton.json
rename to examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-singleton.json
diff --git a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-IsisBoot.json b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-IsisBoot.json
deleted file mode 100644
index cc7659c..0000000
--- a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/tests/builtin-IsisBoot.json
+++ /dev/null
@@ -1,29 +0,0 @@
-[
-  "org.apache.isis.applib.services.clock.ClockService",
-  "org.apache.isis.applib.services.jaxb.JaxbServiceDefault",
-  "org.apache.isis.applib.services.publish.PublisherServiceLogging",
-  "org.apache.isis.applib.services.queryresultscache.QueryResultsCacheControlInternal",
-  "org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory",
-  "org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault",
-  "org.apache.isis.core.metamodel.services.exceprecog.ExceptionRecognizerDocDefault",
-  "org.apache.isis.core.metamodel.services.grid.GridLoaderServiceDefault",
-  "org.apache.isis.core.metamodel.services.grid.GridServiceDefault",
-  "org.apache.isis.core.metamodel.services.grid.bootstrap3.GridSystemServiceBS3",
-  "org.apache.isis.core.metamodel.services.layout.LayoutServiceDefault",
-  "org.apache.isis.core.metamodel.services.metamodel.MetaModelServiceDefault",
-  "org.apache.isis.core.metamodel.services.registry.ServiceRegistryDefault",
-  "org.apache.isis.core.metamodel.services.repository.RepositoryServiceInternalDefault",
-  "org.apache.isis.core.metamodel.services.swagger.SwaggerServiceDefault",
-  "org.apache.isis.core.metamodel.services.title.TitleServiceDefault",
-  "org.apache.isis.core.metamodel.services.user.UserServiceDefault",
-  "org.apache.isis.core.runtime.services.authsess.AuthenticationSessionProviderDefault",
-  "org.apache.isis.core.runtime.services.command.CommandServiceDefault",
-  "org.apache.isis.core.runtime.services.homepage.HomePageProviderServiceDefault",
-  "org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo",
-  "org.apache.isis.core.runtime.services.menubars.MenuBarsLoaderServiceDefault",
-  "org.apache.isis.core.runtime.services.menubars.bootstrap3.MenuBarsServiceBS3",
-  "org.apache.isis.core.runtime.services.message.MessageServiceDefault",
-  "org.apache.isis.core.runtime.services.xmlsnapshot.XmlSnapshotServiceDefault",
-  "org.apache.isis.security.authentication.standard.AuthenticationManagerStandard",
-  "org.apache.isis.core.wrapper.WrapperFactoryDefault"
- ]
\ No newline at end of file