[Geoserver-devel] GSIP 92: allow plugins to modify the WMS MapContent before rendering

Hi,
here is a new GSIP about a new extension point, allowing plugin implementors to
manipulate the MapContent before it gets into the rendering engine.

It’s basically an extension to the DispatcherCallback: just like we can review and modify at will
a request during its evolution, the MapContentCallback is allowed to review and modify the
MapContent before it gets into the rendering engine.

http://geoserver.org/display/GEOS/GSIP+92±+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Opinions, discussions and votes welcomed :slight_smile:

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


+1, we discussed this internally and thought that the use case is
generic enough to open up an extension point.

Others might find themselves wanting this feature as well.

Regards,
Simone Giannecchini

Our support, Your Success! Visit http://opensdi.geo-solutions.it for
more information.

Ing. Simone Giannecchini
@simogeo
Founder/Director

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 333 8128928

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Mon, Jan 28, 2013 at 4:57 PM, Andrea Aime
<andrea.aime@anonymised.com> wrote:

Hi,
here is a new GSIP about a new extension point, allowing plugin implementors
to
manipulate the MapContent before it gets into the rendering engine.

It's basically an extension to the DispatcherCallback: just like we can
review and modify at will
a request during its evolution, the MapContentCallback is allowed to review
and modify the
MapContent before it gets into the rendering engine.

http://geoserver.org/display/GEOS/GSIP+92+-+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Opinions, discussions and votes welcomed :slight_smile:

Cheers
Andrea

--

Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Do you have some ideas for use case? I wonder where this is coming from.
Are there specific plugins that are requesting this facility?

Notice: This email and any attachments are confidential. If received in error please destroy and immediately notify us. Do not copy or disclose the contents.

One use could be to make WMS decorations an optional extension rather than baked-in functionality. I imagine this isn’t what drove Andrea to write the GSIP though.

···

On Mon, Jan 28, 2013 at 4:51 PM, Phil Scadden <p.scadden@anonymised.com> wrote:

Do you have some ideas for use case? I wonder where this is coming from.
Are there specific plugins that are requesting this facility?

Notice: This email and any attachments are confidential. If received in error please destroy and immediately notify us. Do not copy or disclose the contents.


Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only – learn more at:
http://p.sf.net/sfu/learnnow-d2d


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Looks good. I wonder though if it’s forseen that additional callbacks for a GetMap operation will be required if the name GetMapCallback might be more suitable. It would also set a consistent precedent for future operations that might require a callback interface, GetFeatureCallback, etc…

No strong opinion though, just my first thought was it seemed a bit narrow of a case to break out a full blown extension point, but i could be wrong about that.

···

On Mon, Jan 28, 2013 at 2:53 PM, David Winslow <dwinslow@anonymised.com> wrote:

One use could be to make WMS decorations an optional extension rather than baked-in functionality. I imagine this isn’t what drove Andrea to write the GSIP though.


David Winslow
OpenGeo - http://opengeo.org/


Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only – learn more at:
http://p.sf.net/sfu/learnnow-d2d


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.

On Mon, Jan 28, 2013 at 4:51 PM, Phil Scadden <p.scadden@anonymised.com> wrote:

Do you have some ideas for use case? I wonder where this is coming from.
Are there specific plugins that are requesting this facility?

Notice: This email and any attachments are confidential. If received in error please destroy and immediately notify us. Do not copy or disclose the contents.


Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only – learn more at:
http://p.sf.net/sfu/learnnow-d2d


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

+1. Looks interesting and useful.

How are multiple callbacks ordered? In the order registered? (I am not familiar with the detailed behaviour of dispatcher callback.)

Could this be used to implement things like clustering (depicting multiple close features with a single marker)?

Kind regards,
Ben.

On 28/01/13 23:57, Andrea Aime wrote:

Hi,
here is a new GSIP about a new extension point, allowing plugin
implementors to
manipulate the MapContent before it gets into the rendering engine.

It's basically an extension to the DispatcherCallback: just like we can
review and modify at will
a request during its evolution, the MapContentCallback is allowed to
review and modify the
MapContent before it gets into the rendering engine.

http://geoserver.org/display/GEOS/GSIP+92+-+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Opinions, discussions and votes welcomed :slight_smile:

Cheers
Andrea

--

Our support, Your Success! Visit http://opensdi.geo-solutions.it for
more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
Ben Caradoc-Davies <Ben.Caradoc-Davies@anonymised.com>
Software Engineer
CSIRO Earth Science and Resource Engineering
Australian Resources Research Centre

On Mon, Jan 28, 2013 at 10:51 PM, Phil Scadden <p.scadden@anonymised.com> wrote:

Do you have some ideas for use case? I wonder where this is coming from.
Are there specific plugins that are requesting this facility?

The proposal contains the first example: WMS EO bands layer peculiar requirements

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Tue, Jan 29, 2013 at 1:39 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

Looks good. I wonder though if it’s forseen that additional callbacks for a GetMap operation will be required if the name GetMapCallback might be more suitable. It would also set a consistent precedent for future operations that might require a callback interface, GetFeatureCallback, etc…

No strong opinion though, just my first thought was it seemed a bit narrow of a case to break out a full blown extension point, but i could be wrong about that.

The idea is that WMS-EO bands management is too alien to the WMS spec to stick it right in, that’s why an
extension point has been devised, so that we don’t have to litter code with its specific behaviors.

GetMapCallback sounds good, wondering what the other methods in the callback could be though?
Maybe we could invoke callbacks upon adding each layer?

Layer beforeLayer(WebMapContent content, Layer layer);

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Tue, Jan 29, 2013 at 3:51 AM, Ben Caradoc-Davies <Ben.Caradoc-Davies@anonymised.com> wrote:

+1. Looks interesting and useful.

How are multiple callbacks ordered? In the order registered? (I am not familiar with the detailed behaviour of dispatcher callback.)

Yes, in the order of registration unless they implement the ExtensionPriority interface

Could this be used to implement things like clustering (depicting multiple close features with a single marker)?

Hum, yes, it could be used to do that, but we have rendering transformations already doing that.

However I can imagine cases in which a plugin literally swaps the origin layer under the WMS
feet for some reason, in which case this approach would make more sense, or force a different
style based on the user right.
Also, it could be used to implement certain optimization that are not possible in the rendering
chain itself, for example:

  • when cross layer filtering is in use, notice that the two layers involved are both coming from
    the same JDBC database and replace cross layer filtering with a native spatial join
  • having soft information about the layer’s nature, know that a layer is “covering” its bbox,
    and if so, remove all layers below it in the map content to speed up rendering

David’s suggestion to re-implement decorations (and by extension, global watermaking)
using this tool is also a fitting one, MapContent allows for user drawn layers, one of those
painting the decorations could be added into the MapContent in the callback, avoiding
the need to have decoration support spread around the code base (we have it in
at least two different places now).

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Tue, Jan 29, 2013 at 12:03 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Tue, Jan 29, 2013 at 1:39 AM, Justin Deoliveira <jdeolive@anonymised.com>wrote:

Looks good. I wonder though if it's forseen that additional callbacks for
a GetMap operation will be required if the name GetMapCallback might be
more suitable. It would also set a consistent precedent for future
operations that might require a callback interface, GetFeatureCallback,
etc...

No strong opinion though, just my first thought was it seemed a bit
narrow of a case to break out a full blown extension point, but i could be
wrong about that.

The idea is that WMS-EO bands management is too alien to the WMS spec to
stick it right in, that's why an
extension point has been devised, so that we don't have to litter code
with its specific behaviors.

GetMapCallback sounds good, wondering what the other methods in the
callback could be though?
Maybe we could invoke callbacks upon adding each layer?

Layer beforeLayer(WebMapContent content, Layer layer);

Yeah, that makes sense. Another method that could be useful is one that
provides the WebMap object to the callback. I guess something like:

WebMap afterRender(WebMap map, WebMapContent content);

Cheers
Andrea

--

Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

+1 - it will be interesting to see what people do with it.

Notice: This email and any attachments are confidential. If received in error please destroy and immediately notify us. Do not copy or disclose the contents.

Added a +1 to that page, you have already the opportunity to use DirectLayer. If we ever get some “composition” layers (blur effects etc…) this would be a good opportunity to add them.


Jody Garnett

On Tuesday, 29 January 2013 at 2:57 AM, Andrea Aime wrote:

Hi,
here is a new GSIP about a new extension point, allowing plugin implementors to
manipulate the MapContent before it gets into the rendering engine.

It’s basically an extension to the DispatcherCallback: just like we can review and modify at will
a request during its evolution, the MapContentCallback is allowed to review and modify the
MapContent before it gets into the rendering engine.

http://geoserver.org/display/GEOS/GSIP+92±+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Opinions, discussions and votes welcomed :slight_smile:

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it



Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only – learn more at:
http://p.sf.net/sfu/learnnow-d2d


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Added a +1 to the page.

2013/1/30 Jody Garnett <jody.garnett@anonymised.com>

Added a +1 to that page, you have already the opportunity to use DirectLayer. If we ever get some “composition” layers (blur effects etc…) this would be a good opportunity to add them.


Jody Garnett

On Tuesday, 29 January 2013 at 2:57 AM, Andrea Aime wrote:

Hi,
here is a new GSIP about a new extension point, allowing plugin implementors to
manipulate the MapContent before it gets into the rendering engine.

It’s basically an extension to the DispatcherCallback: just like we can review and modify at will
a request during its evolution, the MapContentCallback is allowed to review and modify the
MapContent before it gets into the rendering engine.

http://geoserver.org/display/GEOS/GSIP+92±+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Opinions, discussions and votes welcomed :slight_smile:

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it



Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only – learn more at:
http://p.sf.net/sfu/learnnow-d2d


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

+1

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Alessio Fabiani
@alfa7691
Founder/Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 331 6233686

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Wed, Jan 30, 2013 at 9:33 AM, Christian Mueller <mcrmcr21@anonymised.com> wrote:

Added a +1 to the page.

2013/1/30 Jody Garnett <jody.garnett@anonymised.com>

Added a +1 to that page, you have already the opportunity to use DirectLayer. If we ever get some “composition” layers (blur effects etc…) this would be a good opportunity to add them.


Jody Garnett

On Tuesday, 29 January 2013 at 2:57 AM, Andrea Aime wrote:

Hi,
here is a new GSIP about a new extension point, allowing plugin implementors to
manipulate the MapContent before it gets into the rendering engine.

It’s basically an extension to the DispatcherCallback: just like we can review and modify at will
a request during its evolution, the MapContentCallback is allowed to review and modify the
MapContent before it gets into the rendering engine.

http://geoserver.org/display/GEOS/GSIP+92±+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Opinions, discussions and votes welcomed :slight_smile:

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it



Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only – learn more at:
http://p.sf.net/sfu/learnnow-d2d


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Ok, that starts to look like a request lifecycle thing. How about the following then:

interface GetMapCallback {

void initRequest(WebMapRequest request);
void initMapContent(WebMapContent content);
Layer beforeLayer(WebMapContent content, Layer layer);
WebMapContent beforeRender(WebMapContent mapContent);
WebMap finished(WebMap map, WebMapContent content);

}

Why so many methods? Well, because when time and elevation (or other WMS dimensions) are in play, we actually can generate multiple maps for a single output, which happens for example in the case of animated gifs (we have to generate the frames of the animation as separate maps).
So the request would have one starting point (initRequest) and one ending pont (finished), but it will have more than one set of initMapContent/beforeLayer*/beforeRender.

Having a global start and end point should make it easier for the callback to handle state via threadlocals.

Of course with this many methods we’d also make a GetMapCallbackAdapter with empty implementations.

Cheers
Andrea

···

GetMapCallback sounds good, wondering what the other methods in the callback could be though?
Maybe we could invoke callbacks upon adding each layer?

Layer beforeLayer(WebMapContent content, Layer layer);

Yeah, that makes sense. Another method that could be useful is one that provides the WebMap object to the callback. I guess something like:

WebMap afterRender(WebMap map, WebMapContent content);

Looks great to me.

···

On Wed, Jan 30, 2013 at 8:47 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Tue, Jan 29, 2013 at 4:33 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

Ok, that starts to look like a request lifecycle thing. How about the following then:

interface GetMapCallback {

void initRequest(WebMapRequest request);
void initMapContent(WebMapContent content);

Layer beforeLayer(WebMapContent content, Layer layer);

WebMapContent beforeRender(WebMapContent mapContent);
WebMap finished(WebMap map, WebMapContent content);

}

Why so many methods? Well, because when time and elevation (or other WMS dimensions) are in play, we actually can generate multiple maps for a single output, which happens for example in the case of animated gifs (we have to generate the frames of the animation as separate maps).
So the request would have one starting point (initRequest) and one ending pont (finished), but it will have more than one set of initMapContent/beforeLayer*/beforeRender.

Having a global start and end point should make it easier for the callback to handle state via threadlocals.

Of course with this many methods we’d also make a GetMapCallbackAdapter with empty implementations.

Cheers

Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it



Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

GetMapCallback sounds good, wondering what the other methods in the callback could be though?
Maybe we could invoke callbacks upon adding each layer?

Layer beforeLayer(WebMapContent content, Layer layer);

Yeah, that makes sense. Another method that could be useful is one that provides the WebMap object to the callback. I guess something like:

WebMap afterRender(WebMap map, WebMapContent content);

On Wed, Jan 30, 2013 at 5:42 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

Looks great to me.

Proposal updated with the suggested changes:
http://geoserver.org/display/GEOS/GSIP+92±+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Jan 31, 2013 at 10:44 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Wed, Jan 30, 2013 at 5:42 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

Looks great to me.

Proposal updated with the suggested changes:
http://geoserver.org/display/GEOS/GSIP+92±+Allow+plugins+to+modify+WMS+MapContent+before+map+rendering

And pull requests available if anybody wants to review:
https://github.com/geoserver/geoserver/pull/132

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it