Re: [Geoserver-devel] geotools/geoserver iText and geoPDF

2011-02-02 Thread Andrea Aime
On Tue, Feb 1, 2011 at 9:38 AM, Frank Gasdorf
fg...@users.sourceforge.net wrote:
 Hi List, Hi Jody
 First of all, sorry for cross-posting!

 Last Night I had a look at the iText Project [1] Jody has mentioned and I
 have to dive deeper to get a clue what it does and which part of the API is
 currently used by geotools/geoserver.
 What I like to get is a pdf file where the user could use (but not required)
 the free terrago toolbar [2] to measure distances and areas and type lat/lon
 coordinates to jump to locations within the pdf. But it is required to have
 CRS information about the data/content within the document. In addition it
 would be great to have layers in the hierarchy view (Index) and search
 capabilities on the feature content (attribute values).
 But however, would't that be nice features for all geoserver/geotools folks
 and end-users to get a ready to go pdf for the field and have these
 capabilities.
 Maybe some of you could point me to the code where the pdf stuff is taking
 place ... I'm going to read the adope pdf documentation [4] to find a hint
 if some TAGs are missed to act like a geopdf. And properly it's already
 supported by iText to create the meta information. An other relevant
 documentation is PDF Geo-registration Encoding Best Practice Version
 2.2 at OGC standards best practices home [3].
 Do you think we could create an enhancement in geotools/geoserver for that?

I don't know, didn't had the time to investigate the links you provided.
Howerver, the code that generates PDF in GeoServer is here:
http://svn.codehaus.org/geoserver/trunk/src/wms/src/main/java/org/geoserver/wms/map/PDFMapResponse.java

Basically we ask iText to give up a Graphics2D object and then we draw
on top of it as if it was a java2d one.

That does not give an occasion to do anything in between layers
getting rendered.
I guess one could split the map into n single maps, yet that would break
labeling solid (as it has to happen at the end of the rendering to
have all labels
conflict resolve with each other and stay on top).
That too can be handled somehow but it would require splitting the styles
into components with text symbolizers and components without

As for setting in the necessary metadata, I hope iText provides the
necessary support for that (but I'm confident it might)

Cheers
Andrea

PS: ah, another possible hack is to create a custom label cache that
just wraps the standard one. This is because the label cache is informed
on layers starting and stopping being rendered.
Yet another possibility would be to make streaming renderer subclassable,
but it's not on purpose, not really though to be a base class

-- 
Ing. Andrea Aime
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584962313
fax:     +39 0584962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


[Geoserver-devel] GeoServer Rendering Enhancement

2011-02-02 Thread Steve Way
Hi All,

I would like to propose an enhancement to the rendering within GeoServer.

With the recent release, Geoserver now be default uses StreamingRenderer, as 
oppose to previously when ShapefileRenderer was the default renderer.

The good thing  about the ShapefileRenderer, is that it made a call to 
StreamingRenderer.  Due to the architecture of ShapefileRenderer, we were able 
to make the method which calls StreamingRenderer multithreaded, so that if 
multiple WMS layers are called (For example in OS On Demand there is an OS 
MasterMap product which contains 6 layers: TOPOGRAPHICAREA, TOPOGRPAHICLINE, 
BOUNDARYLINE, CARTOGRPAHICSYMBOL, TOPOGRPAHICPOINT AND CARTOGRAPHICTEXT) using 
the parallel approach, we have seen tremendous improvements in performance 
compared to when the ShapefileRenderer uses a single thread for rendering all 6 
layers at the same time.

I understand that ShapefileRenderer is now in an unsupported state, so maybe we 
can migrate this to be a WMSRenderer as I'm not sure of the different use cases 
away from WMS requests.

Thanks,
Steve


DISCLAIMER:

This email may contain confidential information and is intended only for the 
use of the specific individual(s) to which it is addressed. If you are not the 
intended recipient of this email, you are hereby notified that any unauthorized 
use, dissemination or copying of this email or the information contained in it 
or attached to it is strictly prohibited. If you received this message in 
error, please immediately notify the sender at Infotech or 
mail.ad...@infotech-enterprises.com and delete the original message.
--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] GeoServer Rendering Enhancement

2011-02-02 Thread Andrea Aime
On Wed, Feb 2, 2011 at 10:04 AM, Steve Way
steve@infotech-enterprises.com wrote:
 Hi All,



 I would like to propose an enhancement to the rendering within GeoServer.



 With the recent release, Geoserver now be default uses StreamingRenderer, as
 oppose to previously when ShapefileRenderer was the default renderer.



 The good thing  about the ShapefileRenderer, is that it made a call to
 StreamingRenderer.  Due to the architecture of ShapefileRenderer, we were
 able to make the method which calls StreamingRenderer multithreaded, so that
 if multiple WMS layers are called (For example in OS On Demand there is an
 OS MasterMap product which contains 6 layers: TOPOGRAPHICAREA,
 TOPOGRPAHICLINE, BOUNDARYLINE, CARTOGRPAHICSYMBOL, TOPOGRPAHICPOINT AND
 CARTOGRAPHICTEXT) using the parallel approach, we have seen tremendous
 improvements in performance compared to when the ShapefileRenderer uses a
 single thread for rendering all 6 layers at the same time.

I have reservations about this approach but we can discuss it.
First off, the StreamingRenderer is now internally threaded, with one
thread reading
from the data sources and a second one painting.

I can see how rendering data in parallel might improve response times
for the single
user case, but in general I believe this will be detrimental for a
number of reasons
(I'll be happy to be proven wrong though, been banging my head on
rendering speed
 for a while and help is sure welcomed).
Why I think having blinding multi-rendering is going to be more
trouble than an improvement:
- in order to render n layers in parallel you need to allocate n
drawing surfaces, with
  all but the first one 4 byte deep. This makes the memory usage uncontrollable,
  there should be some limits otherwise this approach will take GS to
OOM in no time
  Btw, this would also break the wms rendering size
  limits, as the memory to be used is computed taking into account the
normal behavior
  of the streaming renderer
- years ago I was contracted to look into uDig trashing the entire
operating system
  while trying to just render a map made of 20-some shapefiles.
Looking into it I
  discovered uDig was rendering exactly as you suggest, one thread per layer,
  and the file system layer was completely thrashed due to that.
  This kind of consideration is quite common and it's by no means limited to
  the file system. On the file system you have the disk head jump around like
  crazy if you access too many files in parallel, on a database you would end up
  using n separate connections (one per layer coming from a db) and thus would
  starve the connection pool, if the server is a remote one you would break the
  common rule of not using more than 2-6 parallel accesses (something browsers
  still abide to)
- java2d rendering has a serious scalability problem that becomes evident once
  you start using many threads rendering in parallel. It seems that Oracle has
  made the bug report in the java database inaccessible but there is still
  some threads about me complaning:
  
http://www.java.net/forum/topic/javadesktop/java-desktop-technologies/java-2d/poor-java2d-scalability-server-applicatio-0
  The bug is the reason why none of the java based servers could get good
  numbers above 4-8 concurrent clients in the FOSS4G 2010 wms shootout:
  the global synchronizations inside the antialiased rendering make it
impossible
  to have more than 2-4 threads actually active inside the antialiased
rasterization
  path (this is why I went for parallelizing data loading and
rendering instead).
- in the past months I actually made a module called control-flow
whose purpose
  is to limit parallel executing request in order to maximize throughput and
  stability under high load. The GS instance where I installed it
became quite a bit
  more stable and were able to serve more requests per day.

Long story short, I'm pretty sure you can get improvements in the
single user/few layers
 case (few layers - single digit) but in order to make that approach
work in the general
care a lot of care must be taken. The following ideas should be taken
into account
when designing a layer parallel renderer for server side usage:
- limit the number of parallel rendering tasks so that the memory usage does not
  go above the wms rendering limits
- limit the parallel rendering working by zones, so that we cannot
have 10 layers
  all hitting the same database in parallel, or we are going to starve
the connection
  pool (this is actually something the admin should be able to
configure, if you have
  a connection pool of 20-40 connections better never have more than
2, otherwise
  bye bye serving concurrent clients)
- make sure anyways the global count of rendering threads does not
exceed a configurable
  n  (wms performance shootout suggest n = 8 due to the java2d
scalability issue)
  to avoid having the jvm just sit and wait for the java2d
synchronized blocks to
  be freed

The above is actually the reason why I did not 

Re: [Geoserver-devel] geotools/geoserver iText and geoPDF

2011-02-02 Thread Jody Garnett
Just to follow up andrea's ideas.

In udig we make a custom label cache and throw it at several streaming 
renderers (so they can render in different threads) - so the idea of a custom 
label cache works very well.

We also do a trick of increasing the page resolution; and then also using a 
visitor to edit the styles (so lines and fonts are bigger); and then rescale 
that output down to the final page size. This results in a larger; but higher 
quality pdf.

Jody

On 02/02/2011, at 6:36 PM, Andrea Aime wrote:

 On Tue, Feb 1, 2011 at 9:38 AM, Frank Gasdorf
 fg...@users.sourceforge.net wrote:
 Hi List, Hi Jody
 First of all, sorry for cross-posting!
 
 Last Night I had a look at the iText Project [1] Jody has mentioned and I
 have to dive deeper to get a clue what it does and which part of the API is
 currently used by geotools/geoserver.
 What I like to get is a pdf file where the user could use (but not required)
 the free terrago toolbar [2] to measure distances and areas and type lat/lon
 coordinates to jump to locations within the pdf. But it is required to have
 CRS information about the data/content within the document. In addition it
 would be great to have layers in the hierarchy view (Index) and search
 capabilities on the feature content (attribute values).
 But however, would't that be nice features for all geoserver/geotools folks
 and end-users to get a ready to go pdf for the field and have these
 capabilities.
 Maybe some of you could point me to the code where the pdf stuff is taking
 place ... I'm going to read the adope pdf documentation [4] to find a hint
 if some TAGs are missed to act like a geopdf. And properly it's already
 supported by iText to create the meta information. An other relevant
 documentation is PDF Geo-registration Encoding Best Practice Version
 2.2 at OGC standards best practices home [3].
 Do you think we could create an enhancement in geotools/geoserver for that?
 
 I don't know, didn't had the time to investigate the links you provided.
 Howerver, the code that generates PDF in GeoServer is here:
 http://svn.codehaus.org/geoserver/trunk/src/wms/src/main/java/org/geoserver/wms/map/PDFMapResponse.java
 
 Basically we ask iText to give up a Graphics2D object and then we draw
 on top of it as if it was a java2d one.
 
 That does not give an occasion to do anything in between layers
 getting rendered.
 I guess one could split the map into n single maps, yet that would break
 labeling solid (as it has to happen at the end of the rendering to
 have all labels
 conflict resolve with each other and stay on top).
 That too can be handled somehow but it would require splitting the styles
 into components with text symbolizers and components without
 
 As for setting in the necessary metadata, I hope iText provides the
 necessary support for that (but I'm confident it might)
 
 Cheers
 Andrea
 
 PS: ah, another possible hack is to create a custom label cache that
 just wraps the standard one. This is because the label cache is informed
 on layers starting and stopping being rendered.
 Yet another possibility would be to make streaming renderer subclassable,
 but it's not on purpose, not really though to be a base class
 
 -- 
 Ing. Andrea Aime
 Technical Lead
 
 GeoSolutions S.A.S.
 Via Poggio alle Viti 1187
 55054  Massarosa (LU)
 Italy
 
 phone: +39 0584962313
 fax: +39 0584962313
 
 http://www.geo-solutions.it
 http://geo-solutions.blogspot.com/
 http://www.linkedin.com/in/andreaaime
 http://twitter.com/geowolf
 
 -


--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] geotools/geoserver iText and geoPDF

2011-02-02 Thread Andrea Aime
On Wed, Feb 2, 2011 at 1:22 PM, Jody Garnett jody.garn...@gmail.com wrote:
 Just to follow up andrea's ideas.

 In udig we make a custom label cache and throw it at several streaming 
 renderers (so they can render in different threads) - so the idea of a custom 
 label cache works very well.

Right, did not think about it, that also solves the problem of having
all the labels keep on conflict resolutiong with each other,
one just has to kick the label cache drawing when all the layers have
done rendering

 We also do a trick of increasing the page resolution; and then also using a 
 visitor to edit the styles (so lines and fonts are bigger); and then rescale 
 that output down to the final page size. This results in a larger; but higher 
 quality pdf.

That one is no more necessary, we do have dpi control in the renderer
now (have been for quite some time)

Cheers
Andrea

-- 
Ing. Andrea Aime
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584962313
fax:     +39 0584962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] Basic WPS docs

2011-02-02 Thread Andrea Aime
On Wed, Feb 2, 2011 at 2:15 AM, Mike Pumphrey m...@opengeo.org wrote:
 Hi there.  I just submitted a patch with some basic WPS docs.

   http://jira.codehaus.org/browse/GEOS-4350

 To make it easier for people to read (and to see the graphics), I committed 
 this first draft on 2.1.x.  It should show up here after the next nightly 
 build:

   http://docs.geoserver.org/stable/en/user/extensions/wps/index.html

 Feedback appreciated.

A few notes:
- the names of processes are case sensitive. Actually in OGC style
request that is normal,
  all keys are case insenstive, all values are case sensitive. Process
names are no exception,
  just like feature type names, coverage names, and wms layer names
- the buffer in the example returns a square... correct answer given
the params, but a little
  outside what one would expect from a buffer operation
- in the geoserver processes paragraph you say These functions have
the added bonus
  of being able to operate on existing layers in GeoServer, and can
even write the output
  to a new GeoServer layer.
  Actually any process can work against existing GS layers, it just
needs to be able to
  consume a feature collection or a grid coverage. And not even that
in some cases, the
  JTS processes can feed off the GS layers via the internal WFS
request if that one is
  chained in gs:CollectGeometries which turns the feature collection
into a single geometry
  (it collects everything into a big multi-geometry)
- the trick GS uses to get data off the internal WFS/WCS is to use a special URL
  for the wfs/wcs server, http://geoserver/wfs and
http://geoserver/wcs (if memory
  serves me right) and that part is just a GS convention, it's not
anything that is
  part of the standard
- that said GS can feed off any remote WFS/WCS just fine (provided the chosen
  output format can be parsed by GS), and in general, but any remote call
  whatsoever that returns something parseable (it might be a php
script returning GML
  for example)

Cheers
Andrea

-- 
Ing. Andrea Aime
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584962313
fax:     +39 0584962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] GeoServer Rendering Enhancement

2011-02-02 Thread Andrea Aime
On Wed, Feb 2, 2011 at 11:11 AM, Andrea Aime
andrea.a...@geo-solutions.it wrote:
 The above is actually the reason why I did not try to pursue this
 design in the past,
 getting it right is relatively hard and it only helps on light loads,
 while it makes everything
 way easier to break under high load. Given GS is a server side
 application, one that
 is meant to serve multiple requests in parallel, I left the fully
 parallelized approach
 to desktop apps (where it makes a lot more sense, but still should be guarded 
 to
 avoid chewing up all the machine resources on non toy maps).

Meh, as usual I end up sounding a lot more negative than I intend to.
If we can get a speed improvements on the lighter loads I'm all for it,
we just need to address it very carefully so that all the work that has
been done in the past to ensure proper resource usage (and thus,
stability) is not undermined by the newest changes

Cheers
Andrea

-- 
Ing. Andrea Aime
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584962313
fax:     +39 0584962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


[Geoserver-devel] [jira] Created: (GEOS-4352) textsymbolizers always on top of everything else?!

2011-02-02 Thread JIRA
textsymbolizers always on top of everything else?!
--

 Key: GEOS-4352
 URL: http://jira.codehaus.org/browse/GEOS-4352
 Project: GeoServer
  Issue Type: Bug
Affects Versions: 2.0.2
 Environment: windows, geoserver with postgresql  postgis
Reporter: Teresa Böttcher
Assignee: Andrea Aime


I have a small issue with SLD, specifically the order in which symbolizers 
(mainly the textsymbolizer) are presented/rendered. 

Example: 
1 layer roads with roads.sld (linesymbolizers  textsymbolizers)
1 layer POI with poi.sld (pointsymbolizers  textsymbolizers)
Both are grouped together, with the roads-layer being drawn first. 

Everything seems to be according to the OGC specification and/or the GeoServer 
user manual, except for the textsymbolizer (of the roads.sld). These labels are 
ALWAYS on top of everything else. While I understand that these labels cannot 
know the specific dimension of the POI-graphics in different SLD-file, I 
would very much prefer the graphics to just overlap the street-labels (honoring 
the whole painters-model).

(I also tried to get around this by using textsymbolizers with graphics for the 
POIs. But unfortunately I have a number of POIs as polygons, which do not work 
with the textsymbolizer. Well, text/labels work at very large scale (e.g. 
1:1200), graphics don't work at all.)

Is this a bug, or just standard GeoServer behavior?

I would really appreciate any help/hints regarding this issue. Thank you. 


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

   

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


[Geoserver-devel] [jira] Created: (GEOS-4353) Reloading configuration and catalog caused a crash

2011-02-02 Thread Mike Stoddart (JIRA)
Reloading configuration and catalog caused a crash
--

 Key: GEOS-4353
 URL: http://jira.codehaus.org/browse/GEOS-4353
 Project: GeoServer
  Issue Type: Bug
Affects Versions: 2.0.2
 Environment: Fedora 12 x64
Reporter: Mike Stoddart
Assignee: Andrea Aime


java.lang.IllegalArgumentException: Parameter message can't not be null. at 
org.apache.wicket.feedback.FeedbackMessage.init(FeedbackMessage.java:101) at 
org.apache.wicket.feedback.FeedbackMessages.error(FeedbackMessages.java:135) at 
org.apache.wicket.Component.error(Component.java:1170) at 
org.geoserver.web.admin.StatusPage$5.onClick(StatusPage.java:141) at 
org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65) at 
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163) at 
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
 at 
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:104)
 at 
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
 at 
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1239) 
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1316) at 
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1418) at 
org.apache.wicket.RequestCycle.request(RequestCycle.java:532) at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at 
org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at 
org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:158)
 at 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
 at 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
 at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
 at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
 at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
 at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
 at 
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
 at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
 at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
 at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) 
at 

[Geoserver-devel] [jira] Created: (GEOS-4354) org.apache.wicket.WicketRuntimeException: Exception in rendering component

2011-02-02 Thread Mike Stoddart (JIRA)
org.apache.wicket.WicketRuntimeException: Exception in rendering component
--

 Key: GEOS-4354
 URL: http://jira.codehaus.org/browse/GEOS-4354
 Project: GeoServer
  Issue Type: Bug
Affects Versions: 2.0.2
 Environment: Fedora 12 x64
Reporter: Mike Stoddart
Assignee: Andrea Aime


While choosing data to publish, I see:

* Reload feature type
* ...

The ... is clickable and clicking it gives this stack dump:


org.apache.wicket.WicketRuntimeException: Exception in rendering component: 
[Component id = message] at 
org.apache.wicket.Component.renderComponent(Component.java:2563) at 
org.apache.wicket.markup.html.WebComponent.onRender(WebComponent.java:60) at 
org.apache.wicket.Component.render(Component.java:2361) at 
org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1298) at 
org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1428) at 
org.apache.wicket.Page.onRender(Page.java:1502) at 
org.apache.wicket.Component.render(Component.java:2361) at 
org.apache.wicket.Page.renderPage(Page.java:913) at 
org.apache.wicket.request.target.component.PageRequestTarget.respond(PageRequestTarget.java:63)
 at 
org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)
 at 
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1245) 
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1316) at 
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1418) at 
org.apache.wicket.RequestCycle.request(RequestCycle.java:532) at 
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:356) at 
org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at 
org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:158)
 at 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
 at 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
 at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
 at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
 at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
 at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
 at 
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
 at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
 at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
 at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
 at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
 at 
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
 at 

Re: [Geoserver-devel] GeoServer Rendering Enhancement

2011-02-02 Thread Andrea Aime
On Wed, Feb 2, 2011 at 3:08 PM, Andrea Aime
andrea.a...@geo-solutions.it wrote:
 On Wed, Feb 2, 2011 at 11:11 AM, Andrea Aime
 andrea.a...@geo-solutions.it wrote:
 The above is actually the reason why I did not try to pursue this
 design in the past,
 getting it right is relatively hard and it only helps on light loads,
 while it makes everything
 way easier to break under high load. Given GS is a server side
 application, one that
 is meant to serve multiple requests in parallel, I left the fully
 parallelized approach
 to desktop apps (where it makes a lot more sense, but still should be 
 guarded to
 avoid chewing up all the machine resources on non toy maps).

 Meh, as usual I end up sounding a lot more negative than I intend to.
 If we can get a speed improvements on the lighter loads I'm all for it,
 we just need to address it very carefully so that all the work that has
 been done in the past to ensure proper resource usage (and thus,
 stability) is not undermined by the newest changes

And following up with a more practical point of view, what would it take
to make such renderer without the risk of getting GS down?
That renderer would need:
- a way to estimate the max number of threads allowed to render in
  parallel without breaking the memory limits (that sets the overall thread
  pool size for the rendering operation)
- a way to tell where each data source is coming from, so that we
  can make a file system zone, a database x zone, a database y zone
  and so on, and ensure no more than x threads from the same rendering
  request hit it at the same time (this can be done, for example, by giving
  each zone a bounded queue and have the threads put or get a token in
  the queue before starting). This might be somewhat more difficult as
  the map context only contains feature collections, so I guess we'd have
  to use custom map layer subclasses that are marked with the respective
  zone
- also set a max number of threads that can work globally (so a global
  thread pool)

I guess that for starters the zone limits and the global thread pool size
could be set by environment variable, this would make for a self contained
rendering class that could be coded and enabled with yet another
system wide variable that allows the brave to try it out.
If it proves not to undermine the stability and througput of GS under load
we can adopt it and turn all the system variables into actual tunables
exposed to the administrator

Performance wise there is also the tradeoff of merging the rendering surfaces:
it takes time to merge togheter two rgba images and if you just render a few
vectors on them in parallel you might actually end up slowing down things

Cheers
Andrea


-- 
Ing. Andrea Aime
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584962313
fax:     +39 0584962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] Basic WPS docs

2011-02-02 Thread Mike Pumphrey
Thanks for the notes, Andrea, this is super helpful.  Follow-ups, below.

 all keys are case insenstive, all values are case sensitive.

Okay, but I do see that service=WPS works as well as service=wps.  Just 
GeoServer being nice, though, I guess.

 - the buffer in the example returns a square... correct answer given the 
 params, but a little
outside what one would expect from a buffer operation

I was looking for an example that would be simple to understand from just 
looking at the coordinates.  If I had created a circle (or polygon equivalent), 
it might be more real world, but the numbers might not be so understandable.  
But I could change the example, though, if you thought it valuable.  It was 
just the first process I came up with.

Also, found it interesting that as is, the values were like -10.067 
instead of -10.0.  :)

 - in the geoserver processes paragraph you say These functions have the 
 added bonus
of being able to operate on existing layers in GeoServer, and can even 
 write the output
to a new GeoServer layer.
Actually any process can work against existing GS layers, it just
...

Okay.  How should I categorize the differences between the gs: and the JTS: 
processes?  (Or is there no important distinction?)  I saw that the request 
builder had an extra entry for VECTOR_LAYER on the gs: processes, which is why 
I made the note.

 - the trick GS uses to get data off the internal WFS/WCS is to use a special 
 URL
for the wfs/wcs server, http://geoserver/wfs and
 http://geoserver/wcs (if memory
serves me right) and that part is just a GS convention, it's not
 anything that is
part of the standard

Okay, I'll make a note of that.

 - that said GS can feed off any remote WFS/WCS just fine (provided the chosen
output format can be parsed by GS), and in general, but any remote call
whatsoever that returns something parseable (it might be a php
 script returning GML
for example)

I'm pretty sure I follow this, but if an example lived somewhere it would be 
great to see it.


Thanks,
Mike Pumphrey
OpenGeo - http://opengeo.org


On 2/2/2011 4:43 AM, Andrea Aime wrote:
 On Wed, Feb 2, 2011 at 2:15 AM, Mike Pumphreym...@opengeo.org  wrote:
  Hi there.  I just submitted a patch with some basic WPS docs.

 http://jira.codehaus.org/browse/GEOS-4350

  To make it easier for people to read (and to see the graphics), I committed 
 this first draft on 2.1.x.  It should show up here after the next nightly 
 build:

 http://docs.geoserver.org/stable/en/user/extensions/wps/index.html

  Feedback appreciated.

 A few notes:
 - the names of processes are case sensitive. Actually in OGC style
 request that is normal,
all keys are case insenstive, all values are case sensitive. Process
 names are no exception,
just like feature type names, coverage names, and wms layer names
 - the buffer in the example returns a square... correct answer given
 the params, but a little
outside what one would expect from a buffer operation
 - in the geoserver processes paragraph you say These functions have
 the added bonus
of being able to operate on existing layers in GeoServer, and can
 even write the output
to a new GeoServer layer.
Actually any process can work against existing GS layers, it just
 needs to be able to
consume a feature collection or a grid coverage. And not even that
 in some cases, the
JTS processes can feed off the GS layers via the internal WFS
 request if that one is
chained in gs:CollectGeometries which turns the feature collection
 into a single geometry
(it collects everything into a big multi-geometry)
 - the trick GS uses to get data off the internal WFS/WCS is to use a special 
 URL
for the wfs/wcs server, http://geoserver/wfs and
 http://geoserver/wcs (if memory
serves me right) and that part is just a GS convention, it's not
 anything that is
part of the standard
 - that said GS can feed off any remote WFS/WCS just fine (provided the chosen
output format can be parsed by GS), and in general, but any remote call
whatsoever that returns something parseable (it might be a php
 script returning GML
for example)

 Cheers
 Andrea


--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] Basic WPS docs

2011-02-02 Thread Andrea Aime
On Wed, Feb 2, 2011 at 8:02 PM, Mike Pumphrey m...@opengeo.org wrote:
 Thanks for the notes, Andrea, this is super helpful.  Follow-ups, below.

 all keys are case insenstive, all values are case sensitive.

 Okay, but I do see that service=WPS works as well as service=wps.  Just 
 GeoServer being nice, though, I guess.

Yep, that's my understanding as well.

 - the buffer in the example returns a square... correct answer given the 
 params, but a little
    outside what one would expect from a buffer operation

 I was looking for an example that would be simple to understand from just 
 looking at the coordinates.  If I had created a circle (or polygon 
 equivalent), it might be more real world, but the numbers might not be so 
 understandable.  But I could change the example, though, if you thought it 
 valuable.  It was just the first process I came up with.

Yeah, a circle would be made of a lot of coordinates. No biggie.

 Also, found it interesting that as is, the values were like -10.067 
 instead of -10.0.  :)

 - in the geoserver processes paragraph you say These functions have the 
 added bonus
    of being able to operate on existing layers in GeoServer, and can even 
 write the output
    to a new GeoServer layer.
    Actually any process can work against existing GS layers, it just
 ...

 Okay.  How should I categorize the differences between the gs: and the JTS: 
 processes?  (Or is there no important distinction?)  I saw that the request 
 builder had an extra entry for VECTOR_LAYER on the gs: processes, which is 
 why I made the note.

JTS processes are made to expose jts capabilities and work on single geomtries.
GS processes... are all over the place, they do pretty much everything now.
There is a number of them that is specific to GS though, such as gs:Import

VECTOR_LAYER is something every process consuming feature collection will
have.


 - the trick GS uses to get data off the internal WFS/WCS is to use a special 
 URL
    for the wfs/wcs server, http://geoserver/wfs and
 http://geoserver/wcs (if memory
    serves me right) and that part is just a GS convention, it's not
 anything that is
    part of the standard

 Okay, I'll make a note of that.

 - that said GS can feed off any remote WFS/WCS just fine (provided the chosen
    output format can be parsed by GS), and in general, but any remote call
    whatsoever that returns something parseable (it might be a php
 script returning GML
    for example)

 I'm pretty sure I follow this, but if an example lived somewhere it would be 
 great to see it.

Don't have stuff handy now (I'm stuck in bed with fever and the
notebook does not
have everything I need in working order) I'll try to look up more
examples when I get
back on my feet

Cheers
Andrea


-- 
Ing. Andrea Aime
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584962313
fax:     +39 0584962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-

--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Re: [Geoserver-devel] Basic WPS docs

2011-02-02 Thread Mike Pumphrey
Thanks, Andrea, and don't worry about the example.  I updated the docs, and 
ported to trunk.

Thanks,
Mike Pumphrey
OpenGeo - http://opengeo.org


On 2/2/2011 11:21 AM, Andrea Aime wrote:
 On Wed, Feb 2, 2011 at 8:02 PM, Mike Pumphreym...@opengeo.org  wrote:
  Thanks for the notes, Andrea, this is super helpful.  Follow-ups, below.

  all keys are case insenstive, all values are case sensitive.

  Okay, but I do see that service=WPS works as well as service=wps.  Just 
 GeoServer being nice, though, I guess.

 Yep, that's my understanding as well.

  - the buffer in the example returns a square... correct answer given the 
 params, but a little
  outside what one would expect from a buffer operation

  I was looking for an example that would be simple to understand from just 
 looking at the coordinates.  If I had created a circle (or polygon 
 equivalent), it might be more real world, but the numbers might not be so 
 understandable.  But I could change the example, though, if you thought it 
 valuable.  It was just the first process I came up with.

 Yeah, a circle would be made of a lot of coordinates. No biggie.

  Also, found it interesting that as is, the values were like -10.067 
 instead of -10.0.  :)

  - in the geoserver processes paragraph you say These functions have the 
 added bonus
  of being able to operate on existing layers in GeoServer, and can even 
 write the output
  to a new GeoServer layer.
  Actually any process can work against existing GS layers, it just
  ...

  Okay.  How should I categorize the differences between the gs: and the JTS: 
 processes?  (Or is there no important distinction?)  I saw that the request 
 builder had an extra entry for VECTOR_LAYER on the gs: processes, which is 
 why I made the note.

 JTS processes are made to expose jts capabilities and work on single 
 geomtries.
 GS processes... are all over the place, they do pretty much everything now.
 There is a number of them that is specific to GS though, such as gs:Import

 VECTOR_LAYER is something every process consuming feature collection will
 have.


  - the trick GS uses to get data off the internal WFS/WCS is to use a 
 special URL
  for the wfs/wcs server, http://geoserver/wfs and
  http://geoserver/wcs (if memory
  serves me right) and that part is just a GS convention, it's not
  anything that is
  part of the standard

  Okay, I'll make a note of that.

  - that said GS can feed off any remote WFS/WCS just fine (provided the 
 chosen
  output format can be parsed by GS), and in general, but any remote call
  whatsoever that returns something parseable (it might be a php
  script returning GML
  for example)

  I'm pretty sure I follow this, but if an example lived somewhere it would 
 be great to see it.

 Don't have stuff handy now (I'm stuck in bed with fever and the
 notebook does not
 have everything I need in working order) I'll try to look up more
 examples when I get
 back on my feet

 Cheers
 Andrea



--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


[Geoserver-devel] [jira] Created: (GEOS-4355) Support wms:GetMap with complex features

2011-02-02 Thread Niels Charlier (JIRA)
Support wms:GetMap with complex features


 Key: GEOS-4355
 URL: http://jira.codehaus.org/browse/GEOS-4355
 Project: GeoServer
  Issue Type: Improvement
Reporter: Niels Charlier
Assignee: Niels Charlier


wms:GetMap doesn't work with complex features. 

Most of the changes to support complex features are on geotools. These mainly 
consist of 
- removing all simple feature assumptions
- supporting X-Path property expressions
In rendering, parsing styles, applying filters and property selection.

Most of this work has been done in different issues.
This issue is just the cherry on top of the cake, getting the Geoserver WMS 
module ready for complex features and providing an integration test in 
app-schema-test that shows that it works.

The only thing in the WMS package that needs to be reworked is the property 
validation, i.e. validate X-path property expressions instead of only accepting 
direct properties on simple feature types.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



--
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
___
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel