You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ja...@apache.org on 2007/06/26 23:38:02 UTC
svn commit: r550963 - in
/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main:
java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java
webapp/WEB-INF/view/dbwizard/list.jsp
Author: jaydm
Date: Tue Jun 26 14:38:01 2007
New Revision: 550963
URL: http://svn.apache.org/viewvc?view=rev&rev=550963
Log:
Geronimo-3258 - Added delete option to database pool screen in console
Modified:
geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java
geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/dbwizard/list.jsp
Modified: geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java?view=diff&rev=550963&r1=550962&r2=550963
==============================================================================
--- geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java (original)
+++ geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/databasemanager/wizard/DatabasePoolPortlet.java Tue Jun 26 14:38:01 2007
@@ -49,6 +49,7 @@
import java.util.SortedSet;
import javax.enterprise.deploy.model.DDBean;
import javax.enterprise.deploy.model.DDBeanRoot;
+import javax.enterprise.deploy.shared.ModuleType;
import javax.enterprise.deploy.spi.DeploymentConfiguration;
import javax.enterprise.deploy.spi.DeploymentManager;
import javax.enterprise.deploy.spi.Target;
@@ -139,6 +140,7 @@
private static final String DOWNLOAD_MODE = "download";
private static final String DOWNLOAD_STATUS_MODE = "downloadStatus";
private static final String EDIT_EXISTING_MODE = "editExisting";
+ private static final String DELETE_MODE = "delete";
private static final String SAVE_MODE = "save";
private static final String IMPORT_START_MODE = "startImport";
private static final String IMPORT_UPLOAD_MODE = "importUpload";
@@ -379,6 +381,10 @@
log.warn(" "+status.getPendingCount()+" not reviewed");
log.warn(" "+status.getFinishedCount()+" deployed");
actionRequest.getPortletSession().removeAttribute("ImportStatus");
+ } else if(mode.equals(DELETE_MODE)) {
+ String name = actionRequest.getParameter("adapterAbstractName");
+ loadConnectionFactory(actionRequest, name, data.getAbstractName(), data);
+ delete(actionRequest, actionResponse, data);
} else {
actionResponse.setRenderParameter(MODE_KEY, mode);
}
@@ -607,15 +613,15 @@
}
private void loadConnectionFactory(ActionRequest actionRequest, String adapterName, String factoryName, PoolData data) {
- AbstractName abstractAdapterName = new AbstractName(URI.create(adapterName));
- AbstractName abstractFactoryName = new AbstractName(URI.create(factoryName));
-
+ AbstractName abstractAdapterName = new AbstractName(URI.create(adapterName));
+ AbstractName abstractFactoryName = new AbstractName(URI.create(factoryName));
+
ResourceAdapterModule adapter = (ResourceAdapterModule) PortletManager.getManagedBean(actionRequest,abstractAdapterName);
JCAManagedConnectionFactory factory = (JCAManagedConnectionFactory) PortletManager.getManagedBean(actionRequest, abstractFactoryName);
data.adapterDisplayName = adapter.getDisplayName();
data.adapterDescription = adapter.getDescription();
try {
- data.name = (String)abstractFactoryName.getName().get("name");
+ data.name = (String)abstractFactoryName.getName().get("name");
if(data.isGeneric()) {
data.url = (String) factory.getConfigProperty("ConnectionURL");
data.driverClass = (String) factory.getConfigProperty("Driver");
@@ -715,11 +721,11 @@
for (int i = 0; i < modules.length; i++) {
ResourceAdapterModule module = modules[i];
AbstractName moduleName = PortletManager.getManagementHelper(renderRequest).getNameFor(module);
-
+
JCAManagedConnectionFactory[] databases = PortletManager.getOutboundFactoriesForRA(renderRequest, module, "javax.sql.DataSource");
for (int j = 0; j < databases.length; j++) {
JCAManagedConnectionFactory db = databases[j];
- AbstractName dbName = PortletManager.getManagementHelper(renderRequest).getNameFor(db);
+ AbstractName dbName = PortletManager.getManagementHelper(renderRequest).getNameFor(db);
list.add(new ConnectionPool(moduleName, dbName, (String)dbName.getName().get(NameFactory.J2EE_NAME), ((GeronimoManagedBean)db).getState()));
}
}
@@ -866,6 +872,46 @@
} else throw new SQLException("Driver "+data.getDriverClass()+" does not accept URL "+data.url);
}
+ private void delete(PortletRequest request, ActionResponse response, PoolData data) {
+ // check to make sure the abstract name does not begin with 'org.apache.geronimo.configs'
+ // if it does not - then delete it -- otherwise it is a system database
+ if(data.getAbstractName() != null) {
+ boolean isSystemDatabasePool = (data.getAbstractName().indexOf("org.apache.geronimo.configs") == 0);
+
+ if(! isSystemDatabasePool) {
+ DeploymentManager mgr = PortletManager.getDeploymentManager(request);
+ try {
+ // retrieve all running modules
+ TargetModuleID[] runningIds = mgr.getRunningModules(ModuleType.RAR, mgr.getTargets());
+
+ // index of module to keep
+ int index = -1;
+
+ // only keep module id that is associated with selected DB pool
+ for(int i = 0; i < runningIds.length; i++) {
+ if(data.getAbstractName().contains(runningIds[i].getModuleID())) {
+ index = i;
+ break;
+ }
+ }
+ TargetModuleID[] ids = { runningIds[index] };
+
+ // undeploy the db pool
+ ProgressObject po = mgr.undeploy(ids);
+ waitForProgress(po);
+
+ if(po.getDeploymentStatus().isCompleted()) {
+ log.info("Undeployment completed successfully!");
+ }
+ } catch(Exception e) {
+ log.error("Undeployment unsuccessful!");
+ } finally {
+ if(mgr != null) mgr.release();
+ }
+ }
+ }
+ }
+
private static String save(PortletRequest request, ActionResponse response, PoolData data, boolean planOnly) {
ImportStatus status = getImportStatus(request);
if(data.abstractName == null || data.abstractName.equals("")) { // we're creating a new pool
@@ -878,7 +924,7 @@
final DDBeanRoot ddBeanRoot = deployable.getDDBeanRoot();
Connector15DCBRoot root = (Connector15DCBRoot) config.getDConfigBeanRoot(ddBeanRoot);
ConnectorDCB connector = (ConnectorDCB) root.getDConfigBean(ddBeanRoot.getChildBean(root.getXpaths()[0])[0]);
-
+
EnvironmentData environment = new EnvironmentData();
connector.setEnvironment(environment);
org.apache.geronimo.deployment.service.jsr88.Artifact configId = new org.apache.geronimo.deployment.service.jsr88.Artifact();
@@ -897,7 +943,7 @@
int length = jars[jars.length - 1].length() ==0? jars.length -1: jars.length;
org.apache.geronimo.deployment.service.jsr88.Artifact[] dependencies = new org.apache.geronimo.deployment.service.jsr88.Artifact[length];
for (int i=0; i<dependencies.length; i++) {
- dependencies[i] = new org.apache.geronimo.deployment.service.jsr88.Artifact();
+ dependencies[i] = new org.apache.geronimo.deployment.service.jsr88.Artifact();
}
environment.setDependencies(dependencies);
for (int i=0; i<dependencies.length; i++) {
@@ -907,7 +953,7 @@
dependencies[i].setVersion(tmp.getVersion().toString());
dependencies[i].setType(tmp.getType());
}
-
+
ResourceAdapter adapter = connector.getResourceAdapter()[0];
ConnectionDefinition definition = new ConnectionDefinition();
adapter.setConnectionDefinition(new ConnectionDefinition[]{definition});
@@ -957,7 +1003,7 @@
if(data.idleTimeout != null && !data.idleTimeout.equals("")) {
pool.setIdleTimeoutMinutes(new Integer(data.idleTimeout));
}
-
+
if(planOnly) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
config.save(out);
@@ -986,7 +1032,7 @@
status.getCurrentPool().setFinished(true);
response.setRenderParameter(MODE_KEY, IMPORT_STATUS_MODE);
}
-
+
log.info("Deployment completed successfully!");
}
} else if(po.getDeploymentStatus().isFailed()) {
@@ -1140,7 +1186,6 @@
return url;
}
-
private static DatabaseDriver[] getAllDrivers(PortletRequest request) {
DatabaseDriver[] result = (DatabaseDriver[]) PortletManager.getGBeansImplementing(request, DatabaseDriver.class);
Arrays.sort(result, new Comparator() {
@@ -1154,7 +1199,7 @@
});
return result;
}
-
+
private static DatabaseDriver getDatabaseInfo(PortletRequest request, PoolData data) {
DatabaseDriver info = null;
DatabaseDriver[] all = getAllDrivers(request);
@@ -1433,7 +1478,7 @@
abstractNameMap.put("version", name.getArtifact().getVersion().toString());
return abstractNameMap;
}
-
+
public String getDeployError() {
return deployError;
}
Modified: geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/dbwizard/list.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/dbwizard/list.jsp?view=diff&rev=550963&r1=550962&r2=550963
==============================================================================
--- geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/dbwizard/list.jsp (original)
+++ geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/dbwizard/list.jsp Tue Jun 26 14:38:01 2007
@@ -85,12 +85,12 @@
<portlet:param name="name" value="${pool.name}" />
<portlet:param name="abstractName" value="${pool.factoryAbstractName}" />
</portlet:actionURL>">usage</a>
- <%--<a href="<portlet:actionURL portletMode="view">
- <portlet:param name="mode" value="delete" />
- <portlet:param name="name" value="${info.objectName}" />
- <portlet:param name="managerObjectName" value="${container.managerObjectName}" />
- <portlet:param name="containerObjectName" value="${container.containerObjectName}" />
- </portlet:actionURL>">delete</a>--%>
+ <a href="<portlet:actionURL portletMode="view">
+ <portlet:param name="mode" value="delete" />
+ <portlet:param name="name" value="${info.objectName}" />
+ <portlet:param name="adapterAbstractName" value="${pool.adapterAbstractName}" />
+ <portlet:param name="abstractName" value="${pool.factoryAbstractName}" />
+ </portlet:actionURL>">delete</a>
</td>
</tr>
</c:forEach>