Cool - I am running a full build to check them out. thanks
Lin On Fri, Sep 26, 2008 at 1:26 PM, David Jencks <[EMAIL PROTECTED]> wrote: > > On Sep 26, 2008, at 9:11 AM, David Jencks wrote: > >> >> On Sep 26, 2008, at 7:55 AM, Lin Sun wrote: >> >>> David, thanks for adding this to keep track of what plugins have been >>> installed on the server. >>> >>> I think there is a prob with the change. In InstallModulesMojo.java, >>> as it set installedPluginsList as null. I think this would cause all >>> the plugins that came with the server assembly during build time >>> (using c-m-p) not recorded, as saveHistory and loadHistory only handle >>> cases when installedPluginList is not null. >> >> I agree. >>> >>> >>> Also, in PluginInstallerGBean.java, I don't see anywhere you specify >>> where we set the default location of the installedPluginsList file to >>> "var/config/installedPlugins.properties"... I only see that in the >>> two test files. >> >> I forgot to configure this in the plan. >> > > I think I got these fixed in rev 699420. In my farm example the nodes seem > to be tracking what has been installed properly, and the c-m-p assembly > seems to be recording what was installed. > > thanks again > david jencks > >> thanks for noticing these problems! >> david jencks >> >>> >>> >>> Lin >>> >>> On Fri, Sep 26, 2008 at 3:26 AM, <[EMAIL PROTECTED]> wrote: >>>> >>>> Author: djencks >>>> Date: Fri Sep 26 00:26:53 2008 >>>> New Revision: 699202 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=699202&view=rev >>>> Log: >>>> GERONIMO-4318 try to indicate when plugins have been installed in the >>>> current server, irrespective of whether they are in the repos >>>> >>>> Modified: >>>> >>>> >>>> geronimo/server/trunk/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java >>>> >>>> >>>> geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/RemoteDeploymentManager.java >>>> >>>> >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstaller.java >>>> >>>> >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java >>>> >>>> >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/CopyFileTest.java >>>> >>>> >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java >>>> >>>> >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/AbstractListHandler.java >>>> >>>> >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/ViewPluginDownloadHandler.java >>>> >>>> Modified: >>>> geronimo/server/trunk/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -162,7 +162,7 @@ >>>> Kernel kernel = new BasicKernel("Assembly"); >>>> PluginRepositoryList pluginRepoList = new >>>> PluginRepositoryDownloader(Collections.singletonMap(localRepo, (String[]) >>>> null), true); >>>> try { >>>> - PluginInstallerGBean installer = new >>>> PluginInstallerGBean(targetRepositoryPath, targetServerPath, servers, >>>> pluginRepoList, kernel, getClass().getClassLoader()); >>>> + PluginInstallerGBean installer = new >>>> PluginInstallerGBean(targetRepositoryPath, targetServerPath, null, servers, >>>> pluginRepoList, kernel, getClass().getClassLoader()); >>>> installer.install(pluginList, sourceRepo, true, null, null, >>>> downloadPoller); >>>> if (overrides != null) { >>>> for (Override override: this.overrides) { >>>> >>>> Modified: >>>> geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/RemoteDeploymentManager.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/RemoteDeploymentManager.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/RemoteDeploymentManager.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/RemoteDeploymentManager.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -189,10 +189,10 @@ >>>> } >>>> } >>>> >>>> - public void validatePlugin(PluginType plugin) throws >>>> MissingDependencyException { >>>> + public boolean validatePlugin(PluginType plugin) throws >>>> MissingDependencyException { >>>> PluginInstaller installer = getPluginInstaller(); >>>> try { >>>> - installer.validatePlugin(plugin); >>>> + return installer.validatePlugin(plugin); >>>> } finally { >>>> kernel.getProxyManager().destroyProxy(installer); >>>> } >>>> >>>> Modified: >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstaller.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstaller.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstaller.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstaller.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -21,12 +21,14 @@ >>>> import java.net.URL; >>>> import java.util.Map; >>>> import javax.security.auth.login.FailedLoginException; >>>> -import org.apache.geronimo.kernel.repository.Artifact; >>>> -import org.apache.geronimo.kernel.repository.Dependency; >>>> -import >>>> org.apache.geronimo.kernel.repository.MissingDependencyException; >>>> + >>>> +import >>>> org.apache.geronimo.kernel.config.ConfigurationAlreadyExistsException; >>>> import org.apache.geronimo.kernel.config.ConfigurationManager; >>>> import org.apache.geronimo.kernel.config.NoSuchStoreException; >>>> import org.apache.geronimo.kernel.InvalidGBeanException; >>>> +import org.apache.geronimo.kernel.repository.Artifact; >>>> +import org.apache.geronimo.kernel.repository.Dependency; >>>> +import >>>> org.apache.geronimo.kernel.repository.MissingDependencyException; >>>> import org.apache.geronimo.system.plugin.model.PluginListType; >>>> import org.apache.geronimo.system.plugin.model.PluginType; >>>> import org.apache.geronimo.system.plugin.model.AttributesType; >>>> @@ -52,7 +54,7 @@ >>>> * @return A Map with key type String (plugin name) and value type >>>> Artifact >>>> * (config ID of the plugin). >>>> */ >>>> - public Map getInstalledPlugins(); >>>> + public Map<String, Artifact> getInstalledPlugins(); >>>> >>>> /** >>>> * Gets a CofigurationMetadata for a configuration installed in the >>>> local >>>> @@ -185,7 +187,7 @@ >>>> * @throws >>>> org.apache.geronimo.kernel.repository.MissingDependencyException >>>> * if a dependency is not satisfied >>>> */ >>>> - public void validatePlugin(PluginType plugin) throws >>>> MissingDependencyException; >>>> + public boolean validatePlugin(PluginType plugin) throws >>>> MissingDependencyException; >>>> >>>> /** >>>> * Ensures that a plugin's prerequisites are installed >>>> >>>> Modified: >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -21,6 +21,8 @@ >>>> import java.io.FileOutputStream; >>>> import java.io.IOException; >>>> import java.io.InputStream; >>>> +import java.io.FileInputStream; >>>> +import java.io.OutputStream; >>>> import java.net.URI; >>>> import java.net.URL; >>>> import java.util.ArrayList; >>>> @@ -54,6 +56,7 @@ >>>> import org.apache.geronimo.gbean.ReferenceCollectionEvent; >>>> import org.apache.geronimo.gbean.ReferenceCollectionListener; >>>> import org.apache.geronimo.gbean.annotation.GBean; >>>> +import org.apache.geronimo.gbean.annotation.ParamAttribute; >>>> import org.apache.geronimo.gbean.annotation.ParamReference; >>>> import org.apache.geronimo.gbean.annotation.ParamSpecial; >>>> import org.apache.geronimo.gbean.annotation.SpecialAttributeType; >>>> @@ -68,6 +71,7 @@ >>>> import org.apache.geronimo.kernel.config.NoSuchConfigException; >>>> import org.apache.geronimo.kernel.config.NoSuchStoreException; >>>> import org.apache.geronimo.kernel.config.PersistentConfigurationList; >>>> +import >>>> org.apache.geronimo.kernel.config.ConfigurationAlreadyExistsException; >>>> import org.apache.geronimo.kernel.repository.Artifact; >>>> import org.apache.geronimo.kernel.repository.ArtifactManager; >>>> import org.apache.geronimo.kernel.repository.DefaultArtifactManager; >>>> @@ -116,6 +120,9 @@ >>>> private static final Logger log = >>>> LoggerFactory.getLogger(PluginInstallerGBean.class); >>>> >>>> private static int counter; >>>> + private final String installedPluginsList; >>>> + //all plugins that have ever been installed on this server. >>>> + private final Set<Artifact> installedArtifacts = new >>>> HashSet<Artifact>(); >>>> private final ConfigurationManager configManager; >>>> private final GeronimoSourceRepository localSourceRepository; >>>> private final WritableListableRepository writeableRepo; >>>> @@ -146,7 +153,8 @@ >>>> * @param classLoader classLoader @throws IOException >>>> exception if server instance cannot be loaded >>>> * @throws java.io.IOException from bad ServerInstance >>>> */ >>>> - public PluginInstallerGBean(@ParamReference(name = "ConfigManager", >>>> namingType = "ConfigurationManager")ConfigurationManager configManager, >>>> + public PluginInstallerGBean(@ParamAttribute(name = >>>> "installedPluginsList")String installedPluginsList, >>>> + @ParamReference(name = "ConfigManager", >>>> namingType = "ConfigurationManager")ConfigurationManager configManager, >>>> @ParamReference(name = "Repository", >>>> namingType = "Repository")WritableListableRepository repository, >>>> @ParamReference(name = "ConfigStore", >>>> namingType = "ConfigurationStore")ConfigurationStore configStore, >>>> @ParamReference(name = "ServerInstances", >>>> namingType = "ServerInstanceData")Collection<ServerInstanceData> >>>> serverInstanceDatas, >>>> @@ -171,6 +179,8 @@ >>>> localSourceRepository = new >>>> GeronimoSourceRepository(configManager.getRepositories(), >>>> configManager.getArtifactResolver()); >>>> setUpServerInstances(serverInstanceDatas, serverInfo, >>>> artifactManager, servers, writeableRepo, true); >>>> this.pluginRepositoryList = pluginRepositoryList; >>>> + this.installedPluginsList = installedPluginsList; >>>> + loadHistory(); >>>> } >>>> >>>> /** >>>> @@ -178,6 +188,7 @@ >>>> * >>>> * @param targetRepositoryPath location of repo to install into (not in >>>> current server) >>>> * @param targetServerPath location of server to install into (not >>>> current server >>>> + * @param installedPluginsList location of file to track >>>> installations >>>> * @param serverInstanceDatas set of server layouts >>>> * @param pluginRepositoryList >>>> * @param kernel kernel for current server >>>> @@ -185,6 +196,7 @@ >>>> */ >>>> public PluginInstallerGBean(String targetRepositoryPath, >>>> String targetServerPath, >>>> + String installedPluginsList, >>>> Collection<? extends ServerInstanceData> >>>> serverInstanceDatas, >>>> PluginRepositoryList pluginRepositoryList, >>>> final Kernel kernel, >>>> @@ -206,6 +218,8 @@ >>>> this.configManager = buildConfigurationManager(artifactManager, >>>> writeableRepo, kernel, configStore, classLoader, servers); >>>> localSourceRepository = new >>>> GeronimoSourceRepository(configManager.getRepositories(), >>>> configManager.getArtifactResolver()); >>>> this.pluginRepositoryList = pluginRepositoryList; >>>> + this.installedPluginsList = installedPluginsList; >>>> + loadHistory(); >>>> } >>>> >>>> private static void setUpServerInstances(Collection<? extends >>>> ServerInstanceData> serverInstanceDatas, >>>> @@ -290,7 +304,7 @@ >>>> PluginInstallerGBean(ConfigurationManager configManager, >>>> WritableListableRepository repository, >>>> ConfigurationStore configStore, >>>> - ServerInfo serverInfo, >>>> + String installedPluginsList, ServerInfo >>>> serverInfo, >>>> ThreadPool threadPool, >>>> Collection<ServerInstance> servers, >>>> PluginRepositoryList pluginRepositoryList) { >>>> this.configManager = configManager; >>>> @@ -321,6 +335,53 @@ >>>> }); >>>> } >>>> this.pluginRepositoryList = pluginRepositoryList; >>>> + this.installedPluginsList = installedPluginsList; >>>> + loadHistory(); >>>> + } >>>> + >>>> + private void loadHistory() { >>>> + if (installedPluginsList != null) { >>>> + File historyFile = >>>> serverInfo.resolveServer(installedPluginsList); >>>> + Properties properties = new Properties(); >>>> + try { >>>> + InputStream in = new FileInputStream(historyFile); >>>> + try { >>>> + properties.load(in); >>>> + for (Object key : properties.keySet()) { >>>> + Artifact artifact = Artifact.create((String) >>>> key); >>>> + installedArtifacts.add(artifact); >>>> + } >>>> + } finally { >>>> + in.close(); >>>> + } >>>> + } catch (IOException e) { >>>> + //give up >>>> + } >>>> + } >>>> + } >>>> + >>>> + private void saveHistory() { >>>> + if (installedPluginsList != null) { >>>> + Properties properties = new Properties(); >>>> + for (Artifact artifact : installedArtifacts) { >>>> + properties.put(artifact.toString(), null); >>>> + } >>>> + try { >>>> + File historyFile = >>>> serverInfo.resolveServer(installedPluginsList); >>>> + File parentFile = historyFile.getParentFile(); >>>> + if (!parentFile.exists()) { >>>> + FileUtils.forceMkdir(parentFile); >>>> + } >>>> + OutputStream out = new FileOutputStream(historyFile); >>>> + try { >>>> + properties.save(out, "All the plugins that have >>>> ever been installed on this server"); >>>> + } finally { >>>> + out.close(); >>>> + } >>>> + } catch (IOException e) { >>>> + //give up >>>> + } >>>> + } >>>> } >>>> >>>> /** >>>> @@ -346,6 +407,7 @@ >>>> PluginInstallerGBean installer = new PluginInstallerGBean( >>>> targetRepositoryPath, >>>> targetServerPathName, >>>> + installedPluginsList, >>>> serverInstanceDatas, >>>> pluginRepositoryList, kernel, >>>> classLoader); >>>> @@ -381,7 +443,7 @@ >>>> * @return A Map with key type String (plugin name) and value type >>>> Artifact >>>> * (config ID of the plugin). >>>> */ >>>> - public Map getInstalledPlugins() { >>>> + public Map<String, Artifact> getInstalledPlugins() { >>>> SortedSet<Artifact> artifacts = writeableRepo.list(); >>>> >>>> Map<String, Artifact> plugins = new HashMap<String, Artifact>(); >>>> @@ -416,7 +478,7 @@ >>>> jar.close(); >>>> } >>>> } catch (IOException e) { >>>> - log.error("Unable to read JAR file " + >>>> dir.getAbsolutePath(), e); >>>> + log.error("Unable to read JAR file {}", >>>> dir.getAbsolutePath(), e); >>>> } >>>> } >>>> } >>>> @@ -622,7 +684,9 @@ >>>> for (PluginType metadata : pluginsToInstall.getPlugin()) { >>>> try { >>>> if (validatePlugins) { >>>> - validatePlugin(metadata); >>>> + if (!validatePlugin(metadata)) { >>>> + throw new >>>> MissingDependencyException("Already installed", >>>> toArtifact(metadata.getPluginArtifact().get(0).getModuleId()), >>>> (Stack<Artifact>)null); >>>> + } >>>> verifyPrerequisites(metadata); >>>> } >>>> >>>> @@ -717,6 +781,7 @@ >>>> } finally { >>>> poller.setFinished(); >>>> } >>>> + saveHistory(); >>>> } >>>> >>>> private List<SourceRepository> getRepos(PluginListType >>>> pluginsToInstall, SourceRepository defaultRepository, boolean >>>> restrictToDefaultRepository, PluginArtifactType instance) { >>>> @@ -865,7 +930,11 @@ >>>> } >>>> >>>> // 2. Validate that we can install this >>>> - validatePlugin(data); >>>> + if (!validatePlugin(data)) { >>>> + //already installed >>>> + return; >>>> + } >>>> + >>>> verifyPrerequisites(data); >>>> >>>> PluginArtifactType instance = data.getPluginArtifact().get(0); >>>> @@ -899,10 +968,11 @@ >>>> * Ensures that a plugin is installable. >>>> * >>>> * @param plugin plugin to check >>>> + * @return true if the plugin is not installed >>>> * @throws >>>> org.apache.geronimo.kernel.repository.MissingDependencyException >>>> * if plugin requires a dependency that is not present >>>> */ >>>> - public void validatePlugin(PluginType plugin) throws >>>> MissingDependencyException { >>>> + public boolean validatePlugin(PluginType plugin) throws >>>> MissingDependencyException { >>>> if (plugin.getPluginArtifact().size() != 1) { >>>> throw new MissingDependencyException("A plugin configuration >>>> must include one plugin artifact, not " + >>>> plugin.getPluginArtifact().size(), >>>> null, (Stack<Artifact>) null); >>>> } >>>> @@ -919,11 +989,9 @@ >>>> break; >>>> } >>>> } >>>> - if (!upgrade) { >>>> + if (!upgrade && installedArtifacts.contains(artifact)) >>>> { >>>> log.debug("Configuration {} is already installed", >>>> artifact); >>>> -// throw new MissingDependencyException( >>>> -// "Configuration " + artifact + " is >>>> already installed.", toArtifact(metadata.getModuleId()), (Stack<Artifact>) >>>> null); >>>> - } >>>> + return false; } >>>> } >>>> } >>>> >>>> @@ -938,6 +1006,7 @@ >>>> throw new MissingDependencyException( >>>> "Plugin is not installable on JVM " + >>>> System.getProperty("java.version"), toArtifact(metadata.getModuleId()), >>>> (Stack<Artifact>) null); >>>> } >>>> + return true; >>>> } >>>> >>>> >>>> @@ -1090,7 +1159,10 @@ >>>> throw (IOException) new IOException("Unable to read >>>> plugin metadata: " + e.getMessage()).initCause(e); >>>> } >>>> if (pluginData != null) { // it's a plugin, not a plain JAR >>>> - validatePlugin(pluginData); >>>> + if (!validatePlugin(pluginData)) { >>>> + monitor.getResults().addSkippedConfigID(new >>>> MissingDependencyException("already installed", configID, >>>> (Stack<Artifact>)null)); >>>> + return; >>>> + } >>>> instance = pluginData.getPluginArtifact().get(0); >>>> } >>>> monitor.getResults().setCurrentMessage("Copying " + >>>> result.getArtifact() + " to the repository"); >>>> @@ -1170,8 +1242,9 @@ >>>> throw new IllegalStateException("Installed configuration into >>>> repository but ConfigStore cannot load it: " + e.getMessage(), e); >>>> } >>>> // Copy any files out of the artifact >>>> - for (ServerInstance serverInstance: servers.values()) { >>>> + for (ServerInstance serverInstance : servers.values()) { >>>> if >>>> (serverInstance.getAttributeStore().isModuleInstalled(configID)) { >>>> + installedArtifacts.add(configID); >>>> return; >>>> } >>>> } >>>> @@ -1182,6 +1255,7 @@ >>>> } >>>> } >>>> if (instance != null) { >>>> + installedArtifacts.add(configID); >>>> try { >>>> installConfigXMLData(configID, instance, servers, >>>> loadOverride); >>>> } catch (InvalidGBeanException e) { >>>> >>>> Modified: >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/CopyFileTest.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/CopyFileTest.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/CopyFileTest.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/CopyFileTest.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -47,6 +47,7 @@ >>>> private ConfigurationStore configStore; >>>> private PluginInstallerGBean installer; >>>> private Artifact artifact = new Artifact("test", "module", "1.0", >>>> "car"); >>>> + private String installedPluginsList = >>>> "var/config/installedPlugins.properties"; >>>> >>>> protected void setUp() throws Exception { >>>> super.setUp(); >>>> @@ -72,7 +73,7 @@ >>>> installer = new PluginInstallerGBean(new >>>> MockConfigurationManager(), >>>> repo, >>>> configStore, >>>> - serverInfo, >>>> + installedPluginsList, serverInfo, >>>> new ThreadPool() { >>>> public int getPoolSize() { >>>> return 0; >>>> >>>> Modified: >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/framework/modules/geronimo-plugin/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -41,7 +41,8 @@ >>>> private String fakeRepo; >>>> private String testRepo; >>>> private PluginInstaller installer; >>>> - >>>> + private String installedPluginsList = >>>> "var/config/installedPlugins.properties"; >>>> + >>>> protected void setUp() throws Exception { >>>> super.setUp(); >>>> fakeRepo = "http://nowhere.com/"; >>>> @@ -50,7 +51,7 @@ >>>> testRepo = url.substring(0, pos); >>>> ServerInfo serverInfo = new BasicServerInfo("."); >>>> installer = new PluginInstallerGBean(new >>>> MockConfigurationManager(), new MockWritableListableRepository(), new >>>> MockConfigStore(), >>>> - serverInfo, new ThreadPool() { >>>> + installedPluginsList, serverInfo, new ThreadPool() { >>>> public int getPoolSize() { >>>> return 0; >>>> } >>>> >>>> Modified: >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/AbstractListHandler.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/AbstractListHandler.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/AbstractListHandler.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/AbstractListHandler.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -65,7 +65,7 @@ >>>> // determine if the plugin is installable >>>> PluginType holder = PluginInstallerGBean.copy(metadata, >>>> artifact); >>>> try { >>>> - pluginInstaller.validatePlugin(holder); >>>> + >>>> plugin.setInstallable(pluginInstaller.validatePlugin(holder)); >>>> } catch (Exception e) { >>>> plugin.setInstallable(false); >>>> } >>>> >>>> Modified: >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/ViewPluginDownloadHandler.java >>>> URL: >>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/ViewPluginDownloadHandler.java?rev=699202&r1=699201&r2=699202&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/ViewPluginDownloadHandler.java >>>> (original) >>>> +++ >>>> geronimo/server/trunk/plugins/console/plugin-portlets/src/main/java/org/apache/geronimo/console/car/ViewPluginDownloadHandler.java >>>> Fri Sep 26 00:26:53 2008 >>>> @@ -89,7 +89,7 @@ >>>> StringBuffer validationNotOk = new StringBuffer(); >>>> PluginType holder = >>>> PluginInstallerGBean.copy(plugin.getPlugin(), plugin.getPluginArtifact()); >>>> try { >>>> - pluginInstaller.validatePlugin(holder); >>>> + >>>> plugin.setInstallable(pluginInstaller.validatePlugin(holder)); >>>> } catch (Exception e) { >>>> plugin.setInstallable(false); >>>> validationNotOk.append(e.getMessage()); >>>> >>>> >>>> >> > >