SLING-10201 fix unclosed JCR session (#4)
fix some typos in logging
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 4d88d8a..828763c 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
@@ -43,6 +43,7 @@
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -61,7 +62,7 @@
private File statusFile;
@ObjectClassDefinition(
- name = "Executionplan based Repository Initializer"
+ name = "Execution plan based Repository Initializer"
)
@interface Config {
@@ -151,21 +152,19 @@
st.open();
logger.info("Waiting for PackageRegistry.");
PackageRegistry registry = (PackageRegistry) st.waitForService(0);
- logger.info("PackageRegistry found - starting execution of executionplan");
+ logger.info("PackageRegistry found - starting execution of execution plan");
+ ExecutionPlanBuilder builder = registry.createExecutionPlan();
@SuppressWarnings("deprecation")
Session session = slingRepository.loginAdministrative(null);
- ExecutionPlanBuilder builder = registry.createExecutionPlan();
- BufferedWriter writer = null;
- try {
- writer = new BufferedWriter(new FileWriter(statusFile));
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(statusFile))) {
for (String plan : executionPlans) {
- builder.load(new ByteArrayInputStream(plan.getBytes("UTF-8")));
+ builder.load(new ByteArrayInputStream(plan.getBytes(StandardCharsets.UTF_8)));
builder.with(session);
ExecutionPlan xplan = builder.execute();
if (xplan.getTasks().size() > 0) {
if (xplan.hasErrors()) {
- IllegalStateException ex = new IllegalStateException("Excecutionplan execution contained errors - cannot complete repository initialization.");
+ IllegalStateException ex = new IllegalStateException("Execution plan contained errors - cannot complete repository initialization.");
for (PackageTask task : xplan.getTasks()) {
if (PackageTask.State.ERROR.equals(task.getState())){
ex.addSuppressed(task.getError());
@@ -173,9 +172,9 @@
}
throw ex;
}
- logger.info("executionplan executed with {} entries", xplan.getTasks().size());
+ logger.info("Execution plan executed with {} entries", xplan.getTasks().size());
} else {
- logger.info("No tasks found in executionplan - no additional packages installed.");
+ logger.info("No tasks found in execution plan - no additional packages installed.");
}
// save hashes to file for crosscheck on subsequent startup to avoid double processing
@@ -184,15 +183,13 @@
}
} finally {
- if (writer != null) {
- writer.close();
- }
+ session.logout();
}
} finally {
st.close();
}
} else {
- logger.info("No executionplans configured skipping init.");
+ logger.info("No execution plans configured - skipping init.");
}
}
}
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 123a3cd..3627f52 100644
--- a/src/test/java/org/apache/sling/jcr/packageinit/ExecutionPlanRepoInitializerTest.java
+++ b/src/test/java/org/apache/sling/jcr/packageinit/ExecutionPlanRepoInitializerTest.java
@@ -39,6 +39,10 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import javax.jcr.LoginException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.vault.packaging.PackageException;
import org.apache.jackrabbit.vault.packaging.PackageId;
@@ -97,6 +101,9 @@
@Mock
SlingRepository slingRepo;
+ @Mock
+ Session adminSession;
+
@Spy
PackageRegistry registry = new FSPackageRegistry();
@@ -117,7 +124,7 @@
@Before
- public void setup() throws IOException, PackageException {
+ public void setup() throws IOException, PackageException, LoginException, RepositoryException {
when(registry.createExecutionPlan()).thenReturn(builder);
when(builder.execute()).thenReturn(xplan);
this.statusFile = temporaryFolder.newFile(STATUSFILE_NAME + UUID.randomUUID());
@@ -126,6 +133,7 @@
listAppender.start();
logger.addAppender(listAppender);
foundExceptions = new ArrayList<Exception>();
+ when(slingRepo.loginAdministrative(null)).thenReturn(adminSession);
}
@After
@@ -141,7 +149,7 @@
initializer.processRepository(slingRepo);
List<ILoggingEvent> logsList = listAppender.list;
assertThat(logsList.get(0).getFormattedMessage(),
- is("No executionplans configured skipping init."));
+ is("No execution plans configured - skipping init."));
}
@@ -224,7 +232,7 @@
List<ILoggingEvent> logsList = listAppender.list;
assertEquals("Waiting for PackageRegistry.", logsList.get(0)
.getMessage());
- assertEquals("PackageRegistry found - starting execution of executionplan", logsList.get(1)
+ assertEquals("PackageRegistry found - starting execution of execution plan", logsList.get(1)
.getMessage());
}