On Jun 7, 2006, at 9:23 PM, Aaron Mulder wrote:
> On 6/7/06, Matt Hogstrom <[EMAIL PROTECTED]> wrote:
>> Its been a long day and I've caught up on the JIRAs you created.
>> I think I'm ok with your fixes
>> given the JIRA entries I read through.
>
> OK
I'm OK with these bug fixes too.
>
>> I think the PluginRepositoryExporter.java should not be hardcoding
>> values in it. Can you look at
>> moving this to a property file in the future? Geronimo has way
>> too many configuration items hard
>> coded in the server (or requires a server rebuild to make
>> changes). I would prefer not to see any
>> other changes in this area for 1.1.
>
> Yes, it was just going to be a bigger change to put in a properties
> file and get it to read from that.
>
>> Are there any other bugs that you are aware of that we need to be
>> tracking?
>
> http://issues.apache.org/jira/browse/GERONIMO-1434
>
> There's an OpenEJB patch listed as pending. I think this was the one
> that caused all the problems when the repo was down and has now been
> applied, but I'm not sure. David J, can you confirm?
Kevan applied the patch for me, I've closed this one.
>
> http://issues.apache.org/jira/browse/GERONIMO-1451
>
> There's an ActiveMQ patch that hasn't been applied because it needs to
> be done against the *-g1_1 module not the 1.0 module. Perhaps not
> tremendously important, but if it fixes the problem it would be nice
> to put into ActiveMQ 3.2.4 instead of immediately going to a new
> ActiveMQ SNAPSHOT.
>
> http://issues.apache.org/jira/browse/GERONIMO-1884
>
> Should change the terminology on the plugin screen in the console to
> be consistent (there's a patch for this in
> http://issues.apache.org/jira/browse/GERONIMO-1938), and perhaps add a
> few words about removing plugins. I don't think we need to do
> anything else for this issue.
>
> http://issues.apache.org/jira/browse/GERONIMO-1791
> http://issues.apache.org/jira/browse/GERONIMO-1817
>
> Trivial patches to avoid NPEs in the LDAP realm.
>
> http://issues.apache.org/jira/browse/GERONIMO-1781
>
> Reportedly, the repository blows up on a module like foo-1.jar
>
> NO URL
>
> There's no Jira for this, but we should remove the "old keystore"
> portlet from the console for the 1.1 release (but leave it there for
> 1.1.1, until all the functionality is replaced).
>
> http://issues.apache.org/jira/browse/GERONIMO-1887
>
> The console has 1.7 MB of (potentially) unnecessary JARs.
>
> http://issues.apache.org/jira/browse/GERONIMO-2083
>
> Should we upgrade to the current HOWL?
no, we'd need an upload to ibiblio for this. I got a nice m2 build
for howl working and created an m2 compliant upload request, but
maven is not accepting them until it gets a new piece of hardware set
up.
thanks for looking through all of these!
david jencks
>
> http://issues.apache.org/jira/browse/GERONIMO-1922
>
> Would be nice to force a plugin export to fail if you've used the
> SharedLib dependency. I thought we had done this, but I don't see the
> code. So for now it's a "training issue".
>
>
> I can look at most of these before noon on 6/8 if you are OK with
> that. Anything that you don't want to see go in?
>
>> Also, if you could take a whack at the JIRAs you moved into 1.1
>> and move them out that would be
>> really helpful.
>
> Hmm... thought you were going to do that. :)
>
> Thanks,
> Aaron
>
>> 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());
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >
>> >
>> >
>>