Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 91654 invoked from network); 12 Dec 2007 20:36:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Dec 2007 20:36:59 -0000 Received: (qmail 52005 invoked by uid 500); 12 Dec 2007 20:36:46 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 51966 invoked by uid 500); 12 Dec 2007 20:36:46 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 51943 invoked by uid 99); 12 Dec 2007 20:36:46 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Dec 2007 12:36:46 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Dec 2007 20:36:55 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B1FC01A983A; Wed, 12 Dec 2007 12:36:33 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r603730 - /geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java Date: Wed, 12 Dec 2007 20:36:33 -0000 To: scm@geronimo.apache.org From: gawor@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071212203633.B1FC01A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 missingPrereqs = getMissingPrerequisites(plugin); + return missingPrereqs.toArray(new Dependency[missingPrereqs.size()]); + } + + private List 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 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 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());