Hi,
I decided to make a simple lookup of jars using the classloader.
We support also search through:
Here is a first commit to take a look:
https://github.com/ccancellieri/geoserver/compare/master-REST-manifest-version
Note:
probably you don’t like Hudson keys into the pom?
Example 1:
http://cio174:8080/geoserver/rest/about.xml?value=extension&key=GeoServerModule
04-Dec-2012 18:00
Web Processing Service parent
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.extension
Web Processing Service parent
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
extension
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
Example 2:
http://cio174:8080/geoserver/rest/about.xml?value=core&key=GeoServerModule
04-Dec-2012 18:00
GeoWebCache (GWC) Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
GeoWebCache (GWC) Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Main Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Main Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Open Web Service Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Open Web Service Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Core Platform Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Core Platform Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
REST Support Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
REST Support Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
REST Configuration Service Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
REST Configuration Service Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
GeoServer JDBC Security Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.security
GeoServer JDBC Security Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
GeoServer LDAP Security Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.security
GeoServer LDAP Security Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Web Coverage Service Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Web Coverage Service Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Web Coverage Service 1.0 Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Web Coverage Service 1.0 Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Web Coverage Service 1.1 Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Web Coverage Service 1.1 Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Core UI Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
Core UI Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Demoes Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
Demoes Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
GWC UI Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
GWC UI Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Security UI Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
Security UI Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
WCS UI Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
WCS UI Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
WFS UI Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
WFS UI Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
WMS UI Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver.web
WMS UI Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Web Feature Service Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Web Feature Service Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
04-Dec-2012 18:00
Web Map Service Module
c:/Program Files/Java/jdk1.6.0_31
cancellieri
The Open Planning Project
org.geoserver
Web Map Service Module
2.3-SNAPSHOT
2.3-SNAPSHOT
The Open Planning Project
1.0
core
Apache Maven
1.6.0_31
2.3-SNAPSHOT
Plexus Archiver
Cheers,
Carlo Cancellieri - GeoSolutions SAS
From: ccancellieri@anonymised.com
To: jdeolive@anonymised.com; andrea.aime@anonymised.com
Date: Thu, 29 Nov 2012 17:27:41 +0000
CC: geoserver-devel@lists.sourceforge.net
Subject: Re: [Geoserver-devel] REST Extensible and customizable versions report
Hy,
I’ll start a new branch soon introducing the pom changes and the core manifest bean loader to start looking into other options.Regards,
Carlo Cancellieri - GeoSolutions SAS
From: ccancellieri@anonymised.com
To: jdeolive@anonymised.com
CC: geoserver-devel@anonymised.comrceforge.net
Subject: RE: [Geoserver-devel] REST Extensible and customizable versions report
Date: Thu, 29 Nov 2012 17:23:23 +0000
Justin,
my intention is to keep things as simple and modular as possible to easily backport this improvement to the 2.2.x.
so: (inline)
One question I have is how will the manifest lookup occur?
Will it be a simple lookup of all manifests on the classpath?
I don’t like to force users to add a specific package dependency only to use a marker interface. So:
- I chose the Manifest class as type to use for the lookup (but I don’t really like this, I’m still looking for a way to collect all the manifests files from the loaded jars… it should be possible from the spring context).
- loading the manifest file for the core (GeoServer, GeoTools) can be delegated to a new bean (no hands on core classes, just xml spring and one new class).
Then, to make extensions ready for this improvement we only have to update their pom.
Will there be some marker attribute used to define a jar as a geoserver plugin?
The REST api looks good.
ok
Also agree for the core|community|… type marker into the parents pom modules.
To limit the depth of the sealing I can try to see if sealing is supported by the maven jar plugin
http://docs.oracle.com/javase/1.4.2/docs/guide/extensions/spec.html#sealing
Introducing this we will also be able to check the jars sign and much more.
Cheers,
Carlo Cancellieri - GeoSolutions SAS
-Justin
On Thu, Nov 29, 2012 at 7:12 AM, Carlo Cancellieri <ccancellieri@anonymised.com> wrote:
Hi all,
to complete the integration of GeoServer (and all of the installed plugin) into our continuous integration environment I need to provide a rest service to expose (at least):
… release (version)
… revision (svn tag or git hash)
… build date (optional)
for GeoServer and all of the installed extensions (f.e.):
… monitoring
… control flow
plus other custom plugins.
So I need to create an extensible mechanisms to provide those info. There are various possible approaches.
Here is my proposal based on java Manifest + maven and its plugins.
- Each project or extension may register it’s Manifest bean into the spring context
- For each GET request on the /rest/about[.format] path, a file in the ‘.format’ format will be returned listing all of the registered Manifest beans with all of the stored entries.
- The output format can be produced using FreeMarker
Note also that this is an extensible and customisable approach:
- Example on how to extend/customize:
I’ll setup for my custom plugin manifest entries adding hudson environment and build information using maven variables with:
org.apache.maven.plugins
maven-jar-plugin
true
true
${project.build.finalname}
${project.version}
${iteration}
${maven.build.timestamp}
${BUILD_NUMBER}
${BUILD_ID}
${JOB_NAME}
${BUILD_TAG}
${EXECUTOR_NUMBER}
${JAVA_HOME}
${WORKSPACE}
${HUDSON_URL}
${SVN_REVISION}
${SVN_TAG}
The result will be a file with some more information (coming from my extension build) into the custom plugin section.
- A simple example for geoserver with monitoring plugin installed into the lib dir:
doing a get on http://GEOSERVER/rest/about.xml (with username and password)
will result in something like:
..--SNAPSHOT
....--rc<</
daabbfaafbbfddbbbeffabbbb674bbbb1361ddd<
--SNAPSHOT
....--rc<</
fff8aaaf435477737fff915bbbc3862cccb145<<
..--SNAPSHOT
....--rc<</
fff8aaaf435477737fff915bbbc3862cccb146<<
- A simple example for geoserver with monitoring and my custom plugin installed into the lib dir:
get http://GEOSERVER/rest/about.xml
will result in something like:
..--SNAPSHOT
....--rc<</
daabbfaafbbfddbbbeffabbbb674bbbb1361ddd<
--SNAPSHOT
....--rc<</
fff8aaaf435477737fff915bbbc3862cccb145<<
..--SNAPSHOT
....--rc<</
fff8aaaf435477737fff915bbbc3862cccb146<<
1.0.--SNAPSHOT
....--rc<</
MyCustom
..--SNAPSHOT
...
9<<
<
GEO_TS_GEOSERVER_MyCustom_BUILD
2<<
<
..
...
http://....
r093<<
REL_79<<
Note also that non maven project can still use this using their custom (ant?) mechanisms to update their /META-INF/MANIFEST.MF file.
What do you think about this? May I have to produce a proposal page? is it possible to have this on the 2.2.x branch (in the future)?
Ref.:
http://maven.apache.org/shared/maven-archiver/examples/manifest.html
http://docs.oracle.com/javase/…//docs/api/java/util/jar/Manifest.html
https://github.com/kevinsawicki/github-maven-example/blob/master/example/pom.xml
Cheers,
Carlo Cancellieri - GeoSolutions SAS
Keep yourself connected to Go Parallel:
VERIFY Test and improve your parallel project with help from experts
and peers. http://goparallel.sourceforge.net
Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel
–
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.
------------------------------------------------------------------------------ Keep yourself connected to Go Parallel: VERIFY Test and improve your parallel project with help from experts and peers. http://goparallel.sourceforge.net
_______________________________________________ Geoserver-devel mailing list Geoserver-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geoserver-devel