You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2004/11/14 00:08:02 UTC

svn commit: rev 65534 - geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment

Author: adc
Date: Sat Nov 13 15:08:02 2004
New Revision: 65534

Modified:
   geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
Log:
The configuration should be saved in the saveConfiguration method, not when a class loader is generated.

Added some javadocs, warning developers that the development context class path and class loader could get out of sync.

Modified: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
==============================================================================
--- geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java	(original)
+++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java	Sat Nov 13 15:08:02 2004
@@ -164,30 +164,96 @@
         dependencies.add(uri);
     }
 
+    /**
+     * Copy a packed jar file into the deployment context and place it into the
+     * path specified in the target path.  The newly added packed jar is added
+     * to the classpath of the configuration.
+     * <p/>
+     * NOTE: The class loader that is obtained from this deployment context
+     * may get out of sync with the newly augmented classpath; obtain a freshly
+     * minted class loader by calling <code>getClassLoader</code> method.
+     *
+     * @param targetPath where the packed jar file should be placed
+     * @param jarFile    the jar file to copy
+     * @throws IOException if there's a problem copying the jar file
+     */
     public void addIncludeAsPackedJar(URI targetPath, JarFile jarFile) throws IOException {
         File targetFile = getTargetFile(targetPath);
         DeploymentUtil.copyToPackedJar(jarFile, targetFile);
         classPath.add(targetPath);
     }
 
+    /**
+     * Copy a ZIP file entry into the deployment context and place it into the
+     * path specified in the target path.  The newly added entry is added
+     * to the classpath of the configuration.
+     * <p/>
+     * NOTE: The class loader that is obtained from this deployment context
+     * may get out of sync with the newly augmented classpath; obtain a freshly
+     * minted class loader by calling <code>getClassLoader</code> method.
+     *
+     * @param targetPath where the ZIP file entry should be placed
+     * @param zipFile    the ZIP file
+     * @param zipEntry   the ZIP file entry
+     * @throws IOException if there's a problem copying the ZIP entry
+     */
     public void addInclude(URI targetPath, ZipFile zipFile, ZipEntry zipEntry) throws IOException {
         File targetFile = getTargetFile(targetPath);
         addFile(targetFile, zipFile, zipEntry);
         classPath.add(targetPath);
     }
 
+    /**
+     * Copy a file into the deployment context and place it into the
+     * path specified in the target path.  The newly added file is added
+     * to the classpath of the configuration.
+     * <p/>
+     * NOTE: The class loader that is obtained from this deployment context
+     * may get out of sync with the newly augmented classpath; obtain a freshly
+     * minted class loader by calling <code>getClassLoader</code> method.
+     *
+     * @param targetPath where the file should be placed
+     * @param source     the URL of file to be copied
+     * @throws IOException if there's a problem copying the ZIP entry
+     */
     public void addInclude(URI targetPath, URL source) throws IOException {
         File targetFile = getTargetFile(targetPath);
         addFile(targetFile, source);
         classPath.add(targetPath);
     }
 
+    /**
+     * Copy a file into the deployment context and place it into the
+     * path specified in the target path.  The newly added file is added
+     * to the classpath of the configuration.
+     * <p/>
+     * NOTE: The class loader that is obtained from this deployment context
+     * may get out of sync with the newly augmented classpath; obtain a freshly
+     * minted class loader by calling <code>getClassLoader</code> method.
+     *
+     * @param targetPath where the file should be placed
+     * @param source     the file to be copied
+     * @throws IOException if there's a problem copying the ZIP entry
+     */
     public void addInclude(URI targetPath, File source) throws IOException {
         File targetFile = getTargetFile(targetPath);
         addFile(targetFile, source);
         classPath.add(targetPath);
     }
 
+    /**
+     * Import the classpath from a jar file's manifest.  The imported classpath
+     * is crafted relative to <code>moduleBaseUri</code>.
+     * <p/>
+     * NOTE: The class loader that is obtained from this deployment context
+     * may get out of sync with the newly augmented classpath; obtain a freshly
+     * minted class loader by calling <code>getClassLoader</code> method.
+     *
+     * @param moduleFile    the jar file from which the manifest is obtained.
+     * @param moduleBaseUri the base for the imported classpath
+     * @throws DeploymentException if there is a problem with the classpath in
+     *                             the manifest
+     */
     public void addManifestClassPath(JarFile moduleFile, URI moduleBaseUri) throws DeploymentException {
         Manifest manifest = null;
         try {
@@ -296,15 +362,6 @@
     }
 
     public ClassLoader getClassLoader(Repository repository) throws DeploymentException {
-        // save the dependencies and classpath
-        try {
-            config.setReferencePatterns("Repositories", Collections.singleton(new ObjectName("*:role=Repository,*")));
-            config.setAttribute("dependencies", new ArrayList(dependencies));
-            config.setAttribute("classPath", new ArrayList(classPath));
-        } catch (Exception e) {
-            throw new DeploymentException("Unable to initialize Configuration", e);
-        }
-
         // shouldn't user classpath come before dependencies?
         URL[] urls = new URL[dependencies.size() + classPath.size()];
         try {
@@ -339,10 +396,14 @@
 
     private void saveConfiguration() throws IOException, DeploymentException {
         // persist all the GBeans in this Configuration
+        // save the dependencies and classpath
         try {
             config.setAttribute("gBeanState", Configuration.storeGBeans(gbeans));
+            config.setReferencePatterns("Repositories", Collections.singleton(new ObjectName("*:role=Repository,*")));
+            config.setAttribute("dependencies", new ArrayList(dependencies));
+            config.setAttribute("classPath", new ArrayList(classPath));
         } catch (Exception e) {
-            throw new DeploymentException("Unable to persist GBeans", e);
+            throw new DeploymentException("Unable to initialize Configuration", e);
         }
 
         // save the persisted form in the archive