From 304117261f29f94fb4b34fc21c4b82933f0f7a67 Mon Sep 17 00:00:00 2001 From: Michael Dick Date: Tue, 5 Feb 2008 18:58:08 +0000 Subject: [PATCH] OPENJPA-401 making temporary classloader optional for MappingTool ant task git-svn-id: https://svn.apache.org/repos/asf/openjpa/branches/1.0.x@618744 13f79535-47bb-0310-9956-ffa450edef68 --- .../openjpa/jdbc/ant/MappingToolTask.java | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java index 0c9e95092..3365a934f 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java @@ -49,6 +49,7 @@ import org.apache.openjpa.util.MultiLoaderClassResolver; *
  • file
  • *
  • schemaFile
  • *
  • sqlFile
  • + *
  • tmpClassLoader
  • * Of these arguments, only action is required. */ public class MappingToolTask @@ -61,6 +62,7 @@ public class MappingToolTask protected String file = null; protected String schemaFile = null; protected String sqlFile = null; + protected boolean tmpClassLoader = true; /** * Set the enumerated MappingTool action type. @@ -175,22 +177,28 @@ public class MappingToolTask throws Exception { if (MappingTool.ACTION_IMPORT.equals(flags.action)) assertFiles(files); + ClassLoader toolLoader = (ClassLoader) AccessController + .doPrivileged(J2DoPrivHelper + .getClassLoaderAction(MappingTool.class)); + ClassLoader loader = toolLoader; + MultiLoaderClassResolver resolver = new MultiLoaderClassResolver(); + + if (tmpClassLoader) { + loader = (ClassLoader) AccessController.doPrivileged(J2DoPrivHelper + + .newTemporaryClassLoaderAction(getClassLoader())); + resolver.addClassLoader(loader); + } + resolver.addClassLoader(toolLoader); - ClassLoader loader = - (ClassLoader) AccessController.doPrivileged(J2DoPrivHelper - .newTemporaryClassLoaderAction(getClassLoader())); - if (flags.meta && MappingTool.ACTION_ADD.equals(flags.action)) flags.metaDataFile = Files.getFile(file, loader); else flags.mappingWriter = Files.getWriter(file, loader); + flags.schemaWriter = Files.getWriter(schemaFile, loader); flags.sqlWriter = Files.getWriter(sqlFile, loader); - MultiLoaderClassResolver resolver = new MultiLoaderClassResolver(); - resolver.addClassLoader((ClassLoader) AccessController.doPrivileged( - J2DoPrivHelper.getClassLoaderAction(MappingTool.class))); - resolver.addClassLoader(loader); JDBCConfiguration conf = (JDBCConfiguration) getConfiguration(); conf.setClassResolver(resolver); @@ -218,5 +226,18 @@ public class MappingToolTask return actions; } } + + /** + *

    + * Set whether a temporary ClassLoader should be used by the MappingTool. + * The default value is true + *

    + * + * @param tmpClassLoader + * Whether the temporary ClassLoader should be used. + */ + public void setTmpClassLoader(boolean tmpClassLoader) { + this.tmpClassLoader = tmpClassLoader; + } }