From ce078c9c70ff4b5b801a939e29190246f571062f Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 17 Jan 2014 10:54:34 +0000
Subject: [PATCH] Additional opendj-config-maven-plugin fix for OOME in small JVMs:
---
opendj-sdk/opendj-config-maven-plugin/src/main/java/org/forgerock/opendj/maven/GenerateConfigMojo.java | 23 +++++++++++++----------
1 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/opendj-sdk/opendj-config-maven-plugin/src/main/java/org/forgerock/opendj/maven/GenerateConfigMojo.java b/opendj-sdk/opendj-config-maven-plugin/src/main/java/org/forgerock/opendj/maven/GenerateConfigMojo.java
index ee94935..b126990 100644
--- a/opendj-sdk/opendj-config-maven-plugin/src/main/java/org/forgerock/opendj/maven/GenerateConfigMojo.java
+++ b/opendj-sdk/opendj-config-maven-plugin/src/main/java/org/forgerock/opendj/maven/GenerateConfigMojo.java
@@ -34,8 +34,8 @@
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
+import java.util.Queue;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -154,7 +154,7 @@
private Templates stylesheetProfileCLI;
private Templates stylesheetMessages;
private Templates stylesheetManifest;
- private final List<Future<?>> tasks = new LinkedList<Future<?>>();
+ private final Queue<Future<?>> tasks = new LinkedList<Future<?>>();
private final URIResolver resolver = new URIResolver() {
@@ -217,14 +217,14 @@
private void createTransformTask(final StreamSourceFactory inputFactory, final StreamResult output,
final Templates stylesheet, final ExecutorService executor, final String... parameters)
throws Exception {
- final Transformer transformer = stylesheet.newTransformer();
- transformer.setURIResolver(resolver);
- for (int i = 0; i < parameters.length; i += 2) {
- transformer.setParameter(parameters[i], parameters[i + 1]);
- }
final Future<Void> future = executor.submit(new Callable<Void>() {
@Override
public Void call() throws Exception {
+ final Transformer transformer = stylesheet.newTransformer();
+ transformer.setURIResolver(resolver);
+ for (int i = 0; i < parameters.length; i += 2) {
+ transformer.setParameter(parameters[i], parameters[i + 1]);
+ }
transformer.transform(inputFactory.newStreamSource(), output);
return null;
}
@@ -325,8 +325,12 @@
"type", entry.getKey());
}
- // Wait for all transformations to complete and cleanup.
- for (final Future<?> task : tasks) {
+ /*
+ * Wait for all transformations to complete and cleanup. Remove the
+ * completed tasks from the list as we go in order to free up
+ * memory.
+ */
+ for (Future<?> task = tasks.poll(); task != null; task = tasks.poll()) {
task.get();
}
} finally {
@@ -460,5 +464,4 @@
}
getLog().info("Found " + componentDescriptors.size() + " XML descriptors");
}
-
}
--
Gitblit v1.10.0