[
https://issues.apache.org/jira/browse/GERONIMO-2757?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12468486
]
Jason Warner commented on GERONIMO-2757:
----------------------------------------
After running through this again I came up with a different idea. I found that
the schemas to validate against are actually in the plugin-installer code and
not in the xml document. This would make it difficult to determine which
schema a document is using since it's not explicitly stated. I was thinking
that we could modify this code to validate against the new and the old schema.
Since the geronimo-version element is optional in both schemas, the new schema
could be modified slightly so that its geronimo-version element has a different
name. This way, old xml's can be left alone and still work fine but new xml's
can use the new geronimo-version element and also work. This would require
that the given xml document either use the new way or the old way for each
version. By this I mean that for each version a user wishes to have in the
xml, you can either use the new way or the old way but not both. The code
would use whichever geronimo-version element matched the running version but
would be unsure of what to do if two geronimo-version elements existed for the
same version.
> Enhance plugin schema to allow for multiple versions of a plugin
> ----------------------------------------------------------------
>
> Key: GERONIMO-2757
> URL: https://issues.apache.org/jira/browse/GERONIMO-2757
> Project: Geronimo
> Issue Type: Improvement
> Security Level: public(Regular issues)
> Components: Plugins
> Affects Versions: 2.0
> Reporter: Paul McMahan
> Assigned To: Jason Warner
>
> plugins-1.1.xsd currently allows for a single version of a plugin to be
> described from within a <plugin> element. For example, if there were a
> different version of plugin for each version of geronimo then the plugin
> catalog would like something like:
> <plugin>
>
> <module-id>org.apache.geronimo.configs/ca-helper-tomcat/1.1/car</module-id>
> <geronimo-version>1.1</geronimo-version>
>
> <source-repository>http://geronimo.apache.org/plugins/geronimo-1.1</source-repository>
> [...]
> </plugin>
> <plugin>
>
> <module-id>org.apache.geronimo.configs/ca-helper-tomcat/1.2/car</module-id>
> <geronimo-version>1.2</geronimo-version>
>
> <source-repository>http://geronimo.apache.org/plugins/geronimo-1.2</source-repository>
> [...]
> </plugin>
> <plugin>
>
> <module-id>org.apache.geronimo.configs/ca-helper-tomcat/2.0/car</module-id>
> <geronimo-version>2.0</geronimo-version>
>
> <source-repository>http://geronimo.apache.org/plugins/geronimo-2.0</source-repository>
> [...]
> </plugin>
> <default-repository>http://geronimo.apache.org/plugins/geronimo-1.1</default-repository>
> <default-repository>http://geronimo.apache.org/plugins/geronimo-1.2</default-repository>
> <default-repository>http://geronimo.apache.org/plugins/geronimo-2.0</default-repository>
> Plugins are usually not compatible across versions of Geronimo for various
> reasons, probably the most prominent of which is Geronimo's reliance on
> serialized java objects in CAR files. Browsing a catalog that contains a
> <plugin> element for each version of Geronimo's plugins from the admin
> console or from the CLI would be confusing because of the many (seemingly
> redundant) entries. Therefore the collection of Geronimo plugins is
> distributed across a set of catalogs, one per version of Geronimo, and each
> version of Geronimo points at a version specific plugin catalog.
> Modifying the plugin schema so that a <plugin> element can allow the plugin's
> module-id and source-repository to depend on the <geronimo-version> would
> allow there to be much fewer entries in a consolidated plugin catalog. A
> plugin catalog that is created using this modified schema might look
> something like (this is just a sample) :
> <plugin>
> <geronimo-version version="1.1">
>
> <module-id>org.apache.geronimo.configs/ca-helper-tomcat/1.1/car</module-id>
>
> <source-repository>http://geronimo.apache.org/plugins/geronimo-1.1</source-repository>
> </geronimo-version>
> <geronimo-version version="1.2">
>
> <module-id>org.apache.geronimo.configs/ca-helper-tomcat/1.2/car</module-id>
>
> <source-repository>http://geronimo.apache.org/plugins/geronimo-1.2</source-repository>
> </geronimo-version>
> <geronimo-version version="2.0">
>
> <module-id>org.apache.geronimo.configs/ca-helper-tomcat/2.0/car</module-id>
>
> <source-repository>http://geronimo.apache.org/plugins/geronimo-2.0</source-repository>
> </geronimo-version>
> [...]
> </plugin>
> Also, for this to work a customized list of <prerequisite> elements would
> probably have to be supported inside the <geronimo-version> element as well,
> since those might also be version specific.
> Once this improvement is in place it will be easier to maintain Geronimo's
> plugin collection since each version of Geronimo won't require a separate
> catalog. Also it will be easier for end users and other external sources to
> refer to Geronimo's plugin catalog since the repository URL will no longer be
> version specific.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.