[jboss-cvs] JBossAS SVN: r95993 - in projects/ejb3/trunk/package-manager: src/main and 10 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 4 05:31:05 EST 2009
Author: jaikiran
Date: 2009-11-04 05:31:04 -0500 (Wed, 04 Nov 2009)
New Revision: 95993
Added:
projects/ejb3/trunk/package-manager/src/main/assemble/
projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/util/DBUtil.java
projects/ejb3/trunk/package-manager/src/main/resources/run.sh
projects/ejb3/trunk/package-manager/src/main/resources/schema.sql
projects/ejb3/trunk/package-manager/src/main/resources/setup.sh
Removed:
projects/ejb3/trunk/package-manager/src/main/resources/package-manager-sql-scripts.sql
projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/DBUtil.java
Modified:
projects/ejb3/trunk/package-manager/pom.xml
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerEnvironment.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/entity/InstalledFile.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledPackage.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/PackageDependency.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/script/impl/AntScriptProcessor.java
projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml
projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/PackageManagerTestCase.java
Log:
EJBTHREE-1942 Package manager implementation - setup and run scripts added
Modified: projects/ejb3/trunk/package-manager/pom.xml
===================================================================
--- projects/ejb3/trunk/package-manager/pom.xml 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/pom.xml 2009-11-04 10:31:04 UTC (rev 95993)
@@ -73,6 +73,27 @@
<argLine>-ea</argLine>
</configuration>
</plugin>
+
+ <!-- Assembly Plugin -->
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-4</version>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assemble/assemble.xml</descriptor>
+ </descriptors>
+ </configuration>
+ <inherited>false</inherited>
+ </plugin>
</plugins>
</build>
@@ -117,10 +138,11 @@
<!-- Command line parsing -->
+
<dependency>
- <groupId>gnu-getopt</groupId>
- <artifactId>getopt</artifactId>
- <version>1.0.13</version>
+ <groupId>net.sf</groupId>
+ <artifactId>jargs</artifactId>
+ <version>1.0</version>
</dependency>
Added: projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml 2009-11-04 10:31:04 UTC (rev 95993)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<assembly xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.1.1.xsd"
+>
+ <id>package-manager</id>
+ <formats>
+ <format>tar.gz</format>
+ <!-- <format>tar.bz2</format> -->
+ <format>zip</format>
+ </formats>
+ <includeBaseDirectory>true</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>schema.sql</include>
+ </includes>
+ <outputDirectory>script</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>setup.sh</include>
+ </includes>
+ <outputDirectory>bin</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>setup.sh</include>
+ <include>run.sh</include>
+ </includes>
+ <outputDirectory>bin</outputDirectory>
+ </fileSet>
+
+ </fileSets>
+ <dependencySets>
+ <dependencySet>
+ <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
+ <useProjectArtifact>true</useProjectArtifact>
+ <outputDirectory>lib</outputDirectory>
+ </dependencySet>
+
+ </dependencySets>
+</assembly>
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerEnvironment.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerEnvironment.java 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerEnvironment.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -40,7 +40,7 @@
private File packageManagerBuildDir;
private File packageManagerTmpDir;
-
+
private Map<String, String> properties = new HashMap<String, String>();
/**
@@ -50,12 +50,12 @@
{
this(home, new HashMap<String, String>());
}
-
+
public PackageManagerEnvironment(String home, Map<String, String> props)
{
this.packageManagerHome = new File(home);
this.properties = props == null ? new HashMap<String, String>() : props;
-
+
if (!this.packageManagerHome.exists() || !this.packageManagerHome.isDirectory())
{
throw new RuntimeException("Package manager home " + home + " doesn't exist or is not a directory");
@@ -76,6 +76,7 @@
{
this.packageManagerTmpDir.mkdirs();
}
+
}
public File getPackageManagerHome()
@@ -92,18 +93,18 @@
{
return this.packageManagerTmpDir;
}
-
+
public String getProperty(String propertyName)
{
return this.properties.get(propertyName);
}
-
+
public void setProperty(String propertyName, String propertyValue)
{
this.properties.put(propertyName, propertyValue);
-
+
}
-
+
public Map<String, String> getProperties()
{
return Collections.unmodifiableMap(this.properties);
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-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/DefaultDatabaseManager.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -21,6 +21,7 @@
*/
package org.jboss.ejb3.packagemanager.db;
+import java.io.File;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -34,10 +35,12 @@
import org.jboss.ejb3.packagemanager.PackageContext;
import org.jboss.ejb3.packagemanager.PackageManagerContext;
+import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
import org.jboss.ejb3.packagemanager.entity.InstalledFile;
import org.jboss.ejb3.packagemanager.entity.InstalledPackage;
import org.jboss.ejb3.packagemanager.entity.PackageDependency;
import org.jboss.ejb3.packagemanager.entity.PackageManagerEntity;
+import org.jboss.ejb3.packagemanager.exception.PackageManagerException;
import org.jboss.ejb3.packagemanager.exception.PackageNotInstalledException;
import org.jboss.ejb3.packagemanager.metadata.InstallFileType;
import org.jboss.logging.Logger;
@@ -74,11 +77,16 @@
public DefaultDatabaseManager(PackageManagerContext pkgMgrCtx)
{
this.packageManagerCtx = pkgMgrCtx;
-
- // TODO: Set it in a better way
- // String jbossServerDataDir = pkgMgrCtx.getJBossServerHome() + "/server/default/data";
- // System.setProperty("derby.system.home", "/home/jpai/pm");
- System.out.println("Derby system home is " + System.getProperty("derby.system.home"));
+ PackageManagerEnvironment environment = pkgMgrCtx.getPackageManagerEnvironment();
+ // we use derby (filesystem) based DB
+ File dbHome = new File(environment.getPackageManagerHome(), "data");
+ if (!dbHome.exists())
+ {
+ dbHome.mkdirs();
+ }
+ // set the Derby system home property to point to the package manager db
+ System.setProperty("derby.system.home", dbHome.getAbsolutePath());
+ logger.info("Package manager DB home set to " + System.getProperty("derby.system.home"));
this.entityMgrFactory = Persistence.createEntityManagerFactory("default");
}
@@ -120,7 +128,15 @@
tx.begin();
PackageManagerEntity packageManager = this.getOrCreatePackageManagerEntity(this.packageManagerCtx);
- InstalledPackage newlyInstalledPackage = this.createPackage(packageManager, pkgCtx);
+ InstalledPackage newlyInstalledPackage;
+ try
+ {
+ newlyInstalledPackage = this.createPackage(packageManager, pkgCtx);
+ }
+ catch (PackageManagerException pme)
+ {
+ throw new RuntimeException(pme);
+ }
try
{
@@ -143,7 +159,7 @@
* @see org.jboss.ejb3.packagemanager.db.PackageDatabaseManager#getInstalledPackage(java.lang.String)
*/
@Override
- public InstalledPackage getInstalledPackage(String name)
+ public InstalledPackage getInstalledPackage(String name) throws PackageNotInstalledException
{
EntityManager em = this.getEntityManager();
PackageManagerEntity packageManager = this.getOrCreatePackageManagerEntity(this.packageManagerCtx);
@@ -175,12 +191,12 @@
* @see org.jboss.ejb3.packagemanager.db.PackageDatabaseManager#getDependentPackages(java.lang.String)
*/
@Override
- public Set<InstalledPackage> getDependentPackages(String name)
+ public Set<InstalledPackage> getDependentPackages(String name) throws PackageNotInstalledException
{
InstalledPackage installedPackage = this.getInstalledPackage(name);
EntityManager em = this.getEntityManager();
Query query = em.createQuery("select pd.dependentPackage from " + PackageDependency.class.getSimpleName()
- + " pd " + "join pd.dependeePackage p " + " where p.id=" + installedPackage.getId());
+ + " pd " + "join pd.dependeePackage p " + " where p.name='" + installedPackage.getPackageName() + "'");
List<InstalledPackage> result = query.getResultList();
if (result == null || result.isEmpty())
@@ -196,8 +212,9 @@
* @param pkgMgrEntity
* @param pkgCtx
* @return
+ * @throws PackageManagerException
*/
- private InstalledPackage createPackage(PackageManagerEntity pkgMgrEntity, PackageContext pkgCtx)
+ private InstalledPackage createPackage(PackageManagerEntity pkgMgrEntity, PackageContext pkgCtx) throws PackageManagerException
{
InstalledPackage newPackage = new InstalledPackage(pkgMgrEntity, pkgCtx.getPackageName(), pkgCtx
.getPackageVersion());
@@ -241,13 +258,51 @@
}
/**
+ * @throws PackageNotInstalledException
* @see org.jboss.ejb3.packagemanager.db.PackageDatabaseManager#upgradePackage(org.jboss.ejb3.packagemanager.entity.InstalledPackage, org.jboss.ejb3.packagemanager.entity.InstalledPackage)
*/
- @Override
- public InstalledPackage upgradePackage(PackageContext packageToUpgrade)
+ public InstalledPackage upgradePackage(PackageContext packageToUpgrade) throws PackageNotInstalledException
{
- // get all packages which were dependent on the previous version of the package
- return null;
+ // 1) get all packages which were dependent on the previous version of the package
+ // 2) remove the earlier version of this package being upgraded
+ // 3) save this new version
+ // 4) Update the dependent packages to refer this newer version
+ String packageName = packageToUpgrade.getPackageName();
+ InstalledPackage existingVersionOfPackage = this.getInstalledPackage(packageName);
+
+ Set<InstalledPackage> dependentPackages = this.getDependentPackages(packageName);
+ EntityManager em = this.getEntityManager();
+ // break the link with the previous version of the package
+ if (dependentPackages != null && !dependentPackages.isEmpty())
+ {
+ for (InstalledPackage dependentPackage : dependentPackages)
+ {
+ dependentPackage.removeDependency(existingVersionOfPackage);
+ em.persist(dependentPackage);
+ }
+
+ }
+
+ // remove the package being upgraded
+ this.removePackage(existingVersionOfPackage);
+
+ // install this newer version
+ InstalledPackage upgradedPackage = this.installPackage(packageToUpgrade);
+ if (dependentPackages != null && !dependentPackages.isEmpty())
+ {
+ // create a new link/dependency on the new version of the package
+ for (InstalledPackage dependentPackage : dependentPackages)
+ {
+ PackageDependency dependency = new PackageDependency();
+ dependency.setDependeePackage(upgradedPackage);
+ dependency.setDependentPackage(dependentPackage);
+ dependentPackage.addDependency(dependency);
+ em.persist(dependentPackage);
+ }
+
+ }
+ // return the upgraded package
+ return upgradedPackage;
}
/**
@@ -304,7 +359,7 @@
installedPackage = em.merge(installedPackage);
em.remove(installedPackage);
tx.commit();
- logger.info("Deleted installed package = " + installedPackage.getId());
+ logger.info("Deleted installed package = " + installedPackage.getPackageName());
}
catch (Exception e)
{
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-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/db/PackageDatabaseManager.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -29,24 +29,75 @@
/**
* PackageDatabaseManager
- *
+ *
+ * Manages the database used by the Package manager for tracking the installed
+ * packages.
+ *
* @author Jaikiran Pai
* @version $Revision: $
*/
public interface PackageDatabaseManager
{
+ /**
+ * Store the information, in DB, about a package that was installed.
+ *
+ * This method is called to record the result of a successful package
+ * installation
+ *
+ * @param pkgCtx The package which was installed.
+ * @return Returns the {@link InstalledPackage} representing the newly
+ * installed package
+ */
InstalledPackage installPackage(PackageContext pkgCtx);
- InstalledPackage getInstalledPackage(String name);
+ /**
+ * Returns a package with the package name - <code>name</code>, which is already installed.
+ * If such a package is not installed then {@link PackageNotInstalledException} is thrown.
+ * If the caller is not sure whether the package with a given name is installed, then
+ * use the {@link #isPackageInstalled(String)} method, before calling this method
+ *
+ * @param name Name of the package
+ * @return
+ * @throws PackageNotInstalledException If the package with the name <code>name</code> is
+ * not installed
+ */
+ InstalledPackage getInstalledPackage(String name) throws PackageNotInstalledException;
+ /**
+ * Returns true if the package with the given <code>name</code> is already installed.
+ * Else returns false.
+ *
+ * @param name Name of the package
+ * @return
+ */
boolean isPackageInstalled(String name);
- Set<InstalledPackage> getDependentPackages(String name);
+ /**
+ * Returns a set of {@link InstalledPackage}s which depend on the package with the
+ * name <code>name</code>. If there are no such dependent packages then an empty
+ * set is returned.
+ *
+ * @param name Name of the package which has to be checked for dependent packages
+ * @return
+ * @throws If the package with <code>name</code> is not installed, then {@link PackageNotInstalledException}
+ * is thrown
+ */
+ Set<InstalledPackage> getDependentPackages(String name) throws PackageNotInstalledException;
- InstalledPackage upgradePackage(PackageContext pkgCtx);
-
+ /**
+ * Removes the package from the DB records.
+ *
+ * @param name The name of the package to remove
+ * @throws PackageNotInstalledException If the package with name <code>name</code> is
+ * not already installed
+ */
void removePackage(String name) throws PackageNotInstalledException;
+ /**
+ * Removes the package from the DB records.
+ *
+ * @param installedPackage The package which has been installed
+ */
void removePackage(InstalledPackage installedPackage);
}
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledFile.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledFile.java 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledFile.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -51,7 +51,7 @@
private String fileType;
@ManyToOne
- @JoinColumn(name="package_id")
+ @JoinColumn(name="package_name")
private InstalledPackage pkg;
private InstalledFile()
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledPackage.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledPackage.java 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/InstalledPackage.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -21,12 +21,11 @@
*/
package org.jboss.ejb3.packagemanager.entity;
+import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@@ -45,14 +44,11 @@
{
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private long id;
-
private String name;
private String version;
- @OneToMany(mappedBy = "dependeePackage", cascade=CascadeType.ALL)
+ @OneToMany(mappedBy = "dependentPackage", cascade=CascadeType.ALL)
private Set<PackageDependency> dependencies;
@OneToMany(mappedBy = "pkg", cascade = CascadeType.ALL)
@@ -74,12 +70,7 @@
this.version = packageVersion;
}
- public InstalledPackage(long id)
- {
- this.id = id;
- }
-
public String getPackageName()
{
return this.name;
@@ -90,16 +81,6 @@
return this.version;
}
- public long getId()
- {
- return id;
- }
-
- public void setId(long id)
- {
- this.id = id;
- }
-
public Set<InstalledFile> getInstallationFiles()
{
return installationFiles;
@@ -130,6 +111,52 @@
this.dependencies = dependencies;
}
+ public void addDependency(PackageDependency dependency)
+ {
+ if (this.dependencies == null)
+ {
+ this.dependencies = new HashSet<PackageDependency>();
+ }
+ this.dependencies.add(dependency);
+ }
+
+ public void addDependencies(Set<PackageDependency> dependencies)
+ {
+ if (this.dependencies == null)
+ {
+ this.dependencies = new HashSet<PackageDependency>();
+ }
+ this.dependencies.addAll(dependencies);
+ }
+
+ public void removeDependency(PackageDependency dependency)
+ {
+ if (this.dependencies == null)
+ {
+ return;
+ }
+ this.dependencies.remove(dependency);
+ }
+
+
+ public void removeDependency(InstalledPackage dependencyPackage)
+ {
+ if (this.dependencies == null)
+ {
+ return;
+ }
+ Set<PackageDependency> copyOfDependencies = new HashSet<PackageDependency>(this.dependencies);
+ for (PackageDependency dependency : copyOfDependencies)
+ {
+ if (dependency.getDependentPackage().equals(dependencyPackage))
+ {
+ this.dependencies.remove(dependency);
+ }
+ }
+
+ }
+
+
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@@ -145,7 +172,7 @@
return false;
}
InstalledPackage otherPackge = (InstalledPackage) obj;
- return this.getId() == otherPackge.getId();
+ return this.name == otherPackge.name;
}
@@ -155,6 +182,6 @@
@Override
public int hashCode()
{
- return Long.valueOf(this.id).hashCode();
+ return this.name.hashCode();
}
}
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/PackageDependency.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/PackageDependency.java 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/entity/PackageDependency.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -45,12 +45,12 @@
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
- @ManyToOne (cascade=CascadeType.REFRESH)
- @JoinColumn(name = "dependent_package_id")
+ @ManyToOne(cascade = CascadeType.REFRESH)
+ @JoinColumn(name = "dependent_package")
private InstalledPackage dependentPackage;
- @ManyToOne(cascade=CascadeType.REFRESH)
- @JoinColumn(name = "dependee_package_id")
+ @ManyToOne(cascade = CascadeType.REFRESH)
+ @JoinColumn(name = "dependee_package")
private InstalledPackage dependeePackage;
public long getId()
@@ -83,4 +83,35 @@
this.dependeePackage = dependeePackage;
}
+ /**
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == null)
+ {
+ return false;
+ }
+ if (!(obj instanceof PackageDependency))
+ {
+ return false;
+ }
+ PackageDependency other = (PackageDependency) obj;
+ if (this.dependeePackage != null && this.dependentPackage != null)
+ {
+ return this.dependeePackage.equals(other.getDependeePackage()) && this.dependentPackage.equals(other.getDependentPackage());
+ }
+ return false;
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode()
+ {
+ // TODO Auto-generated method stub
+ return super.hashCode();
+ }
}
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-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerImpl.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -95,6 +95,7 @@
this.environment = environment;
this.installationServerHome = jbossHome;
this.pkgMgrCtx = new DefaultPackageManagerContext(this);
+
this.pkgDatabaseManager = new DefaultDatabaseManager(this.pkgMgrCtx);
}
@@ -181,7 +182,7 @@
}
logger.debug("New package " + pkgContext + " being installed");
// proceed with installation of the package
-
+
if (pkgContext.getInstallationFiles() == null)
{
throw new PackageManagerException("There are no files to install for package: " + pkgContext);
@@ -211,19 +212,21 @@
@Override
public void removePackage(String packageName) throws PackageNotInstalledException, PackageManagerException
{
- this.removePackage(packageName, false);
- logger.info("Uninstalled " + packageName);
- }
-
-
- protected void removePackage(String packageName, boolean forceRemove) throws PackageNotInstalledException, PackageManagerException
- {
// get the installed package
boolean isPackageInstalled = this.pkgDatabaseManager.isPackageInstalled(packageName);
if (!isPackageInstalled)
{
throw new PackageNotInstalledException("Package " + packageName + " is not installed - so cannot be removed!");
}
+ InstalledPackage installedPackage = this.pkgDatabaseManager.getInstalledPackage(packageName);
+ this.removePackage(installedPackage, false);
+
+ }
+
+ protected void removePackage(InstalledPackage installedPackage, boolean forceRemove)
+ throws PackageNotInstalledException, PackageManagerException
+ {
+ String packageName = installedPackage.getPackageName();
if (!forceRemove)
{
// check if other packages are dependent on this package
@@ -235,7 +238,6 @@
+ " - cannot remove this package!");
}
}
- InstalledPackage installedPackage = this.pkgDatabaseManager.getInstalledPackage(packageName);
// TODO : Revisit this installer creation
Installer installer = new DefaultInstaller(this.pkgMgrCtx);
// install files in this package
@@ -244,8 +246,9 @@
installer.uninstall(installedPackage, fileToUninstall);
}
this.pkgDatabaseManager.removePackage(installedPackage);
+ logger.info("Uninstalled " + packageName);
}
-
+
/**
* @see org.jboss.ejb3.packagemanager.PackageManager#updatePackage(java.lang.String)
*/
@@ -283,25 +286,21 @@
public void updatePackage(PackageContext pkgContext) throws PackageManagerException
{
- // TODO: Revisit
-// // first remove
-// this.removeIfExists(pkgContext.getPackageName());
-//
+ String packageName = pkgContext.getPackageName();
+ boolean isPackageInstalled = this.pkgDatabaseManager.isPackageInstalled(packageName);
+ if (isPackageInstalled)
+ {
+ InstalledPackage installedPackage = this.pkgDatabaseManager.getInstalledPackage(packageName);
+ logger.info("Removing existing package " + packageName + " version " + installedPackage.getPackageVersion()
+ + " for upgrading to " + pkgContext);
+ removePackage(installedPackage, true);
+ }
+
// now install new version
this.installPackage(pkgContext);
}
- private void removeIfExists(String packageName) throws PackageManagerException
- {
- // get the installed package
- boolean isPackageInstalled = this.pkgDatabaseManager.isPackageInstalled(packageName);
- if (!isPackageInstalled)
- {
- return;
- }
- this.removePackage(packageName);
- }
/**
* Parses the {@code pkgPath} string and returns an appropriate URL.
*
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-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Main.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -21,17 +21,25 @@
*/
package org.jboss.ejb3.packagemanager.main;
-import gnu.getopt.Getopt;
+import jargs.gnu.CmdLineParser;
+import java.io.File;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
import org.jboss.ejb3.packagemanager.PackageManager;
import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
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;
/**
* Main
*
- * TODO: This needs a lot of rework - currently WIP.
+ * TODO: Command line parsing is WIP.
*
* @author Jaikiran Pai
* @version $Revision: $
@@ -40,6 +48,11 @@
{
/**
+ * Logger
+ */
+ private static Logger logger = Logger.getLogger(Main.class);
+
+ /**
* One of the entry points to the package manager.
* Accepts the command line arguments and carries out appropriate operations
* through the package-manager.
@@ -51,58 +64,126 @@
*/
public static void main(String[] args) throws PackageManagerException
{
-
- Getopt arguments = new Getopt("packagemanager", args, "i:u:r:s:p:");
- int argument;
- String jbossHome = null;
- String pmHome = System.getProperty("java.io.tmpdir");
- // TODO: Better handling of commands/options
- while ((argument = arguments.getopt()) != -1)
+ CmdLineParser cmdLineParser = new CmdLineParser();
+ CmdLineParser.Option setupCmdOption = cmdLineParser.addStringOption("setup");
+ CmdLineParser.Option installCmdOption = cmdLineParser.addStringOption('i', "install");
+ CmdLineParser.Option upgradeCmdOption = cmdLineParser.addStringOption('u', "upgrade");
+ CmdLineParser.Option removeCmdOption = cmdLineParser.addStringOption('r', "remove");
+ CmdLineParser.Option packageManagerHomeCmdOption = cmdLineParser.addStringOption('p', "pmhome");
+ CmdLineParser.Option jbossHomeCmdOption = cmdLineParser.addStringOption('s', "jbossHome");
+
+ try
{
- switch (argument)
- {
- case 's' :
- jbossHome = arguments.getOptarg();
- break;
- case 'p' :
- pmHome = arguments.getOptarg();
- break;
- }
+ cmdLineParser.parse(args);
}
-
+ catch (CmdLineParser.OptionException e)
+ {
+ System.err.println("Error parsing command " + e.getMessage());
+ printUsage();
+ throw new PackageManagerException(e.getMessage());
+ }
+ File currentDir = new File(".");
+ String packageManagerHome = (String) cmdLineParser.getOptionValue(packageManagerHomeCmdOption,currentDir.getAbsolutePath());
+ String jbossHome = (String) cmdLineParser.getOptionValue(jbossHomeCmdOption);
+ if (packageManagerHome == null)
+ {
+ throw new PackageManagerException("Package manager home has not been set");
+ }
if (jbossHome == null)
{
- throw new Error("JBoss Server Home not specified");
+ throw new PackageManagerException("JBoss Home has not been set");
}
- PackageManagerEnvironment env = new PackageManagerEnvironment(pmHome);
+
+ File pmHome = new File(packageManagerHome);
+ if (!pmHome.exists())
+ {
+ throw new PackageManagerException("Package manager home " + pmHome + " does not exist!");
+ }
+
+ File jbHome = new File(jbossHome);
+ if (!jbHome.exists())
+ {
+ throw new PackageManagerException("JBoss home " + jbHome + " does not exist!");
+ }
+ logger.info("Using Package Manager Home: " + packageManagerHome);
+ logger.info("Using JBoss Home: " + jbossHome);
+ PackageManagerEnvironment env = new PackageManagerEnvironment(packageManagerHome);
PackageManager pm = new DefaultPackageManagerImpl(env, jbossHome);
-
- Getopt commands = new Getopt("packagemanager", args, "i:u:r:s:p:");
- int command;
- String packageToOperateOn = null;
- // TODO: Better handling of commands/options
- while ((command = commands.getopt()) != -1)
+
+ String schemaSetupScript = (String) cmdLineParser.getOptionValue(setupCmdOption);
+ if (schemaSetupScript != null)
{
- switch (command)
+ File schemaFile = new File(schemaSetupScript);
+ if (!schemaFile.exists())
{
- case 'i' :
- packageToOperateOn = commands.getOptarg();
- pm.installPackage(packageToOperateOn);
- break;
- case 'u' :
- packageToOperateOn = commands.getOptarg();
- pm.updatePackage(packageToOperateOn);
- break;
- case 'r' :
- packageToOperateOn = commands.getOptarg();
- pm.removePackage(packageToOperateOn);
- break;
+ throw new PackageManagerException(
+ "Could not setup the database for package manager, because of non-existent schema file "
+ + schemaSetupScript);
}
+ Connection conn = null;
+ try
+ {
+ conn = DriverManager.getConnection("jdbc:derby:pmdb;create=true");
+ DBUtil.runSql(conn, schemaFile);
+ logger.info("Successfully setup the package manager database");
+ }
+ catch (SQLException sqle)
+ {
+ throw new PackageManagerException("Could not setup package manager database: ", sqle);
+ }
+ catch (IOException ioe)
+ {
+ throw new PackageManagerException("Could not setup package manager database: ", ioe);
+ }
+ finally
+ {
+ if (conn != null)
+ {
+ try
+ {
+ conn.close();
+ }
+ catch (SQLException sqle)
+ {
+ // can't do much
+ logger.trace("Could not close connection:",sqle);
+ }
+ }
+ }
+
}
-
+ String packageToInstall = (String) cmdLineParser.getOptionValue(installCmdOption);
+ String packageToUpgrade = (String) cmdLineParser.getOptionValue(upgradeCmdOption);
+ String packageToRemove = (String) cmdLineParser.getOptionValue(removeCmdOption);
+
+ if (packageToInstall != null)
+ {
+ // it's time to install
+ pm.installPackage(packageToInstall);
+
+ }
+
+ if (packageToUpgrade != null)
+ {
+ // upgrade!
+ pm.updatePackage(packageToUpgrade);
+ }
+
+ if (packageToRemove != null)
+ {
+ // out you go!
+ pm.removePackage(packageToRemove);
+ }
+
}
+
-
+ 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"
+ + " [-s path_to_jboss_home]");
+ }
}
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/script/impl/AntScriptProcessor.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/script/impl/AntScriptProcessor.java 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/script/impl/AntScriptProcessor.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -103,7 +103,7 @@
throw new ScriptProcessingException("Target " + targetName + " not present in Ant script " + antBuildFile
+ " for " + pkgCtx);
}
- logger.info("Running pre-install script " + antBuildFile + " ,target= " + targetName + " for " + pkgCtx);
+ logger.info("Running script " + antBuildFile + " ,target= " + targetName + " for " + pkgCtx);
try
{
antProject.executeTarget(targetName);
Added: 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 (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/util/DBUtil.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -0,0 +1,108 @@
+/*
+* 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.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.jboss.logging.Logger;
+
+/**
+ * DBUtil
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class DBUtil
+{
+
+ private static Logger logger = Logger.getLogger(DBUtil.class);
+
+ public static void runSql(Connection conn, File sqlFile) throws IOException, SQLException
+ {
+ logger.info("SQL being run from file " + sqlFile);
+ InputStream sql = new FileInputStream(sqlFile);
+
+ runSql(conn, sql);
+
+ }
+
+ public static void runSql(Connection conn, InputStream sql) throws IOException, SQLException
+ {
+
+ Reader reader = new InputStreamReader(sql);
+ BufferedReader bufferedReader = new BufferedReader(reader);
+ long lineNo = 0;
+ Statement statement = conn.createStatement();
+ try
+ {
+ StringBuffer trimmedSql = new StringBuffer();
+ for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine())
+ {
+ try
+ {
+ lineNo++;
+ line = line.trim();
+ //String trimmedSql = line.trim();
+ if (line.length() == 0 || line.startsWith("--") || line.startsWith("//")
+ || line.startsWith("/*"))
+ {
+ continue;
+ }
+ else
+ {
+ trimmedSql.append(" ");
+ trimmedSql.append(line);
+ if (trimmedSql.toString().endsWith(";"))
+ {
+ String sqlToRun = trimmedSql.substring(0, trimmedSql.length() - 1);
+ logger.info(sqlToRun);
+ statement.execute(sqlToRun);
+ trimmedSql = new StringBuffer();
+ }
+
+ }
+ }
+ catch (SQLException sqle)
+ {
+ logger.error("SQLException at line number " + lineNo, sqle);
+ throw sqle;
+ }
+ }
+ }
+ finally
+ {
+ if (statement != null)
+ {
+ statement.close();
+ }
+ }
+ }
+}
Modified: projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/resources/log4j.xml 2009-11-04 10:31:04 UTC (rev 95993)
@@ -22,8 +22,8 @@
<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
- <param name="File" value="target/test.log"/>
- <param name="Threshold" value="INFO"/>
+ <param name="File" value="log/test.log"/>
+ <param name="Threshold" value="DEBUG"/>
<param name="Append" value="false"/>
<!-- Rollover at midnight each day -->
@@ -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 [%c{1}] %m%n"/>
@@ -61,15 +61,6 @@
<!-- Limit categories -->
<!-- ================ -->
- <category name="org.jboss">
- <priority value="INFO"/>
- </category>
-
- <category name="org.jboss.ejb3">
- <priority value="ALL"/>
- </category>
-
-
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
Deleted: projects/ejb3/trunk/package-manager/src/main/resources/package-manager-sql-scripts.sql
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/resources/package-manager-sql-scripts.sql 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/main/resources/package-manager-sql-scripts.sql 2009-11-04 10:31:04 UTC (rev 95993)
@@ -1,49 +0,0 @@
--- Package Manager table
--- DROP TABLE package_manager;
-CREATE TABLE package_manager (
- id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT PACKAGE_MANAGER_PK PRIMARY KEY,
- jbossHome varchar(255) not null
-);
--- add a unique constraint to server home
-ALTER TABLE package_manager
-ADD CONSTRAINT jboss_server_home_uniqueness UNIQUE (jbossHome);
-
--- Package table
--- DROP TABLE package;
-CREATE TABLE package (
- id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT PACKAGE_PK PRIMARY KEY,
- package_manager_id bigint not null,
- name varchar(255) not null,
- version varchar(255) not null,
- foreign key (package_manager_id) references package_manager (id)
-
-);
-
--- add a unique constraint to package name,version
-ALTER TABLE package
-ADD CONSTRAINT package_name_version UNIQUE (name, version);
-
-
--- Installation file
--- DROP TABLE installation_file;
-CREATE TABLE installation_file (
- id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT INSTALLATION_FILE_PK PRIMARY KEY,
- package_id bigint not null,
- fileName varchar(255) not null,
- installedPath varchar(255) not null,
- fileType varchar(255),
- foreign key (package_id) references package (id)
-
-);
-
--- Package dependencies
--- DROP TABLE package_dependency;
-CREATE TABLE package_dependency (
- id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT PACKAGE_DEPENDENCY_PK PRIMARY KEY,
- dependent_package_id bigint not null,
- dependee_package_id bigint not null,
- --primary key (dependent_package_id, dependee_package_id),
- foreign key (dependee_package_id) references package (id),
- foreign key (dependent_package_id) references package(id)
-
-);
\ No newline at end of file
Added: projects/ejb3/trunk/package-manager/src/main/resources/run.sh
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/resources/run.sh (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/resources/run.sh 2009-11-04 10:31:04 UTC (rev 95993)
@@ -0,0 +1,93 @@
+#!/bin/sh
+### ====================================================================== ###
+## ##
+## JBoss Package Manager setup script ##
+## ##
+### ====================================================================== ###
+
+DIRNAME=`dirname $0`
+PROGNAME=`basename $0`
+GREP="grep"
+
+
+#
+# Helper to complain.
+#
+warn() {
+ echo "${PROGNAME}: $*"
+}
+
+#
+# Helper to puke.
+#
+die() {
+ warn $*
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false;
+darwin=false;
+linux=false;
+case "`uname`" in
+ CYGWIN*)
+ cygwin=true
+ ;;
+
+ Darwin*)
+ darwin=true
+ ;;
+
+ Linux)
+ linux=true
+ ;;
+esac
+
+# Setup PACKAGE_MANAGER_HOME
+if [ "x$PACKAGE_MANAGER_HOME" = "x" ]; then
+ # get the full path (without any relative bits)
+ PACKAGE_MANAGER_HOME=`cd $DIRNAME/..; pwd`
+fi
+export PACKAGE_MANAGER_HOME
+
+# Setup the JVM
+if [ "x$JAVA" = "x" ]; then
+ if [ "x$JAVA_HOME" != "x" ]; then
+ JAVA="$JAVA_HOME/bin/java"
+ else
+ JAVA="java"
+ fi
+fi
+
+# Setup the classpath
+# wildcards are supported in classpath, starting Java 6
+PACKAGE_MANAGER_CLASSPATH="$PACKAGE_MANAGER_HOME/lib/*"
+
+# Setup JBoss Package Manager specific properties
+JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
+
+# Sample JPDA settings for remote socket debugging
+#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"
+
+
+# Display our environment
+echo "========================================================================="
+echo ""
+echo " JBoss Package Manager Environment"
+echo ""
+echo " PACKAGE_MANAGER_HOME: $PACKAGE_MANAGER_HOME"
+echo ""
+echo " JAVA: $JAVA"
+echo ""
+echo " JAVA_OPTS: $JAVA_OPTS"
+echo ""
+echo " CLASSPATH: $PACKAGE_MANAGER_CLASSPATH"
+echo ""
+echo "========================================================================="
+echo ""
+
+"$JAVA" $JAVA_OPTS \
+ -classpath "$PACKAGE_MANAGER_CLASSPATH" \
+ org.jboss.ejb3.packagemanager.main.Main "$@"
+ PACKAGE_MANAGER_STATUS=$?
+
Added: projects/ejb3/trunk/package-manager/src/main/resources/schema.sql
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/resources/schema.sql (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/resources/schema.sql 2009-11-04 10:31:04 UTC (rev 95993)
@@ -0,0 +1,42 @@
+-- Package Manager table
+-- DROP TABLE package_manager;
+CREATE TABLE package_manager (
+ id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT PACKAGE_MANAGER_PK PRIMARY KEY,
+ jbossHome varchar(255) not null
+);
+-- add a unique constraint to server home
+ALTER TABLE package_manager
+ADD CONSTRAINT jboss_server_home_uniqueness UNIQUE (jbossHome);
+
+-- Package table
+-- DROP TABLE package;
+CREATE TABLE package (
+ package_manager_id bigint not null,
+ name varchar(255) not null CONSTRAINT PACKAGE_PK PRIMARY KEY,
+ version varchar(255) not null,
+ foreign key (package_manager_id) references package_manager (id)
+
+);
+
+-- Installation file
+-- DROP TABLE installation_file;
+CREATE TABLE installation_file (
+ id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT INSTALLATION_FILE_PK PRIMARY KEY,
+ package_name varchar(255) not null,
+ fileName varchar(255) not null,
+ installedPath varchar(255) not null,
+ fileType varchar(255),
+ foreign key (package_name) references package (name)
+
+);
+
+-- Package dependencies
+-- DROP TABLE package_dependency;
+CREATE TABLE package_dependency (
+ id bigint not null GENERATED ALWAYS AS IDENTITY CONSTRAINT PACKAGE_DEPENDENCY_PK PRIMARY KEY,
+ dependent_package varchar(255) not null,
+ dependee_package varchar(255) not null,
+ foreign key (dependee_package) references package (name),
+ foreign key (dependent_package) references package(name)
+
+);
\ No newline at end of file
Added: projects/ejb3/trunk/package-manager/src/main/resources/setup.sh
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/resources/setup.sh (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/resources/setup.sh 2009-11-04 10:31:04 UTC (rev 95993)
@@ -0,0 +1,94 @@
+#!/bin/sh
+### ====================================================================== ###
+## ##
+## JBoss Package Manager setup script ##
+## ##
+### ====================================================================== ###
+
+DIRNAME=`dirname $0`
+PROGNAME=`basename $0`
+GREP="grep"
+
+
+#
+# Helper to complain.
+#
+warn() {
+ echo "${PROGNAME}: $*"
+}
+
+#
+# Helper to puke.
+#
+die() {
+ warn $*
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false;
+darwin=false;
+linux=false;
+case "`uname`" in
+ CYGWIN*)
+ cygwin=true
+ ;;
+
+ Darwin*)
+ darwin=true
+ ;;
+
+ Linux)
+ linux=true
+ ;;
+esac
+
+# Setup PACKAGE_MANAGER_HOME
+if [ "x$PACKAGE_MANAGER_HOME" = "x" ]; then
+ # get the full path (without any relative bits)
+ PACKAGE_MANAGER_HOME=`cd $DIRNAME/..; pwd`
+fi
+export PACKAGE_MANAGER_HOME
+
+# Setup the JVM
+if [ "x$JAVA" = "x" ]; then
+ if [ "x$JAVA_HOME" != "x" ]; then
+ JAVA="$JAVA_HOME/bin/java"
+ else
+ JAVA="java"
+ fi
+fi
+
+# Setup the classpath
+# wildcards are supported in classpath, starting Java 6
+PACKAGE_MANAGER_CLASSPATH="$PACKAGE_MANAGER_HOME/lib/*"
+
+# Setup JBoss Package Manager specific properties
+JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
+
+# Sample JPDA settings for remote socket debugging
+#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"
+
+
+# Display our environment
+echo "========================================================================="
+echo ""
+echo " JBoss Package Manager Environment"
+echo ""
+echo " PACKAGE_MANAGER_HOME: $PACKAGE_MANAGER_HOME"
+echo ""
+echo " JAVA: $JAVA"
+echo ""
+echo " JAVA_OPTS: $JAVA_OPTS"
+echo ""
+echo " CLASSPATH: $PACKAGE_MANAGER_CLASSPATH"
+echo ""
+echo "========================================================================="
+echo ""
+
+"$JAVA" $JAVA_OPTS \
+ -classpath "$PACKAGE_MANAGER_CLASSPATH" \
+ org.jboss.ejb3.packagemanager.main.Main --setup "$PACKAGE_MANAGER_HOME/script/schema.sql" \
+ "$@"
+ PACKAGE_MANAGER_STATUS=$?
+
Deleted: projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/DBUtil.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/DBUtil.java 2009-11-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/DBUtil.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -1,108 +0,0 @@
-/*
-* 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.test.common;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import org.jboss.logging.Logger;
-
-/**
- * DBUtil
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class DBUtil
-{
-
- private static Logger logger = Logger.getLogger(DBUtil.class);
-
- public static void runSql(Connection conn, File sqlFile) throws IOException, SQLException
- {
- logger.info("SQL being run from file " + sqlFile);
- InputStream sql = new FileInputStream(sqlFile);
-
- runSql(conn, sql);
-
- }
-
- public static void runSql(Connection conn, InputStream sql) throws IOException, SQLException
- {
-
- Reader reader = new InputStreamReader(sql);
- BufferedReader bufferedReader = new BufferedReader(reader);
- long lineNo = 0;
- Statement statement = conn.createStatement();
- try
- {
- StringBuffer trimmedSql = new StringBuffer();
- for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine())
- {
- try
- {
- lineNo++;
- line = line.trim();
- //String trimmedSql = line.trim();
- if (line.length() == 0 || line.startsWith("--") || line.startsWith("//")
- || line.startsWith("/*"))
- {
- continue;
- }
- else
- {
- trimmedSql.append(" ");
- trimmedSql.append(line);
- if (trimmedSql.toString().endsWith(";"))
- {
- String sqlToRun = trimmedSql.substring(0, trimmedSql.length() - 1);
- logger.info(sqlToRun);
- statement.execute(sqlToRun);
- trimmedSql = new StringBuffer();
- }
-
- }
- }
- catch (SQLException sqle)
- {
- logger.error("SQLException at line number " + lineNo, sqle);
- throw sqle;
- }
- }
- }
- finally
- {
- if (statement != null)
- {
- statement.close();
- }
- }
- }
-}
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-04 06:55:03 UTC (rev 95992)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/common/PackageManagerTestCase.java 2009-11-04 10:31:04 UTC (rev 95993)
@@ -35,6 +35,7 @@
import java.util.Arrays;
import java.util.List;
+import org.jboss.ejb3.packagemanager.util.DBUtil;
import org.jboss.logging.Logger;
import org.jboss.shrinkwrap.api.export.ZipExporter;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
@@ -56,6 +57,11 @@
* Logger
*/
private static Logger logger = Logger.getLogger(PackageManagerTestCase.class);
+
+ /**
+ * File name of the package manager DB schema file
+ */
+ private static final String PACKAGE_MANAGER_DB_SCHEMA_FILE_NAME = "schema.sql";
/**
* Base dir
@@ -91,8 +97,8 @@
private static void setupDatabase(File dbHome) throws IOException, SQLException
{
System.setProperty("derby.system.home", dbHome.getAbsolutePath());
- InputStream sql = Thread.currentThread().getContextClassLoader().getResourceAsStream(
- "package-manager-sql-scripts.sql");
+ InputStream sql = Thread.currentThread().getContextClassLoader().getResourceAsStream(PACKAGE_MANAGER_DB_SCHEMA_FILE_NAME);
+
if (sql == null)
{
throw new RuntimeException(
@@ -256,7 +262,7 @@
// |--- common
// |--- Dummy.class
- File dummyJar = new File(targetDir, "dummy.jar");
+ File dummyJar = new File(getPerTestTargetDir(this.getClass()), "dummy.jar");
// if it already exists then no need to recreate it
if (dummyJar.exists())
{
@@ -293,7 +299,7 @@
File dummyJar = this.createDummyJar();
// Now let's package the dummy.jar, package.xml into a package
- File simplePackage = new File(targetDir, packageFileName);
+ 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");
@@ -333,7 +339,7 @@
File dummyJar = this.createDummyJar();
// Now let's package the dummy.jar, package.xml and build.xml into a package
- File packageWithPreInstallScript = new File(targetDir, packageFileName);
+ File packageWithPreInstallScript = new File(getPerTestTargetDir(this.getClass()), packageFileName);
JavaArchive pkg = JavaArchiveFactory.create(packageWithPreInstallScript.getName());
pkg.addResource("dummy.jar", dummyJar);
URL packageXmlURL = this.getResource(PackageManagerTestCase.class, "package-with-pre-install-script.xml");
@@ -386,7 +392,7 @@
File dependeePackage = this.createSimplePackage("dependee-package.jar");
// Now package this dependee package and also any other files in the dependent package
- File packageWithPackagedDependency = new File(targetDir, packageFileName);
+ File packageWithPackagedDependency = new File(getPerTestTargetDir(this.getClass()), packageFileName);
JavaArchive pkg = JavaArchiveFactory.create(packageWithPackagedDependency.getName());
pkg.addResource("dependee-package.jar", dependeePackage);
// package the other files
More information about the jboss-cvs-commits
mailing list