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/12/12 21:36:33 UTC
svn commit: r603730 -
/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
Author: gawor
Date: Wed Dec 12 12:36:32 2007
New Revision: 603730
URL: http://svn.apache.org/viewvc?rev=603730&view=rev
Log:
verify prerequisites when installing plugins (GERONIMO-3698)
Modified:
geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java?rev=603730&r1=603729&r2=603730&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java Wed Dec 12 12:36:32 2007
@@ -37,6 +37,7 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -639,6 +640,8 @@
// Step 1: validate everything
for (PluginType metadata : pluginsToInstall.getPlugin()) {
validatePlugin(metadata);
+ verifyPrerequisites(metadata);
+
PluginArtifactType instance = metadata.getPluginArtifact().get(0);
if (instance.getModuleId() != null) {
@@ -919,6 +922,11 @@
* @return array of missing depedencies
*/
public Dependency[] checkPrerequisites(PluginType plugin) {
+ List<Dependency> missingPrereqs = getMissingPrerequisites(plugin);
+ return missingPrereqs.toArray(new Dependency[missingPrereqs.size()]);
+ }
+
+ private List<Dependency> getMissingPrerequisites(PluginType plugin) {
if (plugin.getPluginArtifact().size() != 1) {
throw new IllegalArgumentException("A plugin configuration must include one plugin artifact, not " + plugin.getPluginArtifact().size());
}
@@ -937,9 +945,28 @@
throw new RuntimeException("Invalid setup, no default server instance registered");
}
}
- return missingPrereqs.toArray(new Dependency[missingPrereqs.size()]);
+ return missingPrereqs;
}
-
+
+ private void verifyPrerequisites(PluginType plugin) throws MissingDependencyException {
+ List<Dependency> missingPrereqs = getMissingPrerequisites(plugin);
+ if (!missingPrereqs.isEmpty()) {
+ PluginArtifactType metadata = plugin.getPluginArtifact().get(0);
+ Artifact moduleId = toArtifact(metadata.getModuleId());
+ StringBuffer buf = new StringBuffer();
+ buf.append(moduleId.toString()).append(" requires ");
+ Iterator<Dependency> iter = missingPrereqs.iterator();
+ while(iter.hasNext()) {
+ buf.append(iter.next().getArtifact().toString());
+ if (iter.hasNext()) {
+ buf.append(", ");
+ }
+ }
+ buf.append(" to be installed");
+ throw new MissingDependencyException(buf.toString(), (Artifact)null, (Artifact)null);
+ }
+ }
+
public Artifact installLibrary(File libFile, String groupId) throws IOException {
Matcher matcher = MAVEN_1_PATTERN_PART.matcher("");
matcher.reset(libFile.getName());