You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2007/10/25 16:30:49 UTC
svn commit: r588240 - in
/geronimo/server/trunk/plugins/console/console-base-portlets/src/main:
java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java
webapp/WEB-INF/view/configmanager/normal.jsp
Author: gawor
Date: Thu Oct 25 07:30:48 2007
New Revision: 588240
URL: http://svn.apache.org/viewvc?rev=588240&view=rev
Log:
updated the config portlet to: 1) in war view, display war files edded in ear files, and 2) in ear view, display the contexts of the embedded war files. (GERONIMO-1945)
Modified:
geronimo/server/trunk/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java
geronimo/server/trunk/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/configmanager/normal.jsp
Modified: geronimo/server/trunk/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java?rev=588240&r1=588239&r2=588240&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java (original)
+++ geronimo/server/trunk/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java Thu Oct 25 07:30:48 2007
@@ -247,9 +247,9 @@
* Check if a configuration should be listed here. This method depends on the "config-type" portlet parameter
* which is set in portle.xml.
*/
- private boolean shouldListConfig(ConfigurationInfo info) {
+ private boolean shouldListConfig(ConfigurationModuleType info) {
String configType = getInitParameter(CONFIG_INIT_PARAM);
- return configType == null || info.getType().getName().equalsIgnoreCase(configType);
+ return configType == null || info.getName().equalsIgnoreCase(configType);
}
/*
@@ -275,62 +275,83 @@
List infos = configManager.listConfigurations();
for (Iterator j = infos.iterator(); j.hasNext();) {
ConfigurationInfo info = (ConfigurationInfo) j.next();
- if (shouldListConfig(info)) {
- ModuleDetails details = new ModuleDetails(info.getConfigID(), info.getType(), info.getState());
-
- if (info.getType().getValue()== ConfigurationModuleType.WAR.getValue()){
- WebModule webModule = (WebModule) PortletManager.getModule(renderRequest, info.getConfigID());
- if (webModule != null) {
- details.setContextPath(webModule.getContextPath());
+
+ String moduleType = getInitParameter(CONFIG_INIT_PARAM);
+ if (ConfigurationModuleType.WAR.getName().equalsIgnoreCase(moduleType)) {
+
+ if (info.getType().getValue() == ConfigurationModuleType.WAR.getValue()) {
+ ModuleDetails details = new ModuleDetails(info.getConfigID(), info.getType(), info.getState());
+ try {
+ AbstractName configObjName = Configuration.getConfigurationAbstractName(info.getConfigID());
+ boolean loaded = loadModule(configManager, configObjName);
+
+ WebModule webModule = (WebModule) PortletManager.getModule(renderRequest, info.getConfigID());
+ if (webModule != null) {
+ details.getContextPaths().add(webModule.getContextPath());
+ }
+
+ addDependencies(details, configObjName);
+ if (loaded) {
+ unloadModule(configManager, configObjName);
+ }
+ } catch(InvalidConfigException ice) {
+ // Should not occur
+ ice.printStackTrace();
+ }
+ moduleDetails.add(details);
+ } else if (info.getType().getValue() == ConfigurationModuleType.EAR.getValue()) {
+ try {
+ AbstractName configObjName = Configuration.getConfigurationAbstractName(info.getConfigID());
+ boolean loaded = loadModule(configManager, configObjName);
+
+ Configuration config = configManager.getConfiguration(info.getConfigID());
+ Iterator childs = config.getChildren().iterator();
+ while(childs.hasNext()) {
+ Configuration child = (Configuration)childs.next();
+ if (child.getModuleType().getValue() == ConfigurationModuleType.WAR.getValue()){
+ ModuleDetails childDetails = new ModuleDetails(info.getConfigID(), child.getModuleType(), info.getState());
+ childDetails.setComponentName(child.getId().toString());
+ WebModule webModule = getWebModule(config, child);
+ if (webModule != null) {
+ childDetails.getContextPaths().add(webModule.getContextPath());
+ }
+ addDependencies(childDetails, configObjName);
+ moduleDetails.add(childDetails);
+ }
+ }
+
+ if (loaded) {
+ unloadModule(configManager, configObjName);
+ }
+ } catch(InvalidConfigException ice) {
+ // Should not occur
+ ice.printStackTrace();
}
}
+
+ } else if (shouldListConfig(info.getType())) {
+ ModuleDetails details = new ModuleDetails(info.getConfigID(), info.getType(), info.getState());
try {
AbstractName configObjName = Configuration.getConfigurationAbstractName(info.getConfigID());
- boolean flag = false;
- // Check if the configuration is loaded. If not, load it to get information.
- if(!kernel.isLoaded(configObjName)) {
- try {
- configManager.loadConfiguration(configObjName.getArtifact());
- flag = true;
- } catch (NoSuchConfigException e) {
- // Should not occur
- e.printStackTrace();
- } catch (LifecycleException e) {
- // config could not load because one or more of its dependencies
- // has been removed. cannot load the configuration in this case,
- // so don't rely on that technique to discover its parents or children
- if (e.getCause() instanceof MissingDependencyException) {
- // do nothing
- } else {
- e.printStackTrace();
- }
- }
- }
-
- java.util.Set parents = depMgr.getParents(configObjName);
- for(Iterator itr = parents.iterator(); itr.hasNext(); ) {
- AbstractName parent = (AbstractName)itr.next();
- details.getParents().add(parent.getArtifact());
- }
- java.util.Set children = depMgr.getChildren(configObjName);
- for(Iterator itr = children.iterator(); itr.hasNext(); ) {
- AbstractName child = (AbstractName)itr.next();
- //if(configManager.isConfiguration(child.getArtifact()))
- if(child.getNameProperty("configurationName") != null) {
- details.getChildren().add(child.getArtifact());
+ boolean loaded = loadModule(configManager, configObjName);
+
+ if (info.getType().getValue() == ConfigurationModuleType.EAR.getValue()) {
+ Configuration config = configManager.getConfiguration(info.getConfigID());
+ Iterator childs = config.getChildren().iterator();
+ while(childs.hasNext()) {
+ Configuration child = (Configuration)childs.next();
+ if (child.getModuleType().getValue()== ConfigurationModuleType.WAR.getValue()){
+ WebModule webModule = getWebModule(config, child);
+ if (webModule != null) {
+ details.getContextPaths().add(webModule.getContextPath());
+ }
+ }
}
}
- Collections.sort(details.getParents());
- Collections.sort(details.getChildren());
-
- // Unload the configuration if it has been loaded earlier for the sake of getting information
- if(flag) {
- try {
- configManager.unloadConfiguration(configObjName.getArtifact());
- } catch (NoSuchConfigException e) {
- // Should not occur
- e.printStackTrace();
- }
+
+ addDependencies(details, configObjName);
+ if (loaded) {
+ unloadModule(configManager, configObjName);
}
} catch(InvalidConfigException ice) {
// Should not occur
@@ -341,7 +362,7 @@
}
Collections.sort(moduleDetails);
renderRequest.setAttribute("configurations", moduleDetails);
- renderRequest.setAttribute("showWebInfo", Boolean.valueOf(getInitParameter(CONFIG_INIT_PARAM).equalsIgnoreCase(ConfigurationModuleType.WAR.getName())));
+ renderRequest.setAttribute("showWebInfo", Boolean.valueOf(showWebInfo()));
if (moduleDetails.size() == 0) {
renderRequest.setAttribute("messageInstalled", "No modules found of this type<br /><br />");
} else {
@@ -356,6 +377,78 @@
}
}
+ private WebModule getWebModule(Configuration config, Configuration child) {
+ try {
+ Map query1 = new HashMap();
+ String name = config.getId().getArtifactId();
+ query1.put("J2EEApplication", config.getId().toString());
+ query1.put("j2eeType", "WebModule");
+ query1.put("name", child.getId().getArtifactId().substring(name.length()+1));
+ AbstractName childName = new AbstractName(config.getAbstractName().getArtifact(), query1);
+ return (WebModule)kernel.getGBean(childName);
+ } catch(Exception h){
+ // No gbean found, will not happen
+ // Except if module not started, ignored
+ }
+ return null;
+ }
+
+ private boolean loadModule(ConfigurationManager configManager, AbstractName configObjName) {
+ if(!kernel.isLoaded(configObjName)) {
+ try {
+ configManager.loadConfiguration(configObjName.getArtifact());
+ return true;
+ } catch (NoSuchConfigException e) {
+ // Should not occur
+ e.printStackTrace();
+ } catch (LifecycleException e) {
+ // config could not load because one or more of its dependencies
+ // has been removed. cannot load the configuration in this case,
+ // so don't rely on that technique to discover its parents or children
+ if (e.getCause() instanceof MissingDependencyException) {
+ // do nothing
+ } else {
+ e.printStackTrace();
+ }
+ }
+ }
+ return false;
+ }
+
+ private void addDependencies(ModuleDetails details, AbstractName configObjName) {
+ DependencyManager depMgr = kernel.getDependencyManager();
+ java.util.Set parents = depMgr.getParents(configObjName);
+ for(Iterator itr = parents.iterator(); itr.hasNext(); ) {
+ AbstractName parent = (AbstractName)itr.next();
+ details.getParents().add(parent.getArtifact());
+ }
+ java.util.Set children = depMgr.getChildren(configObjName);
+ for(Iterator itr = children.iterator(); itr.hasNext(); ) {
+ AbstractName child = (AbstractName)itr.next();
+ //if(configManager.isConfiguration(child.getArtifact()))
+ if(child.getNameProperty("configurationName") != null) {
+ details.getChildren().add(child.getArtifact());
+ }
+ }
+ Collections.sort(details.getParents());
+ Collections.sort(details.getChildren());
+ }
+
+ private void unloadModule(ConfigurationManager configManager, AbstractName configObjName) {
+ try {
+ configManager.unloadConfiguration(configObjName.getArtifact());
+ } catch (NoSuchConfigException e) {
+ // Should not occur
+ e.printStackTrace();
+ }
+ }
+
+ private boolean showWebInfo() {
+ String moduleType = getInitParameter(CONFIG_INIT_PARAM);
+ return ConfigurationModuleType.WAR.getName().equalsIgnoreCase(moduleType) ||
+ ConfigurationModuleType.EAR.getName().equalsIgnoreCase(moduleType);
+ }
+
protected void doHelp(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException {
helpView.include(renderRequest, renderResponse);
}
@@ -383,10 +476,11 @@
private final Artifact configId;
private final ConfigurationModuleType type;
private final State state;
- private String contextPath; // only relevant for webapps
private List parents = new ArrayList();
private List children = new ArrayList();
private boolean expertConfig = false; // used to mark this config as one that should only be managed (stop/uninstall) by expert users.
+ private List contextPaths = new ArrayList();
+ private String componentName;
public ModuleDetails(Artifact configId, ConfigurationModuleType type, State state) {
this.configId = configId;
@@ -419,14 +513,6 @@
return state;
}
- public String getContextPath() {
- return contextPath;
- }
-
- public void setContextPath(String contextPath) {
- this.contextPath = contextPath;
- }
-
public ConfigurationModuleType getType() {
return type;
}
@@ -441,6 +527,18 @@
public List getChildren() {
return children;
+ }
+
+ public List getContextPaths() {
+ return contextPaths;
+ }
+
+ public String getComponentName(){
+ return componentName;
+ }
+
+ public void setComponentName(String name){
+ componentName = name;
}
}
}
Modified: geronimo/server/trunk/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/configmanager/normal.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/configmanager/normal.jsp?rev=588240&r1=588239&r2=588240&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/configmanager/normal.jsp (original)
+++ geronimo/server/trunk/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/configmanager/normal.jsp Thu Oct 25 07:30:48 2007
@@ -223,30 +223,43 @@
</c:choose>
<tr>
<!-- module id -->
- <td class="${backgroundClass}"> ${moduleDetails.configId}
-
+ <c:choose>
+ <c:when test="${moduleDetails.componentName != null}">
+ <td class="${backgroundClass}"> ${moduleDetails.componentName} </td>
+ </c:when>
+ <c:otherwise>
+ <td class="${backgroundClass}"> ${moduleDetails.configId} </td>
+ </c:otherwise>
+ </c:choose>
+
<!-- context path -->
<c:if test="${showWebInfo}">
- <td class="${backgroundClass}"> <c:if test="${moduleDetails.state.running}"><a href="${moduleDetails.contextPath}">${moduleDetails.contextPath}</a></c:if></td>
+ <td class="${backgroundClass}">
+ <c:if test="${moduleDetails.state.running}">
+ <c:forEach var="contextPath" items="${moduleDetails.contextPaths}">
+ <a href="${contextPath}">${contextPath}</a> <br/>
+ </c:forEach>
+ </c:if>
+ </td>
</c:if>
<!-- state -->
- <td width="100" class="${backgroundClass}"> ${moduleDetails.state}</td>
+ <td width="100" class="${backgroundClass}"> ${moduleDetails.state} </td>
<!-- Start/Stop actions -->
<td width="75" class="${backgroundClass}">
<c:if test="${moduleDetails.state.running || moduleDetails.state.failed}">
<span <c:if test="${moduleDetails.expertConfig}"> name=expert </c:if>>
- <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='stop'/></portlet:actionURL>" onClick="return promptIfUnsafeToStop('${moduleDetails.configId}','${moduleDetails.expertConfig}','${moduleDetails.type.name}');">Stop</a>
+ <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='stop'/></portlet:actionURL>" onClick="return promptIfUnsafeToStop('${moduleDetails.configId}','${moduleDetails.expertConfig}','${moduleDetails.type.name}');">Stop</a>
</span>
</c:if>
<c:if test="${moduleDetails.expertConfig && (moduleDetails.state.running || moduleDetails.state.failed)}">
<span name=nonexpert>
- <a>Stop</a>
+ <a>Stop</a>
</span>
</c:if>
<c:if test="${moduleDetails.state.stopped && (moduleDetails.type.name ne 'CAR')}">
- <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='start'/></portlet:actionURL>">Start</a>
+ <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='start'/></portlet:actionURL>">Start</a>
</c:if>
</td>
@@ -254,12 +267,12 @@
<td width="75" class="${backgroundClass}">
<c:if test="${moduleDetails.state.running}">
<span <c:if test="${moduleDetails.expertConfig}"> name=expert </c:if>>
- <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='restart'/></portlet:actionURL>" onClick="return promptIfUnsafeToRestart('${moduleDetails.configId}','${moduleDetails.expertConfig}','${moduleDetails.type.name}');">Restart</a>
+ <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='restart'/></portlet:actionURL>" onClick="return promptIfUnsafeToRestart('${moduleDetails.configId}','${moduleDetails.expertConfig}','${moduleDetails.type.name}');">Restart</a>
</span>
</c:if>
<c:if test="${moduleDetails.expertConfig && moduleDetails.state.running}">
<span name=nonexpert>
- <a>Restart</a>
+ <a>Restart</a>
</span>
</c:if>
</td>
@@ -267,11 +280,11 @@
<!-- Uninstall action -->
<td width="75" class="${backgroundClass}">
<span <c:if test="${moduleDetails.expertConfig}"> name=expert </c:if>>
- <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='uninstall'/></portlet:actionURL>" onClick="return uninstallPrompt('${moduleDetails.configId}','${moduleDetails.expertConfig}','${moduleDetails.type.name}');">Uninstall</a>
+ <a href="<portlet:actionURL><portlet:param name='configId' value='${moduleDetails.configId}'/><portlet:param name='action' value='uninstall'/></portlet:actionURL>" onClick="return uninstallPrompt('${moduleDetails.configId}','${moduleDetails.expertConfig}','${moduleDetails.type.name}');">Uninstall</a>
</span>
<c:if test="${moduleDetails.expertConfig}">
<span name=nonexpert>
- <a>Uninstall</a>
+ <a>Uninstall</a>
</span>
</c:if>
</td>