Matt Hogstrom wrote:
> Aaron,
>
> We are in the process of releasing 1.1. In the release note I requested
> that people please let me know before commiting changes to 1.1. The
> number of changes you've made below are significant changes. Can you
> please revert this change as well as 412621 and hold them for 1.1 please.
>
> For specific issues with 1.1 please post a note about the change so we
> can discuss the content of hte change before applying it to the build.
>
> If you would like to bring these issues forward for discussion that
> would be fine but I'm inclinced to get 1.1 out and have these in 1.1.1.
>
> Thanks.
>
> Matt
>
> [EMAIL PROTECTED] wrote:
>> Author: ammulder
>> Date: Wed Jun 7 15:56:52 2006
>> New Revision: 412604
>>
>> URL: http://svn.apache.org/viewvc?rev=412604&view=rev
>> Log:
>> Fixes to config.xml, plugins, plugin repo list, plugin installer
>> - Plugin exporter can map current version to a set of supported versions
>> to help with problems caused by plugins not running on new test builds
>> of Geronimo
>> - config.xml has placeholder for user-added plugin repositories
>> GERONIMO-2076
>> - Removed Apache directory content from config.xml for 4 main assemblies
>> - Added directory config.xml content to directory plugin metadata
>> - Plugin installer writes correct elements for config.xml content
>> GERONIMO-2088
>> - Plugin exporter includes file copy and config.xml content
>> GERONIMO-2089
>> - Plugin repository list points to a version-specific file (so 1.1 and
>> 1.2 can point to different repositories)
>> - Trim entries in plugin repository list, just in case
>> - Remove some extraneous logging during console plugin download
>>
>> Modified:
>>
>>
geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/car/DownloadCARHandler.java
>>
>>
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml
>>
>>
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml
>>
>>
>>
geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/config.xml
>>
>>
>>
geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/config.xml
>>
>>
>> geronimo/branches/1.1/assemblies/zzzzj2ee-installer/src/var/config/config.xml
>>
>> geronimo/branches/1.1/configs/directory/src/conf/geronimo-plugin.xml
>>
>>
geronimo/branches/1.1/modules/common/src/test/org/apache/geronimo/common/propertyeditor/AbstractCollectionEditorTest.java
>>
>>
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
>>
>>
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginRepositoryDownloader.java
>>
>>
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/util/PluginRepositoryExporter.java
>>
>>
>> Modified:
>>
geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/car/DownloadCARHandler.java
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/car/DownloadCARHandler.java?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/car/DownloadCARHandler.java
>> (original)
>> +++
>>
geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/car/DownloadCARHandler.java
>> Wed Jun 7 15:56:52 2006
>> @@ -152,9 +152,9 @@
>>
>> progressInfo.setMainMessage(results.getCurrentMessage());
>>
>> progressInfo.setProgressPercent(results.getCurrentFilePercent());
>> progressInfo.setFinished(results.isFinished());
>> - log.info(progressInfo.getMainMessage());
>> + log.debug(progressInfo.getMainMessage());
>> if (results.isFinished()) {
>> - log.info("Installation finished");
>> + log.debug("Installation finished");
>>
>> session.setAttribute(DOWNLOAD_RESULTS_SESSION_KEY, results);
>> break;
>> } else {
>>
>> Modified:
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml
>> (original)
>> +++
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/config.xml
>> Wed Jun 7 15:56:52 2006
>> @@ -15,6 +15,10 @@
>> <!-- Check whether this really works if host name is
>> 0.0.0.0 -->
>> <attribute
>>
name="namingProviderUrl">rmi://${PlanServerHostname}:${PlanNamingPort}</attribute>
>>
>> </gbean>
>> + <gbean name="DownloadedPluginRepos">
>> + <attribute
>>
name="repositoryList">http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt</attribute>
>>
>> + <attribute name="userRepositories">[]</attribute>
>> + </gbean>
>> </module>
>> <module name="geronimo/j2ee-server/${pom.currentVersion}/car">
>> </module>
>> @@ -62,13 +66,6 @@
>> </gbean>
>> </module>
>> <module name="geronimo/activemq/${pom.currentVersion}/car"/>
>> - <module name="geronimo/directory/${pom.currentVersion}/car"
>> load="false">
>> - <gbean name="geronimo.server:name=DirectoryService">
>> - <attribute name="host">${PlanServerHostname}</attribute>
>> - <attribute name="port">${PlanLdapPort}</attribute>
>> - </gbean>
>> - </module>
>> - <module name="geronimo/ldap-realm/${pom.currentVersion}/car"
>> load="false"/>
>> <module name="geronimo/jetty/${pom.currentVersion}/car">
>> <gbean name="JettyWebConnector">
>> <attribute name="host">${PlanServerHostname}</attribute>
>>
>> Modified:
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml
>> (original)
>> +++
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/config.xml
>> Wed Jun 7 15:56:52 2006
>> @@ -15,6 +15,10 @@
>> <!-- Check whether this really works if host name is
>> 0.0.0.0 -->
>> <attribute
>>
name="namingProviderUrl">rmi://${PlanServerHostname}:${PlanNamingPort}</attribute>
>>
>> </gbean>
>> + <gbean name="DownloadedPluginRepos">
>> + <attribute
>>
name="repositoryList">http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt</attribute>
>>
>> + <attribute name="userRepositories">[]</attribute>
>> + </gbean>
>> </module>
>> <module name="geronimo/j2ee-server/${pom.currentVersion}/car">
>> </module>
>> @@ -62,13 +66,6 @@
>> </gbean>
>> </module>
>> <module name="geronimo/activemq/${pom.currentVersion}/car"/>
>> - <module name="geronimo/directory/${pom.currentVersion}/car"
>> load="false">
>> - <gbean name="geronimo.server:name=DirectoryService">
>> - <attribute name="host">${PlanServerHostname}</attribute>
>> - <attribute name="port">${PlanLdapPort}</attribute>
>> - </gbean>
>> - </module>
>> - <module name="geronimo/ldap-realm/${pom.currentVersion}/car"
>> load="false"/>
>> <module name="geronimo/tomcat/${pom.currentVersion}/car">
>> <gbean name="TomcatEngine">
>> <reference name="TomcatValveChain" />
>>
>> Modified:
>>
geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/config.xml
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/config.xml?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/config.xml
>> (original)
>> +++
>>
geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/config.xml
>> Wed Jun 7 15:56:52 2006
>> @@ -15,6 +15,10 @@
>> <!-- Check whether this really works if host name is
>> 0.0.0.0 -->
>> <attribute
>>
name="namingProviderUrl">rmi://${PlanServerHostname}:${PlanNamingPort}</attribute>
>>
>> </gbean>
>> + <gbean name="DownloadedPluginRepos">
>> + <attribute
>>
name="repositoryList">http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt</attribute>
>>
>> + <attribute name="userRepositories">[]</attribute>
>> + </gbean>
>> </module>
>> <module name="geronimo/j2ee-server/${pom.currentVersion}/car"/>
>> <module name="geronimo/j2ee-security/${pom.currentVersion}/car">
>>
>> Modified:
>>
geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/config.xml
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/config.xml?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/config.xml
>> (original)
>> +++
>>
geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/config.xml
>> Wed Jun 7 15:56:52 2006
>> @@ -15,6 +15,10 @@
>> <!-- Check whether this really works if host name is
>> 0.0.0.0 -->
>> <attribute
>>
name="namingProviderUrl">rmi://${PlanServerHostname}:${PlanNamingPort}</attribute>
>>
>> </gbean>
>> + <gbean name="DownloadedPluginRepos">
>> + <attribute
>>
name="repositoryList">http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt</attribute>
>>
>> + <attribute name="userRepositories">[]</attribute>
>> + </gbean>
>> </module>
>> <module name="geronimo/j2ee-server/${pom.currentVersion}/car"/>
>> <module name="geronimo/j2ee-security/${pom.currentVersion}/car">
>>
>> Modified:
>> geronimo/branches/1.1/assemblies/zzzzj2ee-installer/src/var/config/config.xml
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/assemblies/zzzzj2ee-installer/src/var/config/config.xml?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>> geronimo/branches/1.1/assemblies/zzzzj2ee-installer/src/var/config/config.xml
>> (original)
>> +++
>> geronimo/branches/1.1/assemblies/zzzzj2ee-installer/src/var/config/config.xml
>> Wed Jun 7 15:56:52 2006
>> @@ -15,6 +15,10 @@
>> <!-- Check whether this really works if host name is
>> 0.0.0.0 -->
>> <attribute
>>
name="namingProviderUrl">rmi://${PlanServerHostname}:${PlanNamingPort}</attribute>
>>
>> </gbean>
>> + <gbean name="DownloadedPluginRepos">
>> + <attribute
>>
name="repositoryList">http://people.apache.org/~ammulder/plugin-repository-list-1.1.txt</attribute>
>>
>> + <attribute name="userRepositories">[]</attribute>
>> + </gbean>
>> </module>
>> <module name="geronimo/j2ee-server/${pom.currentVersion}/car"
>> load="${J2EE.Features.enable}">
>> <gbean name="geronimo:name=EJB,type=NetworkService">
>>
>> Modified:
>> geronimo/branches/1.1/configs/directory/src/conf/geronimo-plugin.xml
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/configs/directory/src/conf/geronimo-plugin.xml?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>> geronimo/branches/1.1/configs/directory/src/conf/geronimo-plugin.xml
>> (original)
>> +++
>> geronimo/branches/1.1/configs/directory/src/conf/geronimo-plugin.xml
>> Wed Jun 7 15:56:52 2006
>> @@ -26,4 +26,11 @@
>> <dependency>geronimo/geronimo-directory//jar</dependency>
>>
<source-repository>http://www.geronimoplugins.com/repository/geronimo-1.1/</source-repository>
>>
>> <source-repository>http://www.ibiblio.org/maven2/</source-repository>
>> +<config-xml-content>
>> + <gbean xmlns="http://geronimo.apache.org/xml/ns/attributes-1.1"
>> + name="DirectoryService">
>> + <attribute name="host">0.0.0.0</attribute>
>> + <attribute name="port">1389</attribute>
>> + </gbean>
>> +</config-xml-content>
>> </geronimo-plugin>
>>
>> Modified:
>>
geronimo/branches/1.1/modules/common/src/test/org/apache/geronimo/common/propertyeditor/AbstractCollectionEditorTest.java
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/modules/common/src/test/org/apache/geronimo/common/propertyeditor/AbstractCollectionEditorTest.java?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/modules/common/src/test/org/apache/geronimo/common/propertyeditor/AbstractCollectionEditorTest.java
>> (original)
>> +++
>>
geronimo/branches/1.1/modules/common/src/test/org/apache/geronimo/common/propertyeditor/AbstractCollectionEditorTest.java
>> Wed Jun 7 15:56:52 2006
>> @@ -59,6 +59,16 @@
>> checkContents(collection);
>> }
>>
>> + public void testEmpty() {
>> + String input = "[]";
>> + editor.setAsText(input);
>> + Object output = editor.getValue();
>> + assertNotNull(output);
>> + checkType(output);
>> + Collection collection = (Collection) output;
>> + assertEquals(0, collection.size());
>> + }
>> +
>> private void checkContents(Collection collection) {
>> assertEquals(2, collection.size());
>> Iterator iterator = collection.iterator();
>>
>> Modified:
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
>> (original)
>> +++
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
>> Wed Jun 7 15:56:52 2006
>> @@ -21,6 +21,7 @@
>> import java.io.FileOutputStream;
>> import java.io.IOException;
>> import java.io.InputStream;
>> +import java.io.BufferedOutputStream;
>> import java.net.HttpURLConnection;
>> import java.net.MalformedURLException;
>> import java.net.URL;
>> @@ -37,8 +38,11 @@
>> import java.util.Map;
>> import java.util.Set;
>> import java.util.SortedSet;
>> +import java.util.Enumeration;
>> import java.util.jar.JarEntry;
>> import java.util.jar.JarFile;
>> +import java.util.jar.JarOutputStream;
>> +import java.util.jar.Manifest;
>> import java.util.zip.ZipEntry;
>> import javax.security.auth.login.FailedLoginException;
>> import javax.xml.parsers.DocumentBuilder;
>> @@ -174,6 +178,15 @@
>> * The configId must be fully resolved
>> (isResolved() == true)
>> */
>> public PluginMetadata getPluginMetadata(Artifact moduleId) {
>> + if(configManager != null) {
>> + if(!configManager.isConfiguration(moduleId)) {
>> + return null;
>> + }
>> + } else {
>> + if(!configStore.containsConfiguration(moduleId)) {
>> + return null;
>> + }
>> + }
>> File dir = writeableRepo.getLocation(moduleId);
>> Document doc;
>> ConfigurationData configData;
>> @@ -216,8 +229,10 @@
>> overrideDependencies(configData, result);
>> return result;
>> } catch (InvalidConfigException e) {
>> + e.printStackTrace();
>> log.warn("Unable to generate metadata for "+moduleId, e);
>> } catch (Exception e) {
>> + e.printStackTrace();
>> log.warn("Invalid XML at "+source, e);
>> }
>> return null;
>> @@ -238,25 +253,73 @@
>> if(dir == null) {
>> throw new
>> IllegalArgumentException(metadata.getModuleId()+" is not installed!");
>> }
>> - File meta = new File(dir, "META-INF");
>> - if(!meta.isDirectory() || !meta.canRead()) {
>> - throw new
>> IllegalArgumentException(metadata.getModuleId()+" is not a plugin!");
>> - }
>> - File xml = new File(meta, "geronimo-plugin.xml");
>> - try {
>> - if(!xml.isFile()) {
>> - if(!xml.createNewFile()) {
>> - throw new RuntimeException("Cannot create plugin
>> metadata file for "+metadata.getModuleId());
>> + if(!dir.isDirectory()) { // must be a packed (JAR-formatted)
>> plugin
>> + try {
>> + File temp = new File(dir.getParentFile(),
>> dir.getName()+".temp");
>> + JarFile input = new JarFile(dir);
>> + Manifest manifest = input.getManifest();
>> + JarOutputStream out = manifest == null ? new
>> JarOutputStream(new BufferedOutputStream(new FileOutputStream(temp)))
>> + : new JarOutputStream(new
>> BufferedOutputStream(new FileOutputStream(temp)), manifest);
>> + Enumeration enum = input.entries();
>> + byte[] buf = new byte[4096];
>> + int count;
>> + while (enum.hasMoreElements()) {
>> + JarEntry entry = (JarEntry) enum.nextElement();
>> +
>> if(entry.getName().equals("META-INF/geronimo-plugin.xml")) {
>> + entry = new JarEntry(entry.getName());
>> + out.putNextEntry(entry);
>> + Document doc = writePluginMetadata(metadata);
>> + TransformerFactory xfactory =
>> TransformerFactory.newInstance();
>> + Transformer xform = xfactory.newTransformer();
>> + xform.setOutputProperty(OutputKeys.INDENT,
>> "yes");
>> +
>> xform.setOutputProperty("{http://xml.apache.org/xslt}indent-amount",
>> "2");
>> + xform.transform(new DOMSource(doc), new
>> StreamResult(out));
>> + } else
>> if(entry.getName().equals("META-INF/MANIFEST.MF")) {
>> + // do nothing, already passed in a manifest
>> + } else {
>> + out.putNextEntry(entry);
>> + InputStream in = input.getInputStream(entry);
>> + while((count = in.read(buf)) > -1) {
>> + out.write(buf, 0, count);
>> + }
>> + in.close();
>> + out.closeEntry();
>> + }
>> }
>> + out.flush();
>> + out.close();
>> + input.close();
>> + if(!dir.delete()) {
>> + throw new IOException("Unable to delete old
>> plugin at "+dir.getAbsolutePath());
>> + }
>> + if(!temp.renameTo(dir)) {
>> + throw new IOException("Unable to move new plugin
>> "+temp.getAbsolutePath()+" to "+dir.getAbsolutePath());
>> + }
>> + } catch (Exception e) {
>> + log.error("Unable to update plugin metadata", e);
>> + throw new RuntimeException("Unable to update plugin
>> metadata", e);
>> + }
>> + } else {
>> + File meta = new File(dir, "META-INF");
>> + if(!meta.isDirectory() || !meta.canRead()) {
>> + throw new
>> IllegalArgumentException(metadata.getModuleId()+" is not a plugin!");
>> + }
>> + File xml = new File(meta, "geronimo-plugin.xml");
>> + try {
>> + if(!xml.isFile()) {
>> + if(!xml.createNewFile()) {
>> + throw new RuntimeException("Cannot create
>> plugin metadata file for "+metadata.getModuleId());
>> + }
>> + }
>> + Document doc = writePluginMetadata(metadata);
>> + TransformerFactory xfactory =
>> TransformerFactory.newInstance();
>> + Transformer xform = xfactory.newTransformer();
>> + xform.setOutputProperty(OutputKeys.INDENT, "yes");
>> +
>> xform.setOutputProperty("{http://xml.apache.org/xslt}indent-amount",
>> "2");
>> + xform.transform(new DOMSource(doc), new
>> StreamResult(xml));
>> + } catch (Exception e) {
>> + log.error("Unable to save plugin metadata for
>> "+metadata.getModuleId(), e);
>> }
>> - Document doc = writePluginMetadata(metadata);
>> - TransformerFactory xfactory =
>> TransformerFactory.newInstance();
>> - Transformer xform = xfactory.newTransformer();
>> - xform.setOutputProperty(OutputKeys.INDENT, "yes");
>> -
>> xform.setOutputProperty("{http://xml.apache.org/xslt}indent-amount",
>> "2");
>> - xform.transform(new DOMSource(doc), new StreamResult(xml));
>> - } catch (Exception e) {
>> - log.error("Unable to save plugin metadata for
>> "+metadata.getModuleId(), e);
>> }
>> }
>>
>> @@ -1522,10 +1585,14 @@
>> copy.appendChild(doc.createTextNode(file.getSourceFile()));
>> config.appendChild(copy);
>> }
>> - for (int i = 0; i < data.getConfigXmls().length; i++) {
>> - GBeanOverride override = data.getConfigXmls()[i];
>> - Element gbean = override.writeXml(doc, config);
>> - gbean.setAttribute("xmlns",
>> "http://geronimo.apache.org/xml/ns/attributes-1.1");
>> + if(data.getConfigXmls().length > 0) {
>> + Element content = doc.createElement("config-xml-content");
>> + for (int i = 0; i < data.getConfigXmls().length; i++) {
>> + GBeanOverride override = data.getConfigXmls()[i];
>> + Element gbean = override.writeXml(doc, content);
>> + gbean.setAttribute("xmlns",
>> "http://geronimo.apache.org/xml/ns/attributes-1.1");
>> + }
>> + config.appendChild(content);
>> }
>> return doc;
>> }
>>
>> Modified:
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginRepositoryDownloader.java
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginRepositoryDownloader.java?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginRepositoryDownloader.java
>> (original)
>> +++
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/plugin/PluginRepositoryDownloader.java
>> Wed Jun 7 15:56:52 2006
>> @@ -76,7 +76,7 @@
>> for (int i = 0; i < downloadRepositories.size(); i++) {
>> String url = (String) downloadRepositories.get(i);
>> try {
>> - list.add(new URL(url));
>> + list.add(new URL(url.trim()));
>> } catch (MalformedURLException e) {
>> log.error("Unable to format plugin repository URL
>> "+url, e);
>> }
>> @@ -84,7 +84,7 @@
>> for (int i = 0; i < userRepositories.size(); i++) {
>> String url = (String) userRepositories.get(i);
>> try {
>> - list.add(new URL(url));
>> + list.add(new URL(url.trim()));
>> } catch (MalformedURLException e) {
>> log.error("Unable to format plugin repository URL
>> "+url, e);
>> }
>>
>> Modified:
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/util/PluginRepositoryExporter.java
>>
>> URL:
>>
http://svn.apache.org/viewvc/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/util/PluginRepositoryExporter.java?rev=412604&r1=412603&r2=412604&view=diff
>>
>>
==============================================================================
>>
>> ---
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/util/PluginRepositoryExporter.java
>> (original)
>> +++
>>
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/util/PluginRepositoryExporter.java
>> Wed Jun 7 15:56:52 2006
>> @@ -26,6 +26,8 @@
>> import java.util.SortedSet;
>> import java.util.Properties;
>> import java.util.HashMap;
>> +import java.util.List;
>> +import java.util.ArrayList;
>> import javax.xml.parsers.DocumentBuilder;
>> import javax.xml.parsers.DocumentBuilderFactory;
>> import javax.xml.parsers.ParserConfigurationException;
>> @@ -40,6 +42,7 @@
>> import org.apache.geronimo.kernel.repository.Version;
>> import
>> org.apache.geronimo.system.configuration.RepositoryConfigurationStore;
>> import org.apache.geronimo.system.configuration.ConfigurationStoreUtil;
>> +import org.apache.geronimo.system.configuration.GBeanOverride;
>> import org.apache.geronimo.system.repository.Maven1Repository;
>> import org.apache.geronimo.system.repository.Maven2Repository;
>> import org.apache.geronimo.system.repository.CopyArtifactTypeHandler;
>> @@ -53,16 +56,48 @@
>> import org.w3c.dom.NodeList;
>> import org.w3c.dom.Text;
>> import org.xml.sax.SAXException;
>> -import org.xml.sax.EntityResolver;
>> -import org.xml.sax.InputSource;
>>
>> /**
>> - * A utility that exports a repository of plugins.
>> + * A utility that exports a repository of plugins. To use this:
>> + *
>> + * 1) Clear out your Maven repo
>> + * 2) Build Geronimo or any plugins
>> + * 3) Create an output repo
>> + * 4) Rsync the current plugin site to the output repo
>> + * 5) Run this against your Maven repo and the output repo
>> + * 6) Rsync the output repo to the plugin site
>> + *
>> + * It will migrate all the plugins from the Maven repo location to
>> the output
>> + * location, updating the supported Geronimo versions for any that
>> declare only
>> + * a snapshot release (using the map below), and calculating hashes
>> for all the
>> + * plugins. It will update the master plugin metadata file and the
>> Maven
>> + * metadata file for each artifact directory.
>> *
>> * @version $Rev$ $Date$
>> */
>> public class PluginRepositoryExporter {
>> private final static String NAMESPACE =
>> "http://geronimo.apache.org/xml/ns/plugins-1.1";
>> + private final static Map VERSION_MAP = new HashMap();
>> + static {
>> + List list = new ArrayList();
>> + list.add("1.1-SNAPSHOT");
>> + list.add("1.1-20060607");
>> + list.add("1.1-rc1");
>> + list.add("1.1-rc2");
>> + list.add("1.1-rc3");
>> + list.add("1.1");
>> + VERSION_MAP.put("1.1-SNAPSHOT", list);
>> + list = new ArrayList();
>> + list.add("1.2-SNAPSHOT");
>> + list.add("1.2-beta1");
>> + list.add("1.2-beta2");
>> + list.add("1.2-beta3");
>> + list.add("1.2-rc1");
>> + list.add("1.2-rc2");
>> + list.add("1.2-rc3");
>> + list.add("1.2");
>> + VERSION_MAP.put("1.2-SNAPSHOT", list);
>> + }
>> private Maven1Repository sourceRepo;
>> private Maven2Repository destRepo;
>> private Map targetVersions;
>> @@ -196,6 +231,7 @@
>> if(!artifactDir.isDirectory() ||
>> !artifactDir.canRead()) {
>> throw new IllegalStateException("Failed to
>> located group/artifact dir for "+artifact+" (got
>> "+artifactDir.getAbsolutePath()+")");
>> }
>> + updatePluginMetadata(artifact);
>> updateMavenMetadata(artifactDir, artifact);
>> }
>> }
>> @@ -217,6 +253,42 @@
>>
>> }
>>
>> + private void updatePluginMetadata(Artifact artifact) {
>> + PluginMetadata data = installer.getPluginMetadata(artifact);
>> + if(data == null) {
>> + return;
>> + }
>> + if(data.getGeronimoVersions() != null &&
>> data.getGeronimoVersions().length == 1 &&
>> +
>> VERSION_MAP.containsKey(data.getGeronimoVersions()[0])) {
>> + data.setGeronimoVersions((String[]) ((List)
>> VERSION_MAP.get(data.getGeronimoVersions()[0])).toArray(new String[0]));
>> + if(data.getHash() != null) {
>> + data = copy(data);
>> + }
>> + installer.updatePluginMetadata(data);
>> + }
>> + }
>> +
>> + /**
>> + * Create a copy of a metadata, but with an empty hash. Used when
>> + * something changed so an existing hash would be invalid.
>> + */
>> + private PluginMetadata copy(PluginMetadata source) {
>> + PluginMetadata data = new PluginMetadata(source.getName(),
>> source.getModuleId(), source.getCategory(),
>> + source.getDescription(), source.getPluginURL(),
>> source.getAuthor(), null, source.isInstalled(),
>> + source.isEligible());
>> + data.setConfigXmls(source.getConfigXmls());
>> + data.setDependencies(source.getDependencies());
>> + data.setFilesToCopy(source.getFilesToCopy());
>> + data.setForceStart(source.getForceStart());
>> + data.setGeronimoVersions(source.getGeronimoVersions());
>> + data.setJvmVersions(source.getJvmVersions());
>> + data.setLicenses(source.getLicenses());
>> + data.setObsoletes(source.getObsoletes());
>> + data.setPrerequisites(source.getPrerequisites());
>> + data.setRepositories(source.getRepositories());
>> + return data;
>> + }
>> +
>> private void updateMavenMetadata(File dir, Artifact artifact)
>> throws TransformerException, IOException, SAXException,
>> ParserConfigurationException {
>> File mavenFile = new File(dir, "maven-metadata.xml");
>> DocumentBuilderFactory factory =
>> DocumentBuilderFactory.newInstance();
>> @@ -280,12 +352,6 @@
>>
>> factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource",
>>
>> schema.getName());
>> DocumentBuilder builder = factory.newDocumentBuilder();
>> - builder.setEntityResolver(new EntityResolver() {
>> - public InputSource resolveEntity(String publicId, String
>> systemId) throws SAXException, IOException {
>> - System.out.println("RESOLVING PUB "+publicId+" SYS
>> "+systemId);
>> - return null;
>> - }
>> - });
>> Document doc = builder.newDocument();
>> Element root = doc.createElementNS(NAMESPACE,
>> "geronimo-plugin-list");
>> root.setAttribute("xmlns", NAMESPACE);
>> @@ -353,6 +419,23 @@
>> // URL url = data.getRepositories()[i];
>> // createText(doc, config, "source-repository",
>> url.toString());
>> // }
>> + for (int i = 0; i < data.getFilesToCopy().length; i++) {
>> + PluginMetadata.CopyFile copyFile =
>> data.getFilesToCopy()[i];
>> + Element copy = doc.createElement("copy-file");
>> + copy.setAttribute("relative-to",
>> copyFile.isRelativeToVar() ? "server" : "geronimo");
>> + copy.setAttribute("dest-dir", copyFile.getDestDir());
>> +
>> copy.appendChild(doc.createTextNode(copyFile.getSourceFile()));
>> + config.appendChild(copy);
>> + }
>> + if(data.getConfigXmls().length > 0) {
>> + Element content =
>> doc.createElement("config-xml-content");
>> + for (int i = 0; i < data.getConfigXmls().length; i++) {
>> + GBeanOverride override = data.getConfigXmls()[i];
>> + Element gbean = override.writeXml(doc, content);
>> + gbean.setAttribute("xmlns",
>> "http://geronimo.apache.org/xml/ns/attributes-1.1");
>> + }
>> + config.appendChild(content);
>> + }
>> }
>> Version ger = (Version) targetVersions.get("geronimo");
>> createText(doc, root, "default-repository",
>>
"http://www.geronimoplugins.com/repository/geronimo-"+ger.getMajorVersion()+"."+ger.getMinorVersion());
>>
>>
>>
>>
>>
>>
>
>
>