David,
I posted a comment to the JIRA (GERONIMO-4318), please review. Thanks
Lin
On Fri, Sep 26, 2008 at 2:07 PM, Lin Sun <linsun.unc@gmail.com> wrote:
> Cool - I am running a full build to check them out.
>
> thanks
>
> Lin
>
> On Fri, Sep 26, 2008 at 1:26 PM, David Jencks <david_jencks@yahoo.com> 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, <djencks@apache.org> 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());
>>>>>
>>>>>
>>>>>
>>>
>>
>>
>
|