You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/01/27 10:21:40 UTC

[sling-org-apache-sling-jcr-packageinit] 10/25: SLING-8010 - replacing nullcheck by check for empty list as it is always initialized

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-packageinit.git

commit 3c89f7fa5943a024fc88f54b9e0853d128201d14
Author: Dominik Suess <su...@adobe.com>
AuthorDate: Fri Oct 12 14:25:52 2018 +0200

    SLING-8010 - replacing nullcheck by check for empty list as it is always initialized
---
 .gitignore                                         |  3 ++
 .../impl/ExecutionPlanRepoInitializer.java         |  2 +-
 .../ExecutionPlanRepoInitializerTest.java          | 47 +++++++++++++++++++---
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7aba5f8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.settings
+.classpath
+.project
diff --git a/src/main/java/org/apache/sling/jcr/packageinit/impl/ExecutionPlanRepoInitializer.java b/src/main/java/org/apache/sling/jcr/packageinit/impl/ExecutionPlanRepoInitializer.java
index 8631cf7..9d5346f 100644
--- a/src/main/java/org/apache/sling/jcr/packageinit/impl/ExecutionPlanRepoInitializer.java
+++ b/src/main/java/org/apache/sling/jcr/packageinit/impl/ExecutionPlanRepoInitializer.java
@@ -143,7 +143,7 @@ public class ExecutionPlanRepoInitializer implements SlingRepositoryInitializer
 
     @Override
     public void processRepository(SlingRepository slingRepository) throws Exception {
-        if (executionPlans != null) {
+        if (!executionPlans.isEmpty()) {
             ServiceTracker<PackageRegistry, ?> st = new ServiceTracker<>(context, PackageRegistry.class, null);
             try {
                 st.open();
diff --git a/src/test/java/org/apache/sling/jcr/packageinit/ExecutionPlanRepoInitializerTest.java b/src/test/java/org/apache/sling/jcr/packageinit/ExecutionPlanRepoInitializerTest.java
index 40f4157..822ae8b 100644
--- a/src/test/java/org/apache/sling/jcr/packageinit/ExecutionPlanRepoInitializerTest.java
+++ b/src/test/java/org/apache/sling/jcr/packageinit/ExecutionPlanRepoInitializerTest.java
@@ -16,7 +16,9 @@
  */
 package org.apache.sling.jcr.packageinit;
 
+import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.never;
@@ -45,15 +47,23 @@ import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.jcr.packageinit.impl.ExecutionPlanRepoInitializer;
 import org.apache.sling.testing.mock.osgi.MockOsgi;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
 import org.mockito.Mock;
 import org.mockito.Spy;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.core.Appender;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ExecutionPlanRepoInitializerTest {
@@ -93,10 +103,15 @@ public class ExecutionPlanRepoInitializerTest {
     @Mock
     ExecutionPlanBuilder builder2;
 
-
     @Mock
     ExecutionPlan xplan;
 
+    @Mock
+    private Appender<ILoggingEvent> mockAppender;
+    
+    @Captor
+    private ArgumentCaptor<LoggingEvent> captorLoggingEvent;
+
     private File statusFile;
     
 
@@ -105,11 +120,31 @@ public class ExecutionPlanRepoInitializerTest {
         when(registry.createExecutionPlan()).thenReturn(builder);
         when(builder.execute()).thenReturn(xplan);
         this.statusFile = temporaryFolder.newFile(STATUSFILE_NAME + UUID.randomUUID());
+        final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+        logger.addAppender(mockAppender);
     }
 
+    @After
+    public void teardown() {
+        final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+        logger.detachAppender(mockAppender);
+    }
+
+    @Test
+    public void skipWithoutExecution() throws Exception {
+        ExecutionPlanRepoInitializer initializer = registerRepoInitializer(new String[]{});
+
+        initializer.processRepository(slingRepo);
+        verify(mockAppender).doAppend(captorLoggingEvent.capture());
+        final LoggingEvent loggingEvent = captorLoggingEvent.getValue();
+        assertThat(loggingEvent.getFormattedMessage(),
+                is("No executionplans configured skipping init."));
+    }
+
+
     @Test
     public void waitForRegistryAndInstall() throws Exception {
-        ExecutionPlanRepoInitializer initializer = registerRepoInitializer();
+        ExecutionPlanRepoInitializer initializer = registerRepoInitializer(EXECUTIONSPLANS);
 
         CountDownLatch cdl = new CountDownLatch(1);
         processRepository(initializer, cdl);
@@ -131,7 +166,7 @@ public class ExecutionPlanRepoInitializerTest {
 
     @Test
     public void doubleExecute() throws Exception {
-        ExecutionPlanRepoInitializer initializer = registerRepoInitializer();
+        ExecutionPlanRepoInitializer initializer = registerRepoInitializer(EXECUTIONSPLANS);
 
         CountDownLatch cdl = new CountDownLatch(1);
         processRepository(initializer, cdl);
@@ -147,7 +182,7 @@ public class ExecutionPlanRepoInitializerTest {
         when(registry.createExecutionPlan()).thenReturn(builder2);
         
         MockOsgi.deactivate(initializer, context.bundleContext());
-        initializer = registerRepoInitializer();
+        initializer = registerRepoInitializer(EXECUTIONSPLANS);
         processRepository(initializer, cdl);;
         
         cdl.await(500, TimeUnit.MILLISECONDS);
@@ -155,10 +190,10 @@ public class ExecutionPlanRepoInitializerTest {
 
     }
 
-    private ExecutionPlanRepoInitializer registerRepoInitializer() {
+    private ExecutionPlanRepoInitializer registerRepoInitializer(String[] executionPlans) {
         ExecutionPlanRepoInitializer initializer = new ExecutionPlanRepoInitializer();
         Dictionary<String, Object> props = new Hashtable<String, Object>();
-        props.put("executionplans", EXECUTIONSPLANS);
+        props.put("executionplans", executionPlans);
         props.put("statusfilepath", statusFile.getAbsolutePath());
         context.registerInjectActivateService(initializer, props);
         return initializer;