You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2006/06/08 00:56:53 UTC
svn commit: r412604 - in /geronimo/branches/1.1:
applications/console-standard/src/java/org/apache/geronimo/console/car/
assemblies/j2ee-jetty-server/src/var/config/
assemblies/j2ee-tomcat-server/src/var/config/
assemblies/minimal-jetty-server/src/var/...
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());
Re: Please reverse these commits...Re: svn commit: r412604 - in /geronimo/branches/1.1:
applications/console-standard/src/java/org/apache/geronimo/console/car/ assemblies/j2ee-jetty-server/src/var/config/
assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/...
Posted by "Alan D. Cabrera" <li...@toolazydogs.com>.
P.S. :) You guys rock, BTW!
Alan D. Cabrera wrote:
> I see some gold plating sneaking into a feature "frozen" branch.
> Since I am not doing any heavy lifting, I'll leave my comment at that.
>
>
> Regards,
> Alan
>
> Matt Hogstrom wrote:
>> Aaron,
>>
>> 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.
>>
>> 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.
>>
>> Are there any other bugs that you are aware of that we need to be
>> tracking?
>>
>> Also, if you could take a whack at the JIRAs you moved into 1.1 and
>> move them out that would be really helpful.
>>
>> Thanks
>>
>> Matt
>>
>> 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
>>>
>>> ammulder@apache.org 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());
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>
Re: Please reverse these commits...Re: svn commit: r412604 - in /geronimo/branches/1.1:
applications/console-standard/src/java/org/apache/geronimo/console/car/ assemblies/j2ee-jetty-server/src/var/config/
assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/...
Posted by "Alan D. Cabrera" <li...@toolazydogs.com>.
I see some gold plating sneaking into a feature "frozen" branch. Since
I am not doing any heavy lifting, I'll leave my comment at that.
Regards,
Alan
Matt Hogstrom wrote:
> Aaron,
>
> 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.
>
> 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.
>
> Are there any other bugs that you are aware of that we need to be
> tracking?
>
> Also, if you could take a whack at the JIRAs you moved into 1.1 and
> move them out that would be really helpful.
>
> Thanks
>
> Matt
>
> 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
>>
>> ammulder@apache.org 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());
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
Re: Please reverse these commits...Re: svn commit: r412604 - in /geronimo/branches/1.1:
applications/console-standard/src/java/org/apache/geronimo/console/car/ assemblies/j2ee-jetty-server/src/var/config/
assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/...
Posted by Matt Hogstrom <ma...@hogstrom.org>.
Aaron,
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.
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.
Are there any other bugs that you are aware of that we need to be tracking?
Also, if you could take a whack at the JIRAs you moved into 1.1 and move them out that would be
really helpful.
Thanks
Matt
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
>
> ammulder@apache.org 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());
>>
>>
>>
>>
>>
>>
>
>
>
Please reverse these commits...Re: svn commit: r412604 - in /geronimo/branches/1.1:
applications/console-standard/src/java/org/apache/geronimo/console/car/ assemblies/j2ee-jetty-server/src/var/config/
assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/...
Posted by Matt Hogstrom <ma...@hogstrom.org>.
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
ammulder@apache.org 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());
>
>
>
>
>