This is an automated email from the ASF dual-hosted git repository.
rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git
The following commit(s) were added to refs/heads/master by this push:
new 119df60 [OPENJPA-2824] simplify OpenJPADirectoriesEnhancer runtime
when in auto mode
119df60 is described below
commit 119df603b8223043499b28410ce28a1edae22459
Author: Romain Manni-Bucau <[email protected]>
AuthorDate: Fri Jul 24 11:46:13 2020 +0200
[OPENJPA-2824] simplify OpenJPADirectoriesEnhancer runtime when in auto mode
---
.../internal/OpenJPADirectoriesEnhancer.java | 37 ++++++++++++----------
.../openjpa/junit5/internal/OpenJPAExtension.java | 3 --
2 files changed, 21 insertions(+), 19 deletions(-)
diff --git
a/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
b/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
index 19b4419..dd8e169 100644
---
a/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
+++
b/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
@@ -53,6 +53,7 @@ import java.nio.file.StandardOpenOption;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
import java.util.stream.Stream;
@@ -65,6 +66,8 @@ public class OpenJPADirectoriesEnhancer implements Runnable {
private static final Logger LOGGER =
Logger.getLogger(OpenJPADirectoriesEnhancer.class.getName());
public static final StackTraceElement[] NO_STACK_TRACE = new
StackTraceElement[0];
+ private static final AtomicBoolean AUTO_DONE = new AtomicBoolean(false);
+
private final boolean auto;
private final String[] entities;
private final Class<?> logFactory;
@@ -84,22 +87,24 @@ public class OpenJPADirectoriesEnhancer implements Runnable
{
thread.setContextClassLoader(enhancementClassLoader);
try {
if (auto) {
- try {
-
ClassLoaders.findUrls(enhancementClassLoader.getParent()).stream()
- .map(org.apache.xbean.finder.util.Files::toFile)
- .filter(File::isDirectory)
- .map(File::toPath)
- .forEach(dir -> {
- LOGGER.fine(() -> "Enhancing folder '" + dir +
"'");
- try {
- enhanceDirectory(enhancementClassLoader,
dir);
- } catch (final IOException e) {
- throw new IllegalStateException(e);
- }
- });
- } catch (final IOException e) {
- throw new IllegalStateException(e);
- }
+ if (AUTO_DONE.compareAndSet(false, true)) {
+ try {
+
ClassLoaders.findUrls(enhancementClassLoader.getParent()).stream()
+
.map(org.apache.xbean.finder.util.Files::toFile)
+ .filter(File::isDirectory)
+ .map(File::toPath)
+ .forEach(dir -> {
+ LOGGER.fine(() -> "Enhancing folder '" +
dir + "'");
+ try {
+
enhanceDirectory(enhancementClassLoader, dir);
+ } catch (final IOException e) {
+ throw new IllegalStateException(e);
+ }
+ });
+ } catch (final IOException e) {
+ throw new IllegalStateException(e);
+ }
+ } // else: already done, skip useless work
} else {
Stream.of(entities).forEach(e -> {
try {
diff --git
a/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPAExtension.java
b/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPAExtension.java
index 2cacd5e..86147e3 100644
---
a/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPAExtension.java
+++
b/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPAExtension.java
@@ -23,10 +23,7 @@ import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.platform.commons.util.AnnotationUtils;
-import java.util.logging.Logger;
-
public class OpenJPAExtension implements BeforeAllCallback {
- private static final Logger LOGGER =
Logger.getLogger(OpenJPAExtension.class.getName());
@Override
public void beforeAll(final ExtensionContext context) {