[jboss-cvs] JBossAS SVN: r100245 - in projects/ejb3/trunk/package-manager/src: main/java/org/jboss/ejb3/packagemanager and 7 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 2 05:16:08 EST 2010
Author: jaikiran
Date: 2010-02-02 05:16:07 -0500 (Tue, 02 Feb 2010)
New Revision: 100245
Added:
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/TransactionalPackageManager.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultInstallOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUnInstallOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUpgradeOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/InstallOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/PackageManagerOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UnInstallOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UpgradeOptions.java
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/TransactionalPackageManagerInvocationHandler.java
Removed:
projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/PackageManagerInvocationHandler.java
Modified:
projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml
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/PackageManagerFactory.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/Setup.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/upgrade/unit/UpgradeUnitTestCase.java
Log:
EJBTHREE-1942 Refactoring
Modified: projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/main/assemble/assemble.xml 2010-02-02 10:16:07 UTC (rev 100245)
@@ -3,7 +3,7 @@
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>
+ <id>installer</id>
<formats>
<format>tar.gz</format>
<!-- <format>tar.bz2</format> -->
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 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManager.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -29,6 +29,9 @@
import org.jboss.ejb3.packagemanager.db.PackageDatabaseManager;
import org.jboss.ejb3.packagemanager.exception.PackageManagerException;
import org.jboss.ejb3.packagemanager.exception.PackageNotInstalledException;
+import org.jboss.ejb3.packagemanager.option.InstallOptions;
+import org.jboss.ejb3.packagemanager.option.UnInstallOptions;
+import org.jboss.ejb3.packagemanager.option.UpgradeOptions;
/**
* PackageManager
@@ -58,11 +61,29 @@
/**
* Updates the package
*
+ * @param packagePath
+ * @param upgradeOptions
+ * @throws PackageManagerException
+ */
+ void updatePackage(String packagePath, UpgradeOptions upgradeOptions) throws PackageManagerException;
+
+ /**
+ * Updates the package
+ *
* @param packageURL The URL of the package file
*/
void updatePackage(URL packageURL) throws PackageManagerException;
/**
+ * Updates the package
+ *
+ * @param packageURL
+ * @param upgradeOptions
+ * @throws PackageManagerException
+ */
+ void updatePackage(URL packageURL, UpgradeOptions upgradeOptions) throws PackageManagerException;
+
+ /**
* Installs a package
*
* @param packagePath The URL path of the package file
@@ -71,6 +92,15 @@
void installPackage(String packagePath) throws PackageManagerException;
/**
+ * Installs a package
+ *
+ * @param packagePath
+ * @param installOptions
+ * @throws PackageManagerException
+ */
+ void installPackage(String packagePath, InstallOptions installOptions) throws PackageManagerException;
+
+ /**
* Installs a package
*
* @param packageURL The URL of the package file
@@ -79,12 +109,31 @@
void installPackage(URL packageURL) throws PackageManagerException;
/**
+ * Installs a package
+ *
+ * @param packageURL
+ * @param installOptions
+ * @throws PackageManagerException
+ */
+ void installPackage(URL packageURL, InstallOptions installOptions) throws PackageManagerException;
+
+ /**
* Removes a package using the name of the package
* @param packageName Name of the package to be uninstalled
*/
void removePackage(String packageName) throws PackageNotInstalledException, PackageManagerException;
/**
+ * Removes a package
+ *
+ * @param packageName
+ * @param uninstallOptions
+ * @throws PackageNotInstalledException
+ * @throws PackageManagerException
+ */
+ void removePackage(String packageName, UnInstallOptions uninstallOptions) throws PackageNotInstalledException, PackageManagerException;
+
+ /**
* Returns the names of all installed packages. Returns an empty set if there
* are no packages installed
*
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerFactory.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerFactory.java 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/PackageManagerFactory.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -21,12 +21,8 @@
*/
package org.jboss.ejb3.packagemanager;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
+import org.jboss.ejb3.packagemanager.impl.TransactionalPackageManager;
-import org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl;
-import org.jboss.ejb3.packagemanager.proxy.PackageManagerInvocationHandler;
-
/**
* PackageManagerFactory
*
@@ -38,9 +34,12 @@
public static PackageManager getDefaultPackageManager(PackageManagerEnvironment packageManagerEnv, String jbossHome)
{
- PackageManager pkgManager = new DefaultPackageManagerImpl(packageManagerEnv, jbossHome);
- InvocationHandler packageManagerInvocationHandler = new PackageManagerInvocationHandler(pkgManager);
- ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- return (PackageManager) Proxy.newProxyInstance(tccl, new Class[]{PackageManager.class}, packageManagerInvocationHandler);
+ return getTransactionalPackageManager(packageManagerEnv, jbossHome);
}
+
+ public static PackageManager getTransactionalPackageManager(PackageManagerEnvironment packageManagerEnv,
+ String jbossHome)
+ {
+ return TransactionalPackageManager.createNewInstance(packageManagerEnv, jbossHome);
+ }
}
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 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/DefaultPackageManagerImpl.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -28,7 +28,6 @@
import java.util.List;
import java.util.Set;
-import javax.transaction.Synchronization;
import javax.transaction.TransactionManager;
import org.jboss.ejb3.packagemanager.PackageContext;
@@ -36,8 +35,6 @@
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;
import org.jboss.ejb3.packagemanager.db.PackageDatabaseManager;
import org.jboss.ejb3.packagemanager.entity.PersistentFile;
@@ -52,9 +49,14 @@
import org.jboss.ejb3.packagemanager.metadata.PackagedDependency;
import org.jboss.ejb3.packagemanager.metadata.ScriptType;
import org.jboss.ejb3.packagemanager.metadata.UnProcessedDependenciesType;
+import org.jboss.ejb3.packagemanager.option.DefaultInstallOptions;
+import org.jboss.ejb3.packagemanager.option.DefaultUnInstallOptions;
+import org.jboss.ejb3.packagemanager.option.DefaultUpgradeOptions;
+import org.jboss.ejb3.packagemanager.option.InstallOptions;
+import org.jboss.ejb3.packagemanager.option.UnInstallOptions;
+import org.jboss.ejb3.packagemanager.option.UpgradeOptions;
import org.jboss.ejb3.packagemanager.script.ScriptProcessor;
import org.jboss.ejb3.packagemanager.script.impl.AntScriptProcessor;
-import org.jboss.ejb3.packagemanager.tx.TransactionManagerImpl;
import org.jboss.ejb3.packagemanager.util.IOUtil;
import org.jboss.logging.Logger;
@@ -64,7 +66,7 @@
* @author Jaikiran Pai
* @version $Revision: $
*/
-public class DefaultPackageManagerImpl implements PackageManager, Synchronization
+public class DefaultPackageManagerImpl implements PackageManager
{
/**
@@ -94,11 +96,6 @@
private PackageDatabaseManager pkgDatabaseManager;
/**
- * Transaction manager
- */
- private TransactionManager transactionManager;
-
- /**
* Creates the default package manager for a server
*
* @param environment The package manager environment
@@ -109,7 +106,6 @@
this.environment = environment;
this.installationServerHome = jbossHome;
this.pkgMgrCtx = new DefaultPackageManagerContext(this);
- this.transactionManager = TransactionManagerImpl.getInstance();
this.pkgDatabaseManager = new DefaultDatabaseManager(this.pkgMgrCtx);
}
@@ -146,9 +142,31 @@
* @see org.jboss.ejb3.packagemanager.PackageManager#installPackage(java.lang.String)
*/
@Override
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public void installPackage(String pkgPath) throws PackageManagerException
{
+ this.installPackage(pkgPath, new DefaultInstallOptions());
+ }
+
+ /**
+ * Installs the package from the {@code packageURL}
+ *
+ * @param packageURL The URL to the package that is to be installed
+ * @throws PackageManagerException If any exceptions occur during installation of the package
+ * @see org.jboss.ejb3.packagemanager.PackageManager#installPackage(URL)
+ *
+ */
+ @Override
+ public void installPackage(URL packageURL) throws PackageManagerException
+ {
+ this.installPackage(packageURL, new DefaultInstallOptions());
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.PackageManager#installPackage(java.lang.String, org.jboss.ejb3.packagemanager.option.InstallOptions)
+ */
+ @Override
+ public void installPackage(String pkgPath, InstallOptions installOptions) throws PackageManagerException
+ {
if (pkgPath == null)
{
throw new PackageManagerException("Package path is null");
@@ -162,20 +180,15 @@
{
throw new PackageManagerException("Cannot parse path " + pkgPath, mue);
}
- this.installPackage(packageURL);
+ this.installPackage(packageURL, installOptions);
+
}
-
+
/**
- * Installs the package from the {@code packageURL}
- *
- * @param packageURL The URL to the package that is to be installed
- * @throws PackageManagerException If any exceptions occur during installation of the package
- * @see org.jboss.ejb3.packagemanager.PackageManager#installPackage(URL)
- *
+ * @see org.jboss.ejb3.packagemanager.PackageManager#installPackage(java.net.URL, org.jboss.ejb3.packagemanager.option.InstallOptions)
*/
@Override
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
- public void installPackage(URL packageURL) throws PackageManagerException
+ public void installPackage(URL packageURL, InstallOptions installOptions) throws PackageManagerException
{
if (packageURL == null)
{
@@ -184,17 +197,16 @@
// create a package context
PackageContext pkgCtx = new DefaultPackageContext(this.pkgMgrCtx, packageURL);
- this.installPackage(pkgCtx);
-
+ this.installPackage(pkgCtx, installOptions);
+
}
-
+
/**
*
* @param pkgContext
* @throws PackageManagerException
*/
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
- public void installPackage(PackageContext pkgContext) throws PackageManagerException
+ protected void installPackage(PackageContext pkgContext, InstallOptions installOptions) throws PackageManagerException
{
if (pkgContext == null)
{
@@ -241,9 +253,18 @@
* @see org.jboss.ejb3.packagemanager.PackageManager#removePackage(java.lang.String)
*/
@Override
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public void removePackage(String packageName) throws PackageNotInstalledException, PackageManagerException
{
+ this.removePackage(packageName, new DefaultUnInstallOptions());
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.PackageManager#removePackage(java.lang.String, org.jboss.ejb3.packagemanager.option.UnInstallOptions)
+ */
+ @Override
+ public void removePackage(String packageName, UnInstallOptions uninstallOptions)
+ throws PackageNotInstalledException, PackageManagerException
+ {
// get the installed package
boolean isPackageInstalled = this.pkgDatabaseManager.isPackageInstalled(packageName);
if (!isPackageInstalled)
@@ -252,15 +273,7 @@
}
PersistentPackage installedPackage = this.pkgDatabaseManager.getInstalledPackage(packageName);
- this.removePackage(installedPackage, false);
-
- }
-
- protected void removePackage(PersistentPackage installedPackage, boolean forceRemove)
- throws PackageNotInstalledException, PackageManagerException
- {
- String packageName = installedPackage.getPackageName();
- if (!forceRemove)
+ if (!uninstallOptions.isForceUnInstall())
{
// check if other packages are dependent on this package
// If yes, then do NOT remove this package. Else remove this package
@@ -284,15 +297,30 @@
this.postUnInstallPackage(installedPackage);
this.pkgDatabaseManager.removePackage(installedPackage);
logger.info("Uninstalled " + packageName);
+
}
-
+
/**
* @see org.jboss.ejb3.packagemanager.PackageManager#updatePackage(java.lang.String)
*/
@Override
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public void updatePackage(String packageFilePath) throws PackageManagerException
{
+ this.updatePackage(packageFilePath, new DefaultUpgradeOptions());
+ }
+
+ @Override
+ public void updatePackage(URL packageURL) throws PackageManagerException
+ {
+ this.updatePackage(packageURL, new DefaultUpgradeOptions());
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.PackageManager#updatePackage(java.lang.String, org.jboss.ejb3.packagemanager.option.UpgradeOptions)
+ */
+ @Override
+ public void updatePackage(String packageFilePath, UpgradeOptions upgradeOptions) throws PackageManagerException
+ {
if (packageFilePath == null)
{
throw new PackageManagerException("Package path is null");
@@ -306,12 +334,15 @@
{
throw new PackageManagerException("Cannot parse path " + packageFilePath, mue);
}
- this.updatePackage(packageURL);
+ this.updatePackage(packageURL, upgradeOptions);
+
}
+ /**
+ * @see org.jboss.ejb3.packagemanager.PackageManager#updatePackage(java.net.URL, org.jboss.ejb3.packagemanager.option.UpgradeOptions)
+ */
@Override
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
- public void updatePackage(URL packageURL) throws PackageManagerException
+ public void updatePackage(URL packageURL, UpgradeOptions upgradeOptions) throws PackageManagerException
{
if (packageURL == null)
{
@@ -320,11 +351,10 @@
// create a package context
PackageContext pkgCtx = new DefaultPackageContext(this.pkgMgrCtx, packageURL);
- this.updatePackage(pkgCtx);
+ this.updatePackage(pkgCtx, upgradeOptions);
}
-
- @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
- public void updatePackage(PackageContext pkgContext) throws PackageManagerException
+
+ protected void updatePackage(PackageContext pkgContext, UpgradeOptions upgradeOptions) throws PackageManagerException
{
String packageName = pkgContext.getPackageName();
boolean isPackageInstalled = this.pkgDatabaseManager.isPackageInstalled(packageName);
@@ -337,9 +367,12 @@
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;
+ if (!upgradeOptions.isForceUpgrade())
+ {
+ logger.info("Skipping package upgrade, since package with name " + packageName + " and version "
+ + installedPackage.getPackageVersion() + " is already installed");
+ return;
+ }
}
else if (versionComparison > 0)
{
@@ -351,10 +384,12 @@
// 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);
+ UnInstallOptions uninstallOptions = new DefaultUnInstallOptions();
+ uninstallOptions.setForcedUnInstall(true);
+ removePackage(packageName, uninstallOptions);
}
// now install new version
- this.installPackage(pkgContext);
+ this.installPackage(pkgContext, new DefaultInstallOptions());
}
@@ -364,7 +399,7 @@
@Override
public TransactionManager getTransactionManager()
{
- return this.transactionManager;
+ return null;
}
/**
@@ -647,39 +682,13 @@
for (PackageContext dependencyPackage : dependencies)
{
logger.info("Installing dependency package : " + dependencyPackage + " for dependent package: " + pkgContext);
- this.updatePackage(dependencyPackage);
+ this.updatePackage(dependencyPackage, new DefaultUpgradeOptions());
}
}
- /**
- * @see javax.transaction.Synchronization#afterCompletion(int)
- */
- @Override
- public void afterCompletion(int status)
- {
- if (this.pkgDatabaseManager instanceof Synchronization)
- {
- Synchronization dbManager = (Synchronization) this.pkgDatabaseManager;
- dbManager.afterCompletion(status);
- }
+
- }
-
/**
- * @see javax.transaction.Synchronization#beforeCompletion()
- */
- @Override
- public void beforeCompletion()
- {
- if (this.pkgDatabaseManager instanceof Synchronization)
- {
- Synchronization dbManager = (Synchronization) this.pkgDatabaseManager;
- dbManager.beforeCompletion();
- }
-
- }
-
- /**
* @see org.jboss.ejb3.packagemanager.PackageManager#getAllInstalledPackages()
*/
@Override
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/TransactionalPackageManager.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/TransactionalPackageManager.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/impl/TransactionalPackageManager.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,227 @@
+package org.jboss.ejb3.packagemanager.impl;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import java.net.URL;
+
+import javax.transaction.Synchronization;
+import javax.transaction.TransactionManager;
+
+import org.jboss.ejb3.packagemanager.PackageManager;
+import org.jboss.ejb3.packagemanager.PackageManagerEnvironment;
+import org.jboss.ejb3.packagemanager.annotation.TransactionAttribute;
+import org.jboss.ejb3.packagemanager.annotation.TransactionAttributeType;
+import org.jboss.ejb3.packagemanager.exception.PackageManagerException;
+import org.jboss.ejb3.packagemanager.exception.PackageNotInstalledException;
+import org.jboss.ejb3.packagemanager.option.InstallOptions;
+import org.jboss.ejb3.packagemanager.option.UnInstallOptions;
+import org.jboss.ejb3.packagemanager.option.UpgradeOptions;
+import org.jboss.ejb3.packagemanager.proxy.TransactionalPackageManagerInvocationHandler;
+import org.jboss.ejb3.packagemanager.tx.TransactionManagerImpl;
+import org.jboss.logging.Logger;
+
+/*
+* 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.
+*/
+
+/**
+ * TransactionalPackageManager
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class TransactionalPackageManager extends DefaultPackageManagerImpl implements Synchronization
+{
+
+ /**
+ * Logger
+ */
+ private static Logger logger = Logger.getLogger(TransactionalPackageManager.class);
+
+ /**
+ * Transaction manager
+ */
+ private TransactionManager txManager;
+
+ /**
+ *
+ * @param environment
+ * @param jbossHome
+ * @return
+ */
+ public static PackageManager createNewInstance(PackageManagerEnvironment environment, String jbossHome)
+ {
+ PackageManager packageManager = new TransactionalPackageManager(environment, jbossHome);
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ InvocationHandler invocationHandler = new TransactionalPackageManagerInvocationHandler(packageManager);
+ return (PackageManager) Proxy.newProxyInstance(cl, new Class[]
+ {PackageManager.class}, invocationHandler);
+ }
+
+ /**
+ * @param environment
+ * @param jbossHome
+ */
+ protected TransactionalPackageManager(PackageManagerEnvironment environment, String jbossHome)
+ {
+ super(environment, jbossHome);
+ this.txManager = TransactionManagerImpl.getInstance();
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#getTransactionManager()
+ */
+ @Override
+ public TransactionManager getTransactionManager()
+ {
+ return this.txManager;
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#installPackage(java.lang.String)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void installPackage(String pkgPath) throws PackageManagerException
+ {
+ super.installPackage(pkgPath);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#installPackage(java.net.URL)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void installPackage(URL packageURL) throws PackageManagerException
+ {
+ super.installPackage(packageURL);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#installPackage(java.lang.String, org.jboss.ejb3.packagemanager.option.InstallOptions)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void installPackage(String pkgPath, InstallOptions installOptions) throws PackageManagerException
+ {
+ super.installPackage(pkgPath, installOptions);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#installPackage(java.net.URL, org.jboss.ejb3.packagemanager.option.InstallOptions)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void installPackage(URL packageURL, InstallOptions installOptions) throws PackageManagerException
+ {
+ super.installPackage(packageURL, installOptions);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#updatePackage(java.lang.String)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void updatePackage(String packageFilePath) throws PackageManagerException
+ {
+ super.updatePackage(packageFilePath);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#updatePackage(java.lang.String, org.jboss.ejb3.packagemanager.option.UpgradeOptions)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void updatePackage(String packageFilePath, UpgradeOptions upgradeOptions) throws PackageManagerException
+ {
+ super.updatePackage(packageFilePath, upgradeOptions);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#updatePackage(java.net.URL)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void updatePackage(URL packageURL) throws PackageManagerException
+ {
+ super.updatePackage(packageURL);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#updatePackage(java.net.URL, org.jboss.ejb3.packagemanager.option.UpgradeOptions)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void updatePackage(URL packageURL, UpgradeOptions upgradeOptions) throws PackageManagerException
+ {
+ super.updatePackage(packageURL, upgradeOptions);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#removePackage(java.lang.String)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void removePackage(String packageName) throws PackageNotInstalledException, PackageManagerException
+ {
+ super.removePackage(packageName);
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.impl.DefaultPackageManagerImpl#removePackage(java.lang.String, org.jboss.ejb3.packagemanager.option.UnInstallOptions)
+ */
+ @Override
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+ public void removePackage(String packageName, UnInstallOptions uninstallOptions)
+ throws PackageNotInstalledException, PackageManagerException
+ {
+ super.removePackage(packageName, uninstallOptions);
+ }
+
+ /**
+ * @see javax.transaction.Synchronization#afterCompletion(int)
+ */
+ @Override
+ public void afterCompletion(int status)
+ {
+ if (this.getDatabaseManager() instanceof Synchronization)
+ {
+ Synchronization dbManager = (Synchronization) this.getDatabaseManager();
+ dbManager.afterCompletion(status);
+ }
+
+ }
+
+ /**
+ * @see javax.transaction.Synchronization#beforeCompletion()
+ */
+ @Override
+ public void beforeCompletion()
+ {
+ if (this.getDatabaseManager() instanceof Synchronization)
+ {
+ Synchronization dbManager = (Synchronization) this.getDatabaseManager();
+ dbManager.beforeCompletion();
+ }
+
+ }
+
+}
Modified: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Setup.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Setup.java 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/main/Setup.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -63,6 +63,7 @@
{
CmdLineParser cmdLineParser = new CmdLineParser();
CmdLineParser.Option schemaFileCmdOption = cmdLineParser.addStringOption('f', "file");
+ CmdLineParser.Option packageManagerHomeCmdOption = cmdLineParser.addStringOption('p', "pmhome");
try
{
@@ -74,10 +75,8 @@
printUsage();
throw new PackageManagerException(e.getMessage());
}
- File currentDir = new File(".");
- // Get the package manager home from system property. If not set, then defaults to
- // current directory
- String packageManagerHome = System.getProperty(Constants.PACKAGE_MANAGER_HOME_SYSTEM_PROPERTY, currentDir.getAbsolutePath());
+ // get package manager home
+ String packageManagerHome = (String) cmdLineParser.getOptionValue(packageManagerHomeCmdOption);
if (packageManagerHome == null)
{
throw new PackageManagerException("Package manager home has not been set");
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultInstallOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultInstallOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultInstallOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,33 @@
+/*
+* 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.option;
+
+/**
+ * DefaultInstallOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class DefaultInstallOptions implements InstallOptions
+{
+
+}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUnInstallOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUnInstallOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUnInstallOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,58 @@
+/*
+* 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.option;
+
+/**
+ * DefaultUnInstallOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class DefaultUnInstallOptions implements UnInstallOptions
+{
+
+ private boolean forceUnInstall;
+
+ public DefaultUnInstallOptions()
+ {
+ this.forceUnInstall = false;
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.option.UnInstallOptions#isForceUnInstall()
+ */
+ @Override
+ public boolean isForceUnInstall()
+ {
+ return this.forceUnInstall;
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.option.UnInstallOptions#setForcedUnInstall(boolean)
+ */
+ @Override
+ public void setForcedUnInstall(boolean force)
+ {
+ this.forceUnInstall = force;
+ }
+
+}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUpgradeOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUpgradeOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/DefaultUpgradeOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,58 @@
+/*
+* 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.option;
+
+/**
+ * DefaultUpgradeOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class DefaultUpgradeOptions implements UpgradeOptions
+{
+
+ private boolean forceUpgrade;
+
+ public DefaultUpgradeOptions()
+ {
+ this.forceUpgrade = true;
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.option.UpgradeOptions#isForceUpgrade()
+ */
+ @Override
+ public boolean isForceUpgrade()
+ {
+ return this.forceUpgrade;
+ }
+
+ /**
+ * @see org.jboss.ejb3.packagemanager.option.UpgradeOptions#setForcedUpgrade(boolean)
+ */
+ @Override
+ public void setForcedUpgrade(boolean force)
+ {
+ this.forceUpgrade = force;
+ }
+
+}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/InstallOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/InstallOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/InstallOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,33 @@
+/*
+* 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.option;
+
+/**
+ * InstallOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public interface InstallOptions extends PackageManagerOptions
+{
+
+}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/PackageManagerOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/PackageManagerOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/PackageManagerOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,33 @@
+/*
+* 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.option;
+
+/**
+ * PackageManagerOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public interface PackageManagerOptions
+{
+
+}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UnInstallOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UnInstallOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UnInstallOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,35 @@
+/*
+* 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.option;
+
+/**
+ * UnInstallOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public interface UnInstallOptions extends PackageManagerOptions
+{
+ boolean isForceUnInstall();
+
+ void setForcedUnInstall(boolean force);
+}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UpgradeOptions.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UpgradeOptions.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/option/UpgradeOptions.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,35 @@
+/*
+* 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.option;
+
+/**
+ * UpgradeOptions
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public interface UpgradeOptions extends PackageManagerOptions
+{
+ boolean isForceUpgrade();
+
+ void setForcedUpgrade(boolean force);
+}
Deleted: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/PackageManagerInvocationHandler.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/PackageManagerInvocationHandler.java 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/PackageManagerInvocationHandler.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -1,231 +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.proxy;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-
-import org.jboss.ejb3.packagemanager.PackageManager;
-import org.jboss.ejb3.packagemanager.annotation.TransactionAttribute;
-import org.jboss.ejb3.packagemanager.annotation.TransactionAttributeType;
-import org.jboss.logging.Logger;
-
-/**
- * PackageManagerInvocationHandler
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class PackageManagerInvocationHandler implements InvocationHandler
-{
-
- /**
- * Package manager
- */
- private PackageManager packageManager;
-
- /**
- * Logger
- */
- private static Logger logger = Logger.getLogger(PackageManagerInvocationHandler.class);
-
- /**
- * Constructs an invocation handler for a package manager
- * @param packageManager
- */
- public PackageManagerInvocationHandler(PackageManager packageManager)
- {
- this.packageManager = packageManager;
- }
-
- /**
- * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
- */
- @Override
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
- {
- TransactionAttribute txAnnotation = this.getTxAttribute(method);
- // nothing special to do, just invoke
- if (txAnnotation == null)
- {
- return method.invoke(this.packageManager, args);
- }
- TransactionAttributeType txType = txAnnotation.value();
- switch (txType)
- {
- case REQUIRED :
- return this.invokeInCurrentTx(proxy, method, args);
- case REQUIRES_NEW :
- return this.invokeInNewTx(proxy, method, args);
- default :
- throw new RuntimeException("Unknow tx type " + txType);
- }
- }
-
- private Object invokeInCurrentTx(Object proxy, Method method, Object[] args) throws Throwable
- {
- TransactionManager txManager = this.packageManager.getTransactionManager();
- Transaction currentTx = txManager.getTransaction();
- boolean txInitiator = false;
- if (currentTx == null)
- {
- // start new tx
- txManager.begin();
- if (logger.isTraceEnabled())
- {
- logger.trace("Started tx " + txManager.getTransaction() + " for method " + method);
- }
- currentTx = txManager.getTransaction();
- registerForSynchronization(txManager.getTransaction());
- txInitiator = true;
- }
- try
- {
-
- Object result = method.invoke(this.packageManager, args);
- if (txInitiator)
- {
- if (txManager.getStatus() == Status.STATUS_MARKED_ROLLBACK)
- {
- txManager.rollback();
- if (logger.isTraceEnabled())
- {
- logger.trace("Rolled back tx " + txManager.getTransaction() + " for method " + method);
- }
- }
- else
- {
- txManager.commit();
- if (logger.isTraceEnabled())
- {
- logger.trace("Committed tx for method " + method);
- }
- }
-
- }
- return result;
- }
- catch (InvocationTargetException ite)
- {
- Throwable cause = ite.getCause();
- if (!txInitiator)
- {
- txManager.setRollbackOnly();
- }
- else
- {
- txManager.rollback();
- }
-
- throw cause;
- }
-
- }
-
- private Object invokeInNewTx(Object proxy, Method method, Object[] args) throws Throwable
- {
- TransactionManager txManager = this.packageManager.getTransactionManager();
- Transaction currentTx = txManager.getTransaction();
- try
- {
- if (currentTx != null)
- {
- // suspend current tx
- txManager.suspend();
- if (logger.isTraceEnabled())
- {
- logger.trace("Suspended tx " + txManager.getTransaction() + " for method " + method);
- }
- }
- // start new tx and invoke the method
- txManager.begin();
- if (logger.isTraceEnabled())
- {
- logger.trace("Started tx " + txManager.getTransaction() + " for method " + method);
- }
- Transaction newTx = txManager.getTransaction();
- registerForSynchronization(newTx);
- try
- {
- Object result = method.invoke(this.packageManager, args);
- if (newTx.getStatus() == Status.STATUS_MARKED_ROLLBACK)
- {
- // rollback
- newTx.rollback();
- if (logger.isTraceEnabled())
- {
- logger.trace("Rolled back tx " + txManager.getTransaction() + " for method " + method);
- }
- }
- else
- {
- // method successfully completed, so commit tx
- newTx.commit();
- if (logger.isTraceEnabled())
- {
- logger.trace("Committed tx " + txManager.getTransaction() + " for method " + method);
- }
- }
- return result;
- }
- catch (InvocationTargetException ite)
- {
- Throwable cause = ite.getCause();
- // rollback the tx in which this method was invoked
- newTx.rollback();
- throw cause;
- }
- }
- finally
- {
- if (currentTx != null)
- {
- txManager.resume(currentTx);
- }
- }
-
- }
-
- private TransactionAttribute getTxAttribute(Method method) throws SecurityException, NoSuchMethodException
- {
- Method methodOnPackageManagerImpl = this.packageManager.getClass().getMethod(method.getName(),
- method.getParameterTypes());
- return methodOnPackageManagerImpl.getAnnotation(TransactionAttribute.class);
- }
-
- private void registerForSynchronization(Transaction tx) throws IllegalStateException, RollbackException,
- SystemException
- {
- if (this.packageManager instanceof Synchronization)
- {
- tx.registerSynchronization((Synchronization) this.packageManager);
- }
- }
-}
Added: projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/TransactionalPackageManagerInvocationHandler.java
===================================================================
--- projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/TransactionalPackageManagerInvocationHandler.java (rev 0)
+++ projects/ejb3/trunk/package-manager/src/main/java/org/jboss/ejb3/packagemanager/proxy/TransactionalPackageManagerInvocationHandler.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -0,0 +1,231 @@
+/*
+* 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.proxy;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.transaction.RollbackException;
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+
+import org.jboss.ejb3.packagemanager.PackageManager;
+import org.jboss.ejb3.packagemanager.annotation.TransactionAttribute;
+import org.jboss.ejb3.packagemanager.annotation.TransactionAttributeType;
+import org.jboss.logging.Logger;
+
+/**
+ * TransactionalPackageManagerInvocationHandler
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class TransactionalPackageManagerInvocationHandler implements InvocationHandler
+{
+
+ /**
+ * Package manager
+ */
+ private PackageManager packageManager;
+
+ /**
+ * Logger
+ */
+ private static Logger logger = Logger.getLogger(TransactionalPackageManagerInvocationHandler.class);
+
+ /**
+ * Constructs an invocation handler for a package manager
+ * @param packageManager
+ */
+ public TransactionalPackageManagerInvocationHandler(PackageManager packageManager)
+ {
+ this.packageManager = packageManager;
+ }
+
+ /**
+ * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
+ */
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+ {
+ TransactionAttribute txAnnotation = this.getTxAttribute(method);
+ // nothing special to do, just invoke
+ if (txAnnotation == null)
+ {
+ return method.invoke(this.packageManager, args);
+ }
+ TransactionAttributeType txType = txAnnotation.value();
+ switch (txType)
+ {
+ case REQUIRED :
+ return this.invokeInCurrentTx(proxy, method, args);
+ case REQUIRES_NEW :
+ return this.invokeInNewTx(proxy, method, args);
+ default :
+ throw new RuntimeException("Unknow tx type " + txType);
+ }
+ }
+
+ private Object invokeInCurrentTx(Object proxy, Method method, Object[] args) throws Throwable
+ {
+ TransactionManager txManager = this.packageManager.getTransactionManager();
+ Transaction currentTx = txManager.getTransaction();
+ boolean txInitiator = false;
+ if (currentTx == null)
+ {
+ // start new tx
+ txManager.begin();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Started tx " + txManager.getTransaction() + " for method " + method);
+ }
+ currentTx = txManager.getTransaction();
+ registerForSynchronization(txManager.getTransaction());
+ txInitiator = true;
+ }
+ try
+ {
+
+ Object result = method.invoke(this.packageManager, args);
+ if (txInitiator)
+ {
+ if (txManager.getStatus() == Status.STATUS_MARKED_ROLLBACK)
+ {
+ txManager.rollback();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Rolled back tx " + txManager.getTransaction() + " for method " + method);
+ }
+ }
+ else
+ {
+ txManager.commit();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Committed tx for method " + method);
+ }
+ }
+
+ }
+ return result;
+ }
+ catch (InvocationTargetException ite)
+ {
+ Throwable cause = ite.getCause();
+ if (!txInitiator)
+ {
+ txManager.setRollbackOnly();
+ }
+ else
+ {
+ txManager.rollback();
+ }
+
+ throw cause;
+ }
+
+ }
+
+ private Object invokeInNewTx(Object proxy, Method method, Object[] args) throws Throwable
+ {
+ TransactionManager txManager = this.packageManager.getTransactionManager();
+ Transaction currentTx = txManager.getTransaction();
+ try
+ {
+ if (currentTx != null)
+ {
+ // suspend current tx
+ txManager.suspend();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Suspended tx " + txManager.getTransaction() + " for method " + method);
+ }
+ }
+ // start new tx and invoke the method
+ txManager.begin();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Started tx " + txManager.getTransaction() + " for method " + method);
+ }
+ Transaction newTx = txManager.getTransaction();
+ registerForSynchronization(newTx);
+ try
+ {
+ Object result = method.invoke(this.packageManager, args);
+ if (newTx.getStatus() == Status.STATUS_MARKED_ROLLBACK)
+ {
+ // rollback
+ newTx.rollback();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Rolled back tx " + txManager.getTransaction() + " for method " + method);
+ }
+ }
+ else
+ {
+ // method successfully completed, so commit tx
+ newTx.commit();
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Committed tx " + txManager.getTransaction() + " for method " + method);
+ }
+ }
+ return result;
+ }
+ catch (InvocationTargetException ite)
+ {
+ Throwable cause = ite.getCause();
+ // rollback the tx in which this method was invoked
+ newTx.rollback();
+ throw cause;
+ }
+ }
+ finally
+ {
+ if (currentTx != null)
+ {
+ txManager.resume(currentTx);
+ }
+ }
+
+ }
+
+ private TransactionAttribute getTxAttribute(Method method) throws SecurityException, NoSuchMethodException
+ {
+ Method methodOnPackageManagerImpl = this.packageManager.getClass().getMethod(method.getName(),
+ method.getParameterTypes());
+ return methodOnPackageManagerImpl.getAnnotation(TransactionAttribute.class);
+ }
+
+ private void registerForSynchronization(Transaction tx) throws IllegalStateException, RollbackException,
+ SystemException
+ {
+ if (this.packageManager instanceof Synchronization)
+ {
+ tx.registerSynchronization((Synchronization) this.packageManager);
+ }
+ }
+}
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 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/dependency/unit/DependencyInstallTestCase.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -34,6 +34,7 @@
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.JavaArchiveFactory;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
/**
@@ -131,6 +132,7 @@
* @throws Exception
*/
@Test
+ @Ignore ("Temporarily disabled because this test requires a package to be available online and uses HTTP request to download it")
public void testPackageWithUnProcessedDependencies() throws Exception
{
File dummyJar = this.createDummyJar();
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 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/install/unit/BasicInstallTestCase.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -30,6 +30,7 @@
import org.jboss.ejb3.packagemanager.test.common.PackageManagerTestCase;
import org.jboss.logging.Logger;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
/**
@@ -159,6 +160,7 @@
* @throws Exception
*/
@Test
+ @Ignore ("Temporarily disabled because this test requires a package to be available online and uses HTTP request to download it")
public void testHttpPackageInstall() throws Exception
{
// TODO: See javadocs of this test. This URL will change in near future
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 2010-02-02 07:58:01 UTC (rev 100244)
+++ projects/ejb3/trunk/package-manager/src/test/java/org/jboss/ejb3/packagemanager/test/upgrade/unit/UpgradeUnitTestCase.java 2010-02-02 10:16:07 UTC (rev 100245)
@@ -162,11 +162,8 @@
this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/lib/dummy.jar");
this.assertFileExistenceUnderJBossHome(jbossHome, "common/lib/dummy.jar");
- // 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());
+ // now upgrade to same version.
+ this.pkgMgr.updatePackage(simplePackageWithDependency.getAbsolutePath());
// ensure that the upgrade did not result in loss of installed files
this.assertFileExistenceUnderJBossHome(jbossHome, "server/default/lib/dummy.jar");
More information about the jboss-cvs-commits
mailing list