[jboss-cvs] JBossAS SVN: r96557 - in projects/ejb3/trunk/package-manager: src/main/java/org/jboss/ejb3/packagemanager and 16 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 19 06:49:10 EST 2009


Author: jaikiran
Date: 2009-11-19 06:49:09 -0500 (Thu, 19 Nov 2009)
New Revision: 96557

Added:
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageVersionComparator.java
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version1.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version2.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version1.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version2.xml
Modified:
   projects/ejb3/trunk/package-manager/pom.xml
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageContext.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManager.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerContext.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/DefaultDatabaseManager.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/PackageDatabaseManager.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageContext.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerContext.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerImpl.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Main.java
   projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/util/DBUtil.java
   projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml
   projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/commandline/unit/CommandLineTestCase.java
   projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/PackageManagerTestCase.java
   projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/dependency/unit/DependencyInstallTestCase.java
   projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/install/unit/BasicInstallTestCase.java
   projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/uninstall/unit/UnInstallTestCase.java
   projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/upgrade/unit/UpgradeUnitTestCase.java
   projects/ejb3/trunk/package-manager/src/test/resources/log4j.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-just-install-file.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-packaged-dependency.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-install-script.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-uninstall-script.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-install-script.xml
   projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-uninstall-script.xml
Log:
EJBTHREE-1942 Upgrade of packages now supported

Modified: projects/ejb3/trunk/package-manager/pom.xml
===================================================================
--- projects/ejb3/trunk/package-manager/pom.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/pom.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -225,7 +225,15 @@
             <artifactId>jbossts-common</artifactId>
             <version>4.4.0.GA</version>
         </dependency>
-
+        
+        <!--  Transactional file i/o -->
+        <!-- Note: This library might get a new home https://jira.jboss.org/jira/browse/JBTM-651
+        <dependency>
+            <groupId>org.jboss.jbossts</groupId>
+            <artifactId>jbossts-transactional-fileio</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+         -->
         <!-- Tests -->
         <dependency>
             <groupId>junit</groupId>

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageContext.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageContext.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageContext.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -36,7 +36,7 @@
  * @author Jaikiran Pai
  * @version $Revision: $
  */
-public interface PackageContext
+public interface PackageContext extends Comparable<PackageContext>
 {
 
    /**

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManager.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManager.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManager.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -22,9 +22,11 @@
 package org.jboss.ejb3.packagemanager;
 
 import java.net.URL;
+import java.util.Set;
 
 import javax.transaction.TransactionManager;
 
+import org.jboss.ejb3.packagemanager.db.PackageDatabaseManager;
 import org.jboss.ejb3.packagemanager.exception.PackageManagerException;
 import org.jboss.ejb3.packagemanager.exception.PackageNotInstalledException;
 
@@ -33,7 +35,7 @@
  * 
  * Package Manager can be used to install/update/remove packages against
  * JBoss Application Server. 
- * TODO: More javadocs (once we have something usable)
+ * 
  * @author Jaikiran Pai
  * @version $Revision: $
  */
@@ -82,7 +84,15 @@
     */
    void removePackage(String packageName) throws PackageNotInstalledException, PackageManagerException;
    
+   /**
+    * Returns the names of all installed packages. Returns an empty set if there 
+    * are no packages installed
+    * 
+    * @return
+    */
+   Set<String> getAllInstalledPackages();
    
+   
    /**
     * A package manager works against a JBoss AS server. This method returns the 
     * absolute path of the JBoss AS Home.
@@ -91,7 +101,19 @@
     */
    String getServerHome();
    
+   /**
+    * @return Returns the transaction manager associated with this package manager. The 
+    * transaction manager is responsible for managing transactions during the 
+    * package manager operations
+    */
    TransactionManager getTransactionManager();
    
+   /**
+    * @return Returns the database manager associated with the package manager.
+    * The database manager is responsible for maintaining the package installation
+    * details
+    */
+   PackageDatabaseManager getDatabaseManager();
    
+   
 }

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerContext.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerContext.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerContext.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -22,9 +22,11 @@
 
 package org.jboss.ejb3.packagemanager;
 
-import org.jboss.ejb3.packagemanager.metadata.ScriptType;
+import javax.transaction.TransactionManager;
 
+import org.jboss.ejb3.packagemanager.db.PackageDatabaseManager;
 
+
 /**
  * Author: Jaikiran Pai
  */
@@ -54,4 +56,8 @@
      */
     String getScriptStoreLocation(PackageContext pkgContext);
     
+    TransactionManager getTransactionManager();
+    
+    PackageDatabaseManager getDatabaseManager();
+    
 }

Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageVersionComparator.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageVersionComparator.java	                        (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageVersionComparator.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -0,0 +1,96 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb3.packagemanager;
+
+import java.util.Comparator;
+
+/**
+ * PackageVersionComparator
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class PackageVersionComparator implements Comparator<String>
+{
+
+   /**
+    * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+    */
+   @Override
+   public int compare(String version1, String version2)
+   {
+      if (version1.equals(version2))
+      {
+         return 0;
+      }
+      // TODO: This is a copy of php version_compare algo. 
+      // Change this and implement it on the lines of OSGi version numbering.
+      // Instead of writing the version compare logic all over again, see if there's 
+      // a reusable util
+      String rev1 = version1.replaceAll("([a-zA-Z])(\\d)", "$1.$2");
+      rev1 = rev1.replaceAll("(\\d)([a-zA-Z])", "$1.$2");
+      String rev2 = version2.replaceAll("([a-zA-Z])(\\d)", "$1.$2");
+      rev2 = rev2.replaceAll("(\\d)([a-zA-Z])", "$1.$2");
+
+      String[] parts1 = rev1.split("[\\._\\-\\+]");
+      String[] parts2 = rev2.split("[\\._\\-\\+]");
+
+      int i = 0;
+      for (; i < parts1.length && i < parts2.length; i++)
+      {
+         if (parts1[i].equals(parts2[i]))
+         {
+            continue;
+         }
+         boolean is1Number = isNumber(parts1[i]);
+         boolean is2Number = isNumber(parts2[i]);
+         if (is1Number && !is2Number)
+         {
+            return 1;
+         }
+         if (is2Number && !is1Number)
+         {
+            return -1;
+         }
+         if (is1Number && is2Number)
+         {
+            return Long.valueOf(parts1[i]).compareTo(Long.valueOf(parts2[i]));
+         }
+         // both are strings, we compare them
+         return parts1[i].compareTo(parts2[i]);
+      }
+      if (i < parts1.length)
+      {
+         return isNumber(parts1[i]) ? 1 : -1;
+      }
+      if (i < parts2.length)
+      {
+         return isNumber(parts2[i]) ? -1 : 1;
+      }
+      return 0;
+   }
+
+   private boolean isNumber(String str)
+   {
+      return str.matches("\\d+");
+   }
+}

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/DefaultDatabaseManager.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/DefaultDatabaseManager.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/DefaultDatabaseManager.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -36,8 +36,8 @@
 import org.jboss.ejb3.packagemanager.PackageContext;
 import org.jboss.ejb3.packagemanager.PackageManagerContext;
 import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
+import org.jboss.ejb3.packagemanager.entity.PersistentDependency;
 import org.jboss.ejb3.packagemanager.entity.PersistentFile;
-import org.jboss.ejb3.packagemanager.entity.PersistentDependency;
 import org.jboss.ejb3.packagemanager.entity.PersistentPackage;
 import org.jboss.ejb3.packagemanager.entity.PersistentPackageManager;
 import org.jboss.ejb3.packagemanager.entity.PersistentPreUnInstallScript;
@@ -252,8 +252,8 @@
       Set<PackageContext> dependencyPackages = pkgCtx.getDependencyPackages();
       if (dependencyPackages != null)
       {
-         Set<PersistentDependency> dependencyPackagesForNewPackage = new HashSet<PersistentDependency>(dependencyPackages
-               .size());
+         Set<PersistentDependency> dependencyPackagesForNewPackage = new HashSet<PersistentDependency>(
+               dependencyPackages.size());
          newPackage.setDependencies(dependencyPackagesForNewPackage);
 
          for (PackageContext dependencyPkgCtx : dependencyPackages)
@@ -335,4 +335,24 @@
 
    }
 
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Set<String> getAllInstalledPackages()
+   {
+      Set<String> installedPackageNames = new HashSet<String>();
+      EntityManager em = this.getEntityManager();
+      PersistentPackageManager packageManager = this.getOrCreatePackageManagerEntity(this.packageManagerCtx);
+      Query query = em.createQuery("select pkg.name from " + PersistentPackage.class.getSimpleName()
+            + " pkg where pkg.packageManager.id=" + packageManager.getId());
+      List<String> result = query.getResultList();
+      if (result != null)
+      {
+         installedPackageNames.addAll(result);
+      }
+      return installedPackageNames;
+
+   }
+
 }

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/PackageDatabaseManager.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/PackageDatabaseManager.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/PackageDatabaseManager.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -101,5 +101,12 @@
     */
    void removePackage(PersistentPackage installedPackage);
    
+   /**
+    * Returns the names of all installed packages. Returns an empty set if there 
+    * are no packages installed
+    * 
+    * @return
+    */
+   Set<String> getAllInstalledPackages();
    
 }

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageContext.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageContext.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageContext.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -31,6 +31,10 @@
 import java.util.Set;
 import java.util.jar.JarFile;
 
+import org.apache.ivy.Ivy;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.plugins.latest.ArtifactInfo;
+import org.apache.ivy.plugins.version.VersionMatcher;
 import org.jboss.ejb3.packagemanager.PackageContext;
 import org.jboss.ejb3.packagemanager.PackageManagerContext;
 import org.jboss.ejb3.packagemanager.dependency.DependencyManager;
@@ -346,8 +350,19 @@
          {
             this.packageRoot.mkdirs();
          }
-         JarFile jar = new JarFile(pkg);
-         IOUtil.extractJarFile(this.packageRoot, jar);
+         JarFile jar = null;
+         try
+         {
+            jar = new JarFile(pkg);
+            IOUtil.extractJarFile(this.packageRoot, jar);
+         }
+         finally
+         {
+            if (jar != null)
+            {
+               jar.close();
+            }
+         }
          // validate that it contains a package.xml
          File packageXml = new File(this.packageRoot, "package.xml");
          if (!packageXml.exists())
@@ -443,5 +458,55 @@
 
    }
 
+   /**
+    * @see java.lang.Comparable#compareTo(java.lang.Object)
+    * @throws NullPointerException If the passed <code>anotherPackage</code> is null
+    * @throws IllegalArgumentException If the package name of the passed <code>anotherPackage</code>
+    *       is not the same as the package name {@link DefaultPackageContext#getPackageName()} of this package. 
+    */
+   @Override
+   public int compareTo(PackageContext anotherPackage)
+   {
+      if (!this.getPackageName().equals(anotherPackage.getPackageName()))
+      {
+         throw new IllegalArgumentException("Cannot compare packages with two different names. This package name is "
+               + this.getPackageName() + " ,another package name is " + anotherPackage.getPackageName());
+      }
+      
+      
+      return 0;
+   }
+
    
+   private class MockIvyArtifactInfo implements ArtifactInfo
+   {
+
+      private String version;
+      
+      public MockIvyArtifactInfo(String version)
+      {
+         this.version = version;
+      }
+      
+      /**
+       * @see org.apache.ivy.plugins.latest.ArtifactInfo#getLastModified()
+       */
+      @Override
+      public long getLastModified()
+      {
+         // we don't have any idea about last modified value, so just
+         // return 0
+         return 0;
+      }
+
+      /**
+       * @see org.apache.ivy.plugins.latest.ArtifactInfo#getRevision()
+       */
+      @Override
+      public String getRevision()
+      {
+         return this.version;
+      }
+      
+   }
 }

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerContext.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerContext.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerContext.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -23,10 +23,13 @@
 
 import java.io.File;
 
+import javax.transaction.TransactionManager;
+
 import org.jboss.ejb3.packagemanager.PackageContext;
 import org.jboss.ejb3.packagemanager.PackageManager;
 import org.jboss.ejb3.packagemanager.PackageManagerContext;
 import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
+import org.jboss.ejb3.packagemanager.db.PackageDatabaseManager;
 import org.jboss.ejb3.packagemanager.metadata.ScriptType;
 
 /**
@@ -81,6 +84,24 @@
       return "data/scripts/" + packageName;
    }
 
+   /**
+    * @see org.jboss.ejb3.packagemanager.PackageManagerContext#getDatabaseManager()
+    */
+   @Override
+   public PackageDatabaseManager getDatabaseManager()
+   {
+      return this.pkgMgr.getDatabaseManager();
+   }
+
+   /**
+    * @see org.jboss.ejb3.packagemanager.PackageManagerContext#getTransactionManager()
+    */
+   @Override
+   public TransactionManager getTransactionManager()
+   {
+      return this.pkgMgr.getTransactionManager();
+   }
+
    
 
 }

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerImpl.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerImpl.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerImpl.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -35,6 +35,7 @@
 import org.jboss.ejb3.packagemanager.PackageManager;
 import org.jboss.ejb3.packagemanager.PackageManagerContext;
 import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
+import org.jboss.ejb3.packagemanager.PackageVersionComparator;
 import org.jboss.ejb3.packagemanager.annotation.TransactionAttribute;
 import org.jboss.ejb3.packagemanager.annotation.TransactionAttributeType;
 import org.jboss.ejb3.packagemanager.db.DefaultDatabaseManager;
@@ -129,6 +130,15 @@
    }
 
    /**
+    * @see org.jboss.ejb3.packagemanager.PackageManager#getDatabaseManager()
+    */
+   @Override
+   public PackageDatabaseManager getDatabaseManager()
+   {
+      return this.pkgDatabaseManager;
+   }
+   
+   /**
     * Installs a package
     * 
     * @param pkgPath The URL to the package that is to be installed
@@ -321,8 +331,26 @@
       if (isPackageInstalled)
       {
          PersistentPackage installedPackage = this.pkgDatabaseManager.getInstalledPackage(packageName);
-         logger.info("Removing existing package " + packageName + " version " + installedPackage.getPackageVersion()
-               + " for upgrading to " + pkgContext);
+         // if the installed package version and the version of the package being upgraded are the same
+         // then skip the upgrade
+         PackageVersionComparator comparator = new PackageVersionComparator();
+         int versionComparison = comparator.compare(installedPackage.getPackageVersion(), pkgContext.getPackageVersion());
+         if (versionComparison == 0)
+         {
+            logger.info("Skipping package upgrade, since package with name " + packageName + " and version "
+                  + installedPackage.getPackageVersion() + " is already installed");
+            return;
+         }
+         else if (versionComparison > 0)
+         {
+            logger.info("Skipping package upgrade, since a higher version " + installedPackage.getPackageVersion()
+                  + " compared to " + pkgContext.getPackageVersion() + " for package  " + packageName
+                  + " is already installed");
+            return;
+         }
+         // this is a newer version, so continue with upgrade   
+         logger.info("Upgrading package " + packageName + " from installed version " + installedPackage.getPackageVersion()
+               + " to new version " + pkgContext.getPackageVersion());
          removePackage(installedPackage, true);
       }
       // now install new version
@@ -651,4 +679,13 @@
 
    }
 
+   /**
+    * @see org.jboss.ejb3.packagemanager.PackageManager#getAllInstalledPackages()
+    */
+   @Override
+   public Set<String> getAllInstalledPackages()
+   {
+      return this.pkgDatabaseManager.getAllInstalledPackages();
+   }
+
 }

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Main.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Main.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Main.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -28,12 +28,12 @@
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
+import java.util.Set;
 
 import org.jboss.ejb3.packagemanager.PackageManager;
 import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
 import org.jboss.ejb3.packagemanager.PackageManagerFactory;
 import org.jboss.ejb3.packagemanager.exception.PackageManagerException;
-import org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl;
 import org.jboss.ejb3.packagemanager.util.DBUtil;
 import org.jboss.logging.Logger;
 
@@ -70,6 +70,7 @@
       CmdLineParser.Option installCmdOption = cmdLineParser.addStringOption('i', "install");
       CmdLineParser.Option upgradeCmdOption = cmdLineParser.addStringOption('u', "upgrade");
       CmdLineParser.Option removeCmdOption = cmdLineParser.addStringOption('r', "remove");
+      CmdLineParser.Option queryCmdOption = cmdLineParser.addBooleanOption('q', "query");
       CmdLineParser.Option packageManagerHomeCmdOption = cmdLineParser.addStringOption('p', "pmhome");
       CmdLineParser.Option jbossHomeCmdOption = cmdLineParser.addStringOption('s', "jbossHome");
 
@@ -154,9 +155,29 @@
 
       }
 
+      Boolean query = (Boolean) cmdLineParser.getOptionValue(queryCmdOption, Boolean.FALSE);
       String packageToInstall = (String) cmdLineParser.getOptionValue(installCmdOption);
       String packageToUpgrade = (String) cmdLineParser.getOptionValue(upgradeCmdOption);
       String packageToRemove = (String) cmdLineParser.getOptionValue(removeCmdOption);
+      
+      if (query)
+      {
+         Set<String> installedPackages = pm.getAllInstalledPackages();
+         if (installedPackages.isEmpty())
+         {
+            logger.info("There are no packages installed in the system");
+         }
+         else
+         {
+            logger.info("Following packages have been installed in the system: ");
+            logger.info("----------------------------------------------------");
+            for (String packageName : installedPackages)
+            {
+               logger.info(packageName);
+            }
+            logger.info("----------------------------------------------------");
+         }
+      }
 
       if (packageToInstall != null)
       {
@@ -183,7 +204,7 @@
    private static void printUsage()
    {
       System.out
-            .println("Usage: packagemanager [-i path_to_package] [-r package_name] [-u path_to_package] [-p path_to_package_manager_home]\n"
+            .println("Usage: packagemanager [-i path_to_package] [-r package_name] [-u path_to_package] [-q] [-p path_to_package_manager_home]\n"
                   + " [-s path_to_jboss_home]");
    }
 

Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/util/DBUtil.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/util/DBUtil.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/util/DBUtil.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -47,7 +47,7 @@
 
    public static void runSql(Connection conn, File sqlFile) throws IOException, SQLException
    {
-      logger.info("SQL being run from file " + sqlFile);
+      logger.debug("SQL being run from file " + sqlFile);
       InputStream sql = new FileInputStream(sqlFile);
 
       runSql(conn, sql);
@@ -83,7 +83,7 @@
                   if (trimmedSql.toString().endsWith(";"))
                   {
                      String sqlToRun = trimmedSql.substring(0, trimmedSql.length() - 1);
-                     logger.info(sqlToRun);
+                     logger.debug(sqlToRun);
                      statement.execute(sqlToRun);
                      trimmedSql = new StringBuffer();
                   }

Modified: projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -65,9 +65,17 @@
   <!-- Setup the Root category -->
   <!-- ======================= -->
  <category name="org.hibernate">
-    <priority value="ALL"/>
+    <priority value="WARN"/>
   </category>
+  <category name="org.jboss">
+    <priority value="WARN"/>
+  </category>
+  <category name="org.jboss.ejb3.packagemanager">
+    <priority value="INFO"/>
+  </category>
+  
   <root>
+    <priority value="WARN"/>
     <appender-ref ref="CONSOLE"/>
     <appender-ref ref="FILE"/>
   </root>

Modified: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/commandline/unit/CommandLineTestCase.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/commandline/unit/CommandLineTestCase.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/commandline/unit/CommandLineTestCase.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -23,9 +23,6 @@
 
 import java.io.File;
 
-import org.jboss.ejb3.packagemanager.PackageManager;
-import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
-import org.jboss.ejb3.packagemanager.PackageManagerFactory;
 import org.jboss.ejb3.packagemanager.exception.PackageNotInstalledException;
 import org.jboss.ejb3.packagemanager.main.Main;
 import org.jboss.ejb3.packagemanager.test.common.PackageManagerTestCase;
@@ -45,7 +42,6 @@
 
    private static Logger logger = Logger.getLogger(CommandLineTestCase.class);
 
-  
    /**
     * The JBoss Home used in each test
     */
@@ -65,8 +61,7 @@
    {
       pkgMgrHome = setupPackageManagerHome(CommandLineTestCase.class);
       jbossHome = setupDummyJBoss(CommandLineTestCase.class);
-     
-     
+
    }
 
    /**
@@ -80,7 +75,7 @@
    @Test
    public void testInstall() throws Exception
    {
-      File commandLineTestPackage = this.createSimplePackage("command-line-test-package.jar");
+      File commandLineTestPackage = this.createSimplePackage("command-line-test-package");
 
       String commandLineArgs[] = new String[]
       {"-i", commandLineTestPackage.getAbsolutePath(), "-p", this.pkgMgrHome.getAbsolutePath(), "-s",
@@ -109,7 +104,6 @@
 
       String commandLineArgs[] = new String[]
       {"-r", "blahblahblah", "-p", this.pkgMgrHome.getAbsolutePath(), "-s", this.jbossHome.getAbsolutePath()};
-      File commandLineTestPackage = this.createSimplePackage("command-line-test-package.jar");
 
       // run the package manager
       try
@@ -137,7 +131,7 @@
    public void testUnInstall() throws Exception
    {
       // first install and then uninstall
-      File packageWithScripts = this.createPackageWithPreInstallScript("commandline-uninstall-test-package.jar");
+      File packageWithScripts = this.createPackageWithPreInstallScript("commandline-uninstall-test-package");
       // test that non-existent package uninstallation is not allowed
 
       String commandLineArgs[] = new String[]
@@ -152,7 +146,7 @@
 
       // now uninstall
       commandLineArgs = new String[]
-      {"-r", "common-package-with-pre-install", "-p", this.pkgMgrHome.getAbsolutePath(), "-s",
+      {"-r", "commandline-uninstall-test-package", "-p", this.pkgMgrHome.getAbsolutePath(), "-s",
             this.jbossHome.getAbsolutePath()};
 
       // run the package manager
@@ -169,4 +163,19 @@
       this.assertFileExistenceUnderJBossHome(jbossHome, "bin/test.txt");
 
    }
+
+   /**
+    * Tests the "query" (-q option) feature of the package manager, which returns the names
+    * of all installed packages
+    * @throws Exception
+    */
+   @Test
+   public void testQueryPackages() throws Exception
+   {
+      String commandLineArgs[] = new String[]
+      {"-q", "-p", this.pkgMgrHome.getAbsolutePath(), "-s", this.jbossHome.getAbsolutePath()};
+
+      // run the package manager
+      Main.main(commandLineArgs);
+   }
 }

Modified: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/PackageManagerTestCase.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/PackageManagerTestCase.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/PackageManagerTestCase.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -23,8 +23,12 @@
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
@@ -72,6 +76,10 @@
     * The project's target dir
     */
    protected static File targetDir = new File(baseDir, "target");
+   
+   protected static final String DEFAULT_PACKAGE_VERSION = "1.0.0";
+   
+   protected static final String JAR_SUFFIX = ".jar";
 
    /**
     * Sets up an dummy JBoss instance and returns the File corresponding
@@ -294,6 +302,29 @@
    }
 
    /**
+    * Creates a simple package with the default version {@link #DEFAULT_PACKAGE_VERSION}
+    * with the following contents:
+    * 
+    *  <package-name>
+    *   |
+    *   |--- dummy.jar
+    *   |
+    *   |--- package.xml
+    *   
+    * The package.xml is configured to install the dummy.jar to JBOSS_HOME/common/lib. Nothing 
+    * else is configured in the package.xml
+    *   
+    * @param packageName The name of the package to be created. Ex: "simple-package"
+    *   
+    * @return Returns the {@link File} corresponding the to the created package
+    * @throws IOException If any IO exceptions occur during the package creation
+    */
+   protected File createSimplePackage(String packageName) throws IOException
+   {
+      return this.createSimplePackage(packageName, DEFAULT_PACKAGE_VERSION);
+   }
+   
+   /**
     * Creates a simple package with the following contents:
     * 
     *  <package-name>
@@ -305,22 +336,23 @@
     * The package.xml is configured to install the dummy.jar to JBOSS_HOME/common/lib. Nothing 
     * else is configured in the package.xml
     *   
-    * @param packageFileName The name of the package to be created. Ex: simple-package.jar
-    *   Note: It is mandatory to specify the extension (.jar) which passing the packageFileName
+    * @param packageName The name of the package to be created. Ex: "simple-package"
+    * @param packageVersion Version of the package  
     * @return Returns the {@link File} corresponding the to the created package
     * @throws IOException If any IO exceptions occur during the package creation
     */
-   protected File createSimplePackage(String packageFileName) throws IOException
+   protected File createSimplePackage(String packageName, String packageVersion) throws IOException
    {
       File dummyJar = this.createDummyJar();
-
+      String packageFileName = packageName + JAR_SUFFIX;
       // Now let's package the dummy.jar, package.xml into a package
       File simplePackage = new File(getPerTestTargetDir(this.getClass()), packageFileName);
       JavaArchive pkg = JavaArchiveFactory.create(simplePackage.getName());
       pkg.addResource("dummy.jar", dummyJar);
       URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-just-install-file.xml");
       File file = new File(packageXmlURL.getFile());
-      pkg.addResource("package.xml", file);
+      File processedPackageXml = this.processPackageXml(file, packageName, packageVersion);
+      pkg.addResource("package.xml", processedPackageXml);
       // now write out the package to disk
       logger.debug("Writing out the created package " + pkg.toString(true));
       this.exportZip(pkg, simplePackage);
@@ -329,6 +361,33 @@
    }
 
    /**
+    * Creates a package with the default version {@link #DEFAULT_PACKAGE_VERSION} and
+    * containing a file to install and a pre-install script. The package
+    * will look as follows:
+    * 
+    *  <package-name>
+    *   |
+    *   |--- dummy.jar
+    *   |
+    *   |--- package.xml
+    *   |
+    *   |--- build.xml
+    *   
+    * The package.xml is configured to install the dummy.jar to JBOSS_HOME/server/default/deploy. 
+    * Additionally, the package.xml is also configured for the pre-install script named build.xml,
+    * which is available at the root of the package. The build.xml script is implemented
+    * to place a file named "test.txt" under JBOSS_HOME/bin folder, when the script is run.
+    *   
+    * @param packageNam The name of the package to be created. Ex: simple-package
+    * @return Returns the {@link File} corresponding the to the created package
+    * @throws IOException If any IO exceptions occur during the package creation
+    */
+   protected File createPackageWithPreInstallScript(String packageName) throws IOException
+   {
+      return this.createPackageWithPreInstallScript(packageName, DEFAULT_PACKAGE_VERSION);
+   }
+   
+   /**
     * Creates a package containing a file to install and a pre-install script. The package
     * will look as follows:
     * 
@@ -345,24 +404,54 @@
     * which is available at the root of the package. The build.xml script is implemented
     * to place a file named "test.txt" under JBOSS_HOME/bin folder, when the script is run.
     *   
-    * @param packageFileName The name of the package to be created. Ex: simple-package.jar
-    *   Note: It is mandatory to specify the extension (.jar) which passing the packageFileName
+    * @param packageNam The name of the package to be created. Ex: "simple-package"
+    * @param packageVersion Version of the package
     * @return Returns the {@link File} corresponding the to the created package
     * @throws IOException If any IO exceptions occur during the package creation
     */
-   protected File createPackageWithPreInstallScript(String packageFileName) throws IOException
+   protected File createPackageWithPreInstallScript(String packageName, String packageVersion) throws IOException
    {
       
       URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-pre-install-script.xml");
       File packageXmlFile = new File(packageXmlURL.getFile());
+      File processedPackageXmlFile = this.processPackageXml(packageXmlFile, packageName, packageVersion);
       URL buildXmlURL = this.getResource(PackageManagerTestCase.class, "build.xml");
       File buildFile = new File(buildXmlURL.getFile());
-      return this.createPackageWithScript(packageFileName, buildFile, packageXmlFile);
+      return this.createPackageWithScript(packageName, packageVersion, buildFile, processedPackageXmlFile);
    }
    
    
    
    /**
+    * Creates a package with the {@link #DEFAULT_PACKAGE_VERSION} and
+    * containing a file to install and a pre-install script. The package
+    * will look as follows:
+    * 
+    *  <package-name>
+    *   |
+    *   |--- dummy.jar
+    *   |
+    *   |--- package.xml
+    *   |
+    *   |--- build.xml
+    *   
+    * The package.xml is configured to install the dummy.jar to JBOSS_HOME/server/default/deploy. 
+    * Additionally, the package.xml is also configured for the pre-install script named build.xml,
+    * which is available at the root of the package. The build.xml script is implemented
+    * to place a file named "pre-uninstall.txt" under JBOSS_HOME/bin folder, when the script is run.
+    *   
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @return Returns the {@link File} corresponding the to the created package
+    * @throws IOException If any IO exceptions occur during the package creation
+    */
+   protected File createPackageWithPreUnInstallScript(String packageName) throws IOException
+   {
+      
+      return this.createPackageWithPreUnInstallScript(packageName, DEFAULT_PACKAGE_VERSION);
+   }
+   
+   
+   /**
     * Creates a package containing a file to install and a pre-install script. The package
     * will look as follows:
     * 
@@ -379,22 +468,51 @@
     * which is available at the root of the package. The build.xml script is implemented
     * to place a file named "pre-uninstall.txt" under JBOSS_HOME/bin folder, when the script is run.
     *   
-    * @param packageFileName The name of the package to be created. Ex: simple-package.jar
-    *   Note: It is mandatory to specify the extension (.jar) which passing the packageFileName
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @param packageVersion Version of the package
     * @return Returns the {@link File} corresponding the to the created package
     * @throws IOException If any IO exceptions occur during the package creation
     */
-   protected File createPackageWithPreUnInstallScript(String packageFileName) throws IOException
+   protected File createPackageWithPreUnInstallScript(String packageName, String packageVersion) throws IOException
    {
       
       URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-pre-uninstall-script.xml");
       File packageXmlFile = new File(packageXmlURL.getFile());
+      File processedPackageXmlFile = this.processPackageXml(packageXmlFile, packageName, packageVersion);
       URL buildXmlURL = this.getResource(PackageManagerTestCase.class, "build.xml");
       File buildFile = new File(buildXmlURL.getFile());
-      return this.createPackageWithScript(packageFileName, buildFile, packageXmlFile);
+      return this.createPackageWithScript(packageName, packageVersion, buildFile, processedPackageXmlFile);
    }
    
    /**
+    * Creates a package with the {@link #DEFAULT_PACKAGE_VERSION} and 
+    * containing a file to install and a pre-install script. The package
+    * will look as follows:
+    * 
+    *  <package-name>
+    *   |
+    *   |--- dummy.jar
+    *   |
+    *   |--- package.xml
+    *   |
+    *   |--- build.xml
+    *   
+    * The package.xml is configured to install the dummy.jar to JBOSS_HOME/server/default/deploy. 
+    * Additionally, the package.xml is also configured for the pre-install script named build.xml,
+    * which is available at the root of the package. The build.xml script is implemented
+    * to place a file named "post-install.txt" under JBOSS_HOME/bin folder, when the script is run.
+    *   
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @return Returns the {@link File} corresponding the to the created package
+    * @throws IOException If any IO exceptions occur during the package creation
+    */
+   protected File createPackageWithPostInstallScript(String packageName) throws IOException
+   {
+      
+      return this.createPackageWithPostInstallScript(packageName, DEFAULT_PACKAGE_VERSION);
+   }
+   
+   /**
     * Creates a package containing a file to install and a pre-install script. The package
     * will look as follows:
     * 
@@ -411,22 +529,51 @@
     * which is available at the root of the package. The build.xml script is implemented
     * to place a file named "post-install.txt" under JBOSS_HOME/bin folder, when the script is run.
     *   
-    * @param packageFileName The name of the package to be created. Ex: simple-package.jar
-    *   Note: It is mandatory to specify the extension (.jar) which passing the packageFileName
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @param packageVersion Version of the package
     * @return Returns the {@link File} corresponding the to the created package
     * @throws IOException If any IO exceptions occur during the package creation
     */
-   protected File createPackageWithPostInstallScript(String packageFileName) throws IOException
+   protected File createPackageWithPostInstallScript(String packageName, String packageVersion) throws IOException
    {
       
       URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-post-install-script.xml");
       File packageXmlFile = new File(packageXmlURL.getFile());
+      File processedPackageXmlFile = this.processPackageXml(packageXmlFile, packageName, packageVersion);
       URL buildXmlURL = this.getResource(PackageManagerTestCase.class, "build.xml");
       File buildFile = new File(buildXmlURL.getFile());
-      return this.createPackageWithScript(packageFileName, buildFile, packageXmlFile);
+      return this.createPackageWithScript(packageName, packageVersion, buildFile, processedPackageXmlFile);
    }
    
    /**
+    * Creates a package with the {@link #DEFAULT_PACKAGE_VERSION} and
+    * containing a file to install and a pre-install script. The package
+    * will look as follows:
+    * 
+    *  <package-name>
+    *   |
+    *   |--- dummy.jar
+    *   |
+    *   |--- package.xml
+    *   |
+    *   |--- build.xml
+    *   
+    * The package.xml is configured to install the dummy.jar to JBOSS_HOME/server/default/deploy. 
+    * Additionally, the package.xml is also configured for the post-uninstall script named build.xml,
+    * which is available at the root of the package. The build.xml script is implemented
+    * to place a file named "post-uninstall.txt" from JBOSS_HOME/bin folder
+    *   
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @return Returns the {@link File} corresponding the to the created package
+    * @throws IOException If any IO exceptions occur during the package creation
+    */
+   protected File createPackageWithPostUnInstallScript(String packageName) throws IOException
+   {
+      
+     return this.createPackageWithPostUnInstallScript(packageName, DEFAULT_PACKAGE_VERSION);
+   }
+   
+   /**
     * Creates a package containing a file to install and a pre-install script. The package
     * will look as follows:
     * 
@@ -443,23 +590,22 @@
     * which is available at the root of the package. The build.xml script is implemented
     * to place a file named "post-uninstall.txt" from JBOSS_HOME/bin folder
     *   
-    * @param packageFileName The name of the package to be created. Ex: simple-package.jar
-    *   Note: It is mandatory to specify the extension (.jar) which passing the packageFileName
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @param packageVersion Version of the package
     * @return Returns the {@link File} corresponding the to the created package
     * @throws IOException If any IO exceptions occur during the package creation
     */
-   protected File createPackageWithPostUnInstallScript(String packageFileName) throws IOException
+   protected File createPackageWithPostUnInstallScript(String packageName, String packageVersion) throws IOException
    {
       
       URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-post-uninstall-script.xml");
       File packageXmlFile = new File(packageXmlURL.getFile());
+      File processedPackageXmlFile = this.processPackageXml(packageXmlFile, packageName, packageVersion);
       URL buildXmlURL = this.getResource(PackageManagerTestCase.class, "build.xml");
       File buildFile = new File(buildXmlURL.getFile());
-      return this.createPackageWithScript(packageFileName, buildFile, packageXmlFile);
+      return this.createPackageWithScript(packageName, packageVersion, buildFile, processedPackageXmlFile);
    }
    
-   
-
    /**
     * Utility method to create a package with a script file.
     * 
@@ -474,15 +620,16 @@
     *   |
     *   |--- [script-file]
     *   
-    * @param packageFileName Package file name
+    * @param packageName Package file name
     * @param scriptFile Script file
     * @param packageXmlFile package.xml
     * @return Returns the created package
     * @throws IOException
     */
-   private File createPackageWithScript(String packageFileName, File scriptFile, File packageXmlFile) throws IOException
+   private File createPackageWithScript(String packageName, String packageVersion, File scriptFile, File packageXmlFile) throws IOException
    {
       File dummyJar = this.createDummyJar();
+      String packageFileName = packageName + JAR_SUFFIX;
       File packageWithScript = new File(getPerTestTargetDir(this.getClass()), packageFileName);
       JavaArchive pkg = JavaArchiveFactory.create(packageWithScript.getName());
       pkg.addResource("dummy.jar", dummyJar);
@@ -496,7 +643,8 @@
    }
    
    /**
-    * Creates a package  containing a file to install and a packaged-dependency. The package
+    * Creates a package with the {@link #DEFAULT_PACKAGE_VERSION}
+    * and containing a file to install and a packaged-dependency. The package
     * will look as follows:
     * 
     *  <package-name>
@@ -521,15 +669,55 @@
     * The package.xml of the dependee package is configured to install the dummy.jar to JBOSS_HOME/common/lib.
     * Nothing else is configured in the package.xml of the dependee package
     *   
-    * @param packageFileName The name of the package to be created. Ex: simple-package.jar
-    *   Note: It is mandatory to specify the extension (.jar) which passing the packageFileName
+    * @param packageName The name of the package to be created. Ex: simple-package
     * @return Returns the {@link File} corresponding the to the created package
     * @throws IOException If any IO exceptions occur during the package creation
     */
-   protected File createPackageWithSimplePackagedDependency(String packageFileName) throws IOException
+   protected File createPackageWithSimplePackagedDependency(String packageName) throws IOException
    {
+      return this.createPackageWithSimplePackagedDependency(packageName, DEFAULT_PACKAGE_VERSION);
+
+   }
+   
+   
+   /**
+    * Creates a package with the {@link #DEFAULT_PACKAGE_VERSION}
+    * and containing a file to install and a packaged-dependency. The package
+    * will look as follows:
+    * 
+    *  <package-name>
+    *   |
+    *   |--- dependee-package.jar (this is the packaged dependency)
+    *   |
+    *   |--- package.xml
+    *   |
+    *   |--- dummy.jar
+    *   
+    * The package.xml is configured to install the dummy.jar to JBOSS_HOME/server/default/lib. Also
+    * the package.xml is configured to mark dependee-package.jar as a packaged-dependency.
+    *  
+    * The "dependee" package contains the following:
+    * 
+    * <package-name>
+    *   |
+    *   |--- dummy.jar
+    *   |
+    *   |--- package.xml
+    * 
+    * The package.xml of the dependee package is configured to install the dummy.jar to JBOSS_HOME/common/lib.
+    * Nothing else is configured in the package.xml of the dependee package
+    *   
+    * @param packageName The name of the package to be created. Ex: simple-package
+    * @param packageVersion Version of the package
+    * @return Returns the {@link File} corresponding the to the created package
+    * @throws IOException If any IO exceptions occur during the package creation
+    */
+   protected File createPackageWithSimplePackagedDependency(String packageName, String packageVersion) throws IOException
+   {
+      String packageFileName = packageName + JAR_SUFFIX;
+      
       // let's create a simple "dependee" package
-      File dependeePackage = this.createSimplePackage("dependee-package.jar");
+      File dependeePackage = this.createSimplePackage("dependee-package");
 
       // Now package this dependee package and also any other files in the dependent package
       File packageWithPackagedDependency = new File(getPerTestTargetDir(this.getClass()), packageFileName);
@@ -540,7 +728,8 @@
       pkg.addResource("dummy.jar", dummyJar);
       URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-packaged-dependency.xml");
       File packageXmlFile = new File(packageXmlURL.getFile());
-      pkg.addResource("package.xml", packageXmlFile);
+      File processedPacackageXmlFile = this.processPackageXml(packageXmlFile, packageName, packageVersion);
+      pkg.addResource("package.xml", processedPacackageXmlFile);
 
       // now write out the package to disk
       logger.debug("Writing out the created package " + pkg.toString(true));
@@ -712,4 +901,55 @@
       testCaseTargetDir.mkdirs();
       return testCaseTargetDir;
    }
+   
+   /**
+    * Processes the <code>originalPackageXml</code> file to replace any occurences of
+    * ${package.name} and ${package.version} variables in that file. These variables
+    * are replaced with the actual values. The original package.xml file is left unchanged
+    * and instead a copy of the package.xml with the variable replacements is returned back.
+    * 
+    * @param originalPackageXml The package.xml which needs to be processed
+    * @param packageName Package name
+    * @param packageVersion Package version
+    * @return Returns the processed copy of package.xml
+    * @throws IOException If any IO errors occur during processing
+    */
+   protected File processPackageXml(File originalPackageXml, String packageName, String packageVersion) throws IOException
+   {
+      if (!originalPackageXml.exists())
+      {
+         throw new IOException(originalPackageXml + " does not exist");
+      }
+      if (originalPackageXml.isDirectory())
+      {
+         throw new IOException(originalPackageXml + " is a directory. Cannot create package.xml out of a directory!");
+      }
+      BufferedReader bufferedReader = new BufferedReader(new FileReader(originalPackageXml));
+      File resultantPackageXmlFile = File.createTempFile("pkg", "xml", getPerTestTargetDir(this.getClass()));
+      BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(resultantPackageXmlFile));
+      try
+      {
+         String line = null;
+         while ((line = bufferedReader.readLine()) != null)
+         {
+            line = line.replaceAll("\\$\\{package.name\\}", packageName);
+            line = line.replaceAll("\\$\\{package.version\\}", packageVersion);
+            bufferedWriter.write(line);
+            bufferedWriter.write("\n");
+         }
+      }
+      finally
+      {
+         if (bufferedReader != null)
+         {
+            bufferedReader.close();
+         }
+         if (bufferedWriter != null)
+         {
+            bufferedWriter.close();
+         }
+      }
+      return resultantPackageXmlFile;
+
+   }
 }

Modified: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/dependency/unit/DependencyInstallTestCase.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/dependency/unit/DependencyInstallTestCase.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/dependency/unit/DependencyInstallTestCase.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -89,7 +89,7 @@
    public void testPackageWithPackagedDependency() throws Exception
    {
       File packageWithPackagedDependency = this
-            .createPackageWithSimplePackagedDependency("package-with-packaged-dependency.jar");
+            .createPackageWithSimplePackagedDependency("package-with-packaged-dependency");
 
       // now install
       this.pkgMgr.installPackage(packageWithPackagedDependency.getAbsolutePath());

Modified: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/install/unit/BasicInstallTestCase.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/install/unit/BasicInstallTestCase.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/install/unit/BasicInstallTestCase.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -86,7 +86,7 @@
    @Test
    public void testSimpleInstall() throws Exception
    {
-      File simplePackage = this.createSimplePackage("simple-package.jar");
+      File simplePackage = this.createSimplePackage("simple-package");
 
       // run the package manager
       pkgMgr.installPackage(simplePackage.toURI().toURL());
@@ -105,7 +105,7 @@
    @Test
    public void testPreInstallScriptExecution() throws Exception
    {
-      File packageWithPreInstallScript = this.createPackageWithPreInstallScript("package-with-pre-install-script.jar");
+      File packageWithPreInstallScript = this.createPackageWithPreInstallScript("basic-pre-install-test-package");
 
       // now run the package manager
       this.pkgMgr.installPackage(packageWithPreInstallScript.getAbsolutePath());
@@ -127,7 +127,7 @@
    @Test
    public void testPostInstallScriptExecution() throws Exception
    {
-      File postInstallScriptPackage = this.createPackageWithPostInstallScript("post-install-test-package.jar");
+      File postInstallScriptPackage = this.createPackageWithPostInstallScript("basic-post-install-test-package");
 
       // As a sanity check, ensure that the file supposed to be created by our post-install 
       // step is not already present

Modified: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/uninstall/unit/UnInstallTestCase.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/uninstall/unit/UnInstallTestCase.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/uninstall/unit/UnInstallTestCase.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -91,7 +91,7 @@
    @Test
    public void testSimpleUninstall() throws Exception
    {
-      File simplePackage = this.createSimplePackage("simple-uninstall-test-package.jar");
+      File simplePackage = this.createSimplePackage("simple-uninstall-test-package");
 
       // first install
       this.pkgMgr.installPackage(simplePackage.getAbsolutePath());
@@ -102,7 +102,7 @@
       this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/dummy.jar");
 
       // now uninstall
-      this.pkgMgr.removePackage("common-package-with-just-install-file");
+      this.pkgMgr.removePackage("simple-uninstall-test-package");
 
       this.assertFileAbsenceUnderJBossHome(jbossHome, "common/lib/dummy.jar");
    }
@@ -110,7 +110,7 @@
    @Test
    public void testUninstallationOfPackageContainingScripts() throws Exception
    {
-      File packageWithScripts = this.createPackageWithPreInstallScript("package-with-script-uninstall-test.jar");
+      File packageWithScripts = this.createPackageWithPreInstallScript("package-with-script-uninstall-test");
       // first install
       this.pkgMgr.installPackage(packageWithScripts.getAbsolutePath());
 
@@ -120,7 +120,7 @@
       this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy.jar");
 
       // now uninstall
-      this.pkgMgr.removePackage("common-package-with-pre-install");
+      this.pkgMgr.removePackage("package-with-script-uninstall-test");
 
       this.assertFileAbsenceUnderJBossHome(jbossHome, "server/default/deploy/dummy.jar");
 
@@ -136,7 +136,7 @@
    public void testUnInstallationOfPackageWithDependencies() throws Exception
    {
       File packageWithDependencies = this
-            .createPackageWithSimplePackagedDependency("uninstall-package-with-packaged-dependency.jar");
+            .createPackageWithSimplePackagedDependency("uninstall-package-with-packaged-dependency");
       // first install
       this.pkgMgr.installPackage(packageWithDependencies.getAbsolutePath());
 
@@ -147,7 +147,7 @@
       this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/dummy.jar");
 
       // uninstall
-      this.pkgMgr.removePackage("common-package-with-packaged-dependency");
+      this.pkgMgr.removePackage("uninstall-package-with-packaged-dependency");
 
       // the file installed by the main package (the package which was uninstalled)
       // should no longer be present
@@ -166,7 +166,7 @@
    @Test
    public void testPostUnInstallScriptExecution() throws Exception
    {
-      File postUnInstallScriptPackage = this.createPackageWithPostUnInstallScript("post-uninstall-test-package.jar");
+      File postUnInstallScriptPackage = this.createPackageWithPostUnInstallScript("post-uninstall-test-package");
       
       // As a sanity check, ensure that the file supposed to be created by our post-uninstall 
       // step is not already present
@@ -179,7 +179,7 @@
       this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy.jar");
       
       // now uninstall
-      pkgMgr.removePackage("common-package-with-post-uninstall");
+      pkgMgr.removePackage("post-uninstall-test-package");
       // make sure uninstall was successful
       this.assertFileAbsenceUnderJBossHome(jbossHome, "server/default/deploy/dummy.jar");
       // check that post-uninstall script was run
@@ -195,7 +195,7 @@
    @Test
    public void testPreUnInstallScriptExecution() throws Exception
    {
-      File preUnInstallScriptPackage = this.createPackageWithPreUnInstallScript("pre-uninstall-test-package.jar");
+      File preUnInstallScriptPackage = this.createPackageWithPreUnInstallScript("pre-uninstall-test-package");
       
       // As a sanity check, ensure that the file supposed to be created by our pre-uninstall 
       // step is not already present
@@ -208,7 +208,7 @@
       this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy.jar");
       
       // now uninstall
-      pkgMgr.removePackage("common-package-with-pre-uninstall");
+      pkgMgr.removePackage("pre-uninstall-test-package");
       // make sure uninstall was successful
       this.assertFileAbsenceUnderJBossHome(jbossHome, "server/default/deploy/dummy.jar");
       // check that pre-uninstall script was run

Modified: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/upgrade/unit/UpgradeUnitTestCase.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/upgrade/unit/UpgradeUnitTestCase.java	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/upgrade/unit/UpgradeUnitTestCase.java	2009-11-19 11:49:09 UTC (rev 96557)
@@ -22,18 +22,24 @@
 package org.jboss.ejb3.packagemanager.test.upgrade.unit;
 
 import java.io.File;
+import java.io.IOException;
+import java.net.URL;
 
 import org.jboss.ejb3.packagemanager.PackageManager;
 import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
 import org.jboss.ejb3.packagemanager.PackageManagerFactory;
 import org.jboss.ejb3.packagemanager.test.common.PackageManagerTestCase;
 import org.jboss.logging.Logger;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchiveFactory;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
  * UpgradeUnitTestCase
- *
+ * 
+ * Tests the upgrade functionality of the package manager
+ * 
  * @author Jaikiran Pai
  * @version $Revision: $
  */
@@ -60,8 +66,6 @@
     */
    private static File pkgMgrHome;
 
-   private static File perTestTargetDir = getPerTestTargetDir(UpgradeUnitTestCase.class);
-
    /**
     * Do the necessary setup
     * @throws Exception
@@ -74,19 +78,176 @@
       PackageManagerEnvironment env = new PackageManagerEnvironment(pkgMgrHome.getAbsolutePath());
       pkgMgr = PackageManagerFactory.getDefaultPackageManager(env, jbossHome.getAbsolutePath());
    }
-   
+
+   /**
+    * Tests that a package installed at a lower version can be upgraded successfully to a 
+    * higher version
+    * @throws Exception
+    */
    @Test
    public void testSimpleUpgrade() throws Exception
    {
-      // first install a simple package, then call upgrade on the same package
-      File simplePackage = this.createSimplePackage("simple-package.jar");
+      // first install a simple package, then call upgrade to a newer version
+      File versionOne = this.createPackageVersionOne("upgrade-to-higher-version-test-package");
+
+      this.pkgMgr.installPackage(versionOne.getAbsolutePath());
+      // ensure install was successful
+      this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy-version1.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/common-util.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "bin/post-install-version1.txt");
+
+      // now upgrade
+      File versionTwo = this.createPackageVersionTwo("upgrade-to-higher-version-test-package");
+      this.pkgMgr.updatePackage(versionTwo.getAbsolutePath());
+      // check that the previous version's files are no longer there
+      this.assertFileAbsenceUnderJBossHome(jbossHome, "bin/post-install-version1.txt");
+      this.assertFileAbsenceUnderJBossHome(jbossHome, "server/default/deploy/dummy-version1.jar");
+      // check that newer version files have been installed
+      this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy-version2.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/common-util.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "bin/post-install-version2.txt");
+
+   }
+
+   /**
+    * Test that the package manager does not allow "upgrading" from an already installed
+    * higher version of a package to a lower version of the same package
+    * 
+    * @throws Exception
+    */
+   @Test
+   public void testUpgradeToLowerVersion() throws Exception
+   {
+
+      // first install a higher version of the package and then try to "upgrade"
+      // to a lower version
+      File versionTwo = this.createPackageVersionTwo("upgrade-to-lower-version-test-package");
+
+      this.pkgMgr.installPackage(versionTwo.getAbsolutePath());
+      // ensure install was successful
+      this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy-version2.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/common-util.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "bin/post-install-version2.txt");
+
+      // now "upgrade" to lower version
+      File versionOne = this.createPackageVersionOne("upgrade-to-lower-version-test-package");
+      this.pkgMgr.updatePackage(versionOne.getAbsolutePath());
+
+      // ensure that the package wasn't degraded to a lower a version
+      // by checking that the previous files are *not* uninstalled and also the
+      // lower version files are *not* installed
+      this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/deploy/dummy-version2.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/common-util.jar");
+      this.assertFileExistenceUnderJBossHome(jbossHome, "bin/post-install-version2.txt");
+
+      this.assertFileAbsenceUnderJBossHome(jbossHome, "server/default/deploy/dummy-version1.jar");
+      this.assertFileAbsenceUnderJBossHome(jbossHome, "bin/post-install-version1.txt");
+
+   }
+   
+   /**
+    * Test that a package being upgraded to same version does not cause any issues.
+    * Internally, such a package upgrade is ignored (skipped) by the package manager,
+    * but that's not the concern of this test case
+    * 
+    * @throws Exception
+    */
+   @Test
+   public void testUpgradeToSameVersion() throws Exception
+   {
+      File simplePackageWithDependency = this.createPackageWithSimplePackagedDependency("upgrade-to-same-version","1.0.0-beta-1");
+      // install
+      this.pkgMgr.installPackage(simplePackageWithDependency.getAbsolutePath());
       
-      this.pkgMgr.installPackage(simplePackage.getAbsolutePath());
-      
+      this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/lib/dummy.jar");
       this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/dummy.jar");
       
-      // now upgrade
+      // now upgrade. Note that even though we are upgrading to a different
+      // package contents, this upgrade will be skipped and the contents installed
+      // previously by this package will stay.
+      File simplePackage = this.createSimplePackage("upgrade-to-same-version", "1.0.0-beta-1");
       this.pkgMgr.updatePackage(simplePackage.getAbsolutePath());
+      
+      // ensure that the upgrade did not result in loss of installed files
+      this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/lib/dummy.jar");
       this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/dummy.jar");
+      
+      
    }
+
+   /**
+    * Creates a simple package with the following structure:
+    * 
+    * <package-name>
+    *   |
+    *   |--- dummy-version1.jar (will be installed to server/default/deploy) 
+    *   |--- common-util.jar (will be installed to common/lib)
+    *   |--- build-version1.xml
+    *   |--- package.xml
+    *   
+    * @param packageFileName
+    * @return
+    * @throws IOException
+    */
+   private File createPackageVersionOne(String packageName) throws IOException
+   {
+      File dummyJar = this.createDummyJar();
+      String packageFileName = packageName + JAR_SUFFIX;
+
+      // Now let's package the dummy.jar, package.xml into a package
+      File simplePackage = new File(getPerTestTargetDir(this.getClass()), packageFileName);
+      JavaArchive pkg = JavaArchiveFactory.create(simplePackage.getName());
+      pkg.addResource("dummy-version1.jar", dummyJar);
+      pkg.addResource("common-util.jar", dummyJar);
+      URL packageXmlURL = this.getResource(this.getClass(), "package-version1.xml");
+      File file = new File(packageXmlURL.getFile());
+      File processedPackageXmlFile = this.processPackageXml(file, packageName, "1.0.0-alpha-1");
+      pkg.addResource("package.xml", processedPackageXmlFile);
+      URL buildXmlURL = this.getResource(this.getClass(), "build-version1.xml");
+      File buildFile = new File(buildXmlURL.getFile());
+      pkg.addResource("build-version1.xml", buildFile);
+      // now write out the package to disk
+      logger.debug("Writing out the created package " + pkg.toString(true));
+      this.exportZip(pkg, simplePackage);
+
+      return simplePackage;
+   }
+
+   /**
+    * Creates a package with the following structure:
+    * <package-name>
+    *   |
+    *   |--- dummy-version2.jar (will be installed to server/default/deploy) 
+    *   |--- common-util.jar (will be installed to common/lib)
+    *   |--- build-version2.xml
+    *   |--- package.xml
+    * 
+    * @param packageFileName
+    * @return
+    * @throws IOException
+    */
+   private File createPackageVersionTwo(String packageName) throws IOException
+   {
+      String packageFileName = packageName + JAR_SUFFIX;
+
+      File dummyJar = this.createDummyJar();
+
+      // Now let's package the dummy.jar, package.xml into a package
+      File simplePackage = new File(getPerTestTargetDir(this.getClass()), packageFileName);
+      JavaArchive pkg = JavaArchiveFactory.create(simplePackage.getName());
+      pkg.addResource("dummy-version2.jar", dummyJar);
+      pkg.addResource("common-util.jar", dummyJar);
+      URL packageXmlURL = this.getResource(this.getClass(), "package-version2.xml");
+      File file = new File(packageXmlURL.getFile());
+      File processedPackageXmlFile = this.processPackageXml(file, packageName, "1.0.0-alpha-2");
+      pkg.addResource("package.xml", processedPackageXmlFile);
+      URL buildXmlURL = this.getResource(this.getClass(), "build-version2.xml");
+      File buildFile = new File(buildXmlURL.getFile());
+      pkg.addResource("build-version2.xml", buildFile);
+      // now write out the package to disk
+      logger.debug("Writing out the created package " + pkg.toString(true));
+      this.exportZip(pkg, simplePackage);
+
+      return simplePackage;
+   }
 }

Modified: projects/ejb3/trunk/package-manager/src/test/resources/log4j.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/log4j.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/log4j.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -49,7 +49,7 @@
 
   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
     <param name="Target" value="System.out"/>
-       <!--  <param name="Threshold" value="INFO"/> -->
+ 
     <layout class="org.apache.log4j.PatternLayout">
       <!-- The default pattern: Date Priority [Category] Message\n -->
       <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t] [%c{1}] %m%n"/>
@@ -65,18 +65,26 @@
     <priority value="INFO"/>
   </category>
 
-  <category name="org.jboss.ejb3">
+  <category name="org.jboss.shrinkwrap">
+    <priority value="DEBUG"/>
+  </category>
+
+
+  <category name="org.jboss.ejb3.packagemanager">
     <priority value="ALL"/>
   </category>
 
     <category name="org.hibernate">
-    <priority value="ALL"/>
-  </category>
+        <priority value="WARN"/>
+    </category>
+    
+  
   <!-- ======================= -->
   <!-- Setup the Root category -->
   <!-- ======================= -->
 
   <root>
+    <priority value="WARN"/>
     <appender-ref ref="CONSOLE"/>
     <appender-ref ref="FILE"/>
   </root>

Modified: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-just-install-file.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-just-install-file.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-just-install-file.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -1,4 +1,4 @@
-<sh:package name="common-package-with-just-install-file" version="1.0.0-Alpha1"
+<sh:package name="${package.name}" version="${package.version}"
 xmlns:sh="http://www.jboss.org/schema">
 
     <!--  Package to install a dummy jar into JBOSS_AS/common/lib -->  

Modified: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-packaged-dependency.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-packaged-dependency.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-packaged-dependency.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -1,4 +1,4 @@
-<sh:package name="common-package-with-packaged-dependency" version="1.0.0-Alpha1"
+<sh:package name="${package.name}" version="${package.version}"
 xmlns:sh="http://www.jboss.org/schema">
 
     <!--  Package to install a dummy jar into JBOSS_AS/server/default/lib -->  

Modified: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-install-script.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-install-script.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-install-script.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -1,4 +1,4 @@
-<sh:package name="common-package-with-post-install" version="1.0.0-Alpha1"
+<sh:package name="${package.name}" version="${package.version}"
 xmlns:sh="http://www.jboss.org/schema">
 
     <!--  Package to install a dummy jar into JBOSS_AS/server/default/deploy -->  

Modified: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-uninstall-script.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-uninstall-script.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-post-uninstall-script.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -1,4 +1,4 @@
-<sh:package name="common-package-with-post-uninstall" version="1.0.0-Alpha1"
+<sh:package name="${package.name}" version="${package.version}"
 xmlns:sh="http://www.jboss.org/schema">
 
     <!--  Package to install a dummy jar into JBOSS_AS/server/default/deploy -->  

Modified: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-install-script.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-install-script.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-install-script.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -1,4 +1,4 @@
-<sh:package name="common-package-with-pre-install" version="1.0.0-Alpha1"
+<sh:package name="${package.name}" version="${package.version}"
 xmlns:sh="http://www.jboss.org/schema">
 
     <!--  Package to install a dummy jar into JBOSS_AS/server/default/deploy -->  

Modified: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-uninstall-script.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-uninstall-script.xml	2009-11-19 11:36:29 UTC (rev 96556)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/common/package-with-pre-uninstall-script.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -1,4 +1,4 @@
-<sh:package name="common-package-with-pre-uninstall" version="1.0.0-Alpha1"
+<sh:package name="${package.name}" version="${package.version}"
 xmlns:sh="http://www.jboss.org/schema">
 
     <!--  Package to install a dummy jar into JBOSS_AS/server/default/deploy -->  

Added: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version1.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version1.xml	                        (rev 0)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version1.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -0,0 +1,44 @@
+<!--
+  ~ JBoss, Home of Professional Open Source
+  ~ Copyright 2005, JBoss Inc., and individual contributors as indicated
+  ~ by the @authors tag. See the copyright.txt in the distribution for a
+  ~ full listing of individual contributors.
+  ~
+  ~ This is free software; you can redistribute it and/or modify it
+  ~ under the terms of the GNU Lesser General Public License as
+  ~ published by the Free Software Foundation; either version 2.1 of
+  ~ the License, or (at your option) any later version.
+  ~
+  ~ This software is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  ~ Lesser General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU Lesser General Public
+  ~ License along with this software; if not, write to the Free
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  -->
+
+<project name="Package Install Script">
+
+    <target name="post-install">
+            <echo level="info">***************************************************************</echo>
+            <echo level="info">This is the post-install target in the dummy package!</echo>
+            <echo level="info">Package manager home is = ${PM_HOME}</echo>
+            <echo level="info">JBoss AS home is = ${JBOSS_HOME}</echo>
+            <echo level="info">***************************************************************</echo>
+            <echo file="${JBOSS_HOME}/bin/post-install-version1.txt" message="This proves that the post-install script was run"/>
+    </target>
+    
+    
+    <target name="post-uninstall">
+            <echo level="info">***************************************************************</echo>
+            <echo level="info">This is the post-uninstall target in the dummy package!</echo>
+            <echo level="info">Package manager home is = ${PM_HOME}</echo>
+            <echo level="info">JBoss AS home is = ${JBOSS_HOME}</echo>
+            <echo level="info">***************************************************************</echo>
+            <delete file="${JBOSS_HOME}/bin/post-install-version1.txt"/> 
+    </target>
+
+</project>
\ No newline at end of file

Added: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version2.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version2.xml	                        (rev 0)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/build-version2.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -0,0 +1,44 @@
+<!--
+  ~ JBoss, Home of Professional Open Source
+  ~ Copyright 2005, JBoss Inc., and individual contributors as indicated
+  ~ by the @authors tag. See the copyright.txt in the distribution for a
+  ~ full listing of individual contributors.
+  ~
+  ~ This is free software; you can redistribute it and/or modify it
+  ~ under the terms of the GNU Lesser General Public License as
+  ~ published by the Free Software Foundation; either version 2.1 of
+  ~ the License, or (at your option) any later version.
+  ~
+  ~ This software is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  ~ Lesser General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU Lesser General Public
+  ~ License along with this software; if not, write to the Free
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  -->
+
+<project name="Package Install Script">
+
+    <target name="post-install">
+            <echo level="info">***************************************************************</echo>
+            <echo level="info">This is the post-install target in the dummy package!</echo>
+            <echo level="info">Package manager home is = ${PM_HOME}</echo>
+            <echo level="info">JBoss AS home is = ${JBOSS_HOME}</echo>
+            <echo level="info">***************************************************************</echo>
+            <echo file="${JBOSS_HOME}/bin/post-install-version2.txt" message="This proves that the post-install script was run"/>
+    </target>
+    
+    
+    <target name="post-uninstall">
+            <echo level="info">***************************************************************</echo>
+            <echo level="info">This is the post-uninstall target in the dummy package!</echo>
+            <echo level="info">Package manager home is = ${PM_HOME}</echo>
+            <echo level="info">JBoss AS home is = ${JBOSS_HOME}</echo>
+            <echo level="info">***************************************************************</echo>
+            <delete file="${JBOSS_HOME}/bin/post-install-version2.txt"/> 
+    </target>
+
+</project>
\ No newline at end of file

Added: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version1.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version1.xml	                        (rev 0)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version1.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -0,0 +1,16 @@
+<sh:package name="${package.name}" version="${package.version}"
+xmlns:sh="http://www.jboss.org/schema">
+
+    <!--  Package to install a dummy jar into JBOSS_AS/server/default/deploy -->  
+  <file name="dummy-version1.jar" dest-path="server/default/deploy" type="library"/>
+  <file name="common-util.jar" dest-path="common/lib" type="library"/>
+
+  <post-install>
+    <script name="build-version1.xml"/>
+  </post-install>
+  
+  <post-uninstall>
+    <script name="build-version1.xml"/>
+  </post-uninstall>
+  
+</sh:package>
\ No newline at end of file

Added: projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version2.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version2.xml	                        (rev 0)
+++ projects/ejb3/trunk/package-manager/src/test/resources/org/jboss/ejb3/packagemanager/test/upgrade/unit/package-version2.xml	2009-11-19 11:49:09 UTC (rev 96557)
@@ -0,0 +1,16 @@
+<sh:package name="${package.name}" version="${package.version}"
+xmlns:sh="http://www.jboss.org/schema">
+
+    <!--  Package to install a dummy jar into JBOSS_AS/server/default/deploy -->  
+  <file name="dummy-version2.jar" dest-path="server/default/deploy" type="library"/>
+  <file name="common-util.jar" dest-path="common/lib" type="library"/>
+
+  <post-install>
+    <script name="build-version2.xml"/>
+  </post-install>
+  
+  <post-uninstall>
+    <script name="build-version2.xml"/>
+  </post-uninstall>
+  
+</sh:package>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list