Changeset 405
- Timestamp:
- 11/04/08 14:25:23 (2 months ago)
- Location:
- trunk/geowebcache/src/main/java/org/geowebcache/service/kml
- Files:
-
- 1 added
- 1 modified
-
KMLService.java (modified) (7 diffs)
-
KMLSiteMap.java (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/geowebcache/src/main/java/org/geowebcache/service/kml/KMLService.java
r395 r405 19 19 import java.io.IOException; 20 20 import java.io.OutputStream; 21 import java.net.URLDecoder; 22 import java.net.URLEncoder; 21 23 import java.util.Arrays; 22 24 … … 61 63 62 64 public static final String HINT_DEBUGGRID = "debuggrid"; 63 65 66 public static final String HINT_SITEMAP_LAYER = "sitemap"; 67 68 public static final String HINT_SITEMAP_GLOBAL = "sitemap_global"; 69 64 70 public KMLService() { 65 71 super(SERVICE_KML); … … 125 131 String[] parsed = null; 126 132 try { 127 parsed = parseRequest(request.getPathInfo()); 133 // TODO The container is supposed to handle the decoding prior 134 // to returning but in Eclipse / Jetty this does not hold true 135 parsed = parseRequest(URLDecoder.decode(request.getPathInfo(),"UTF-8")); 128 136 } catch (Exception e) { 129 137 throw new ServiceException("Unable to parse KML request : "+ e.getMessage()); … … 133 141 tile.setMimeType(MimeType.createFromExtension(parsed[2])); 134 142 tile.setSRS(SRS.getEPSG4326()); 143 144 // Sitemap index ? kml/sitemap.xml 145 if(parsed[0].equalsIgnoreCase("sitemap") && parsed[2].equalsIgnoreCase("xml")) { 146 tile.setHint(HINT_SITEMAP_GLOBAL); 147 String tmpUrl = urlPrefix(request.getRequestURL().toString(),parsed); 148 tile.setUrlPrefix(tmpUrl.substring(0, tmpUrl.length() - "sitemap".length())); 149 tile.setRequestHandler(Tile.RequestHandler.SERVICE); 150 return tile; 151 } 152 153 // Sitemap ? kml/prefix:layername/sitemap.xml 154 if(parsed[1].equalsIgnoreCase(HINT_SITEMAP_LAYER)) { 155 tile.setHint(HINT_SITEMAP_LAYER); 156 tile.setUrlPrefix(urlPrefix(request.getRequestURL().toString(),parsed)); 157 tile.setRequestHandler(Tile.RequestHandler.SERVICE); 158 return tile; 159 } 135 160 136 161 // Do we have a key for the grid location? … … 166 191 if(tile.getHint() == HINT_DEBUGGRID) { 167 192 layer = KMLDebugGridLayer.getInstance(); 193 } else if (tile.getHint() == HINT_SITEMAP_GLOBAL) { 194 layer = null; 168 195 } else { 169 196 layer = tLD.getTileLayer(tile.getLayerId()); … … 183 210 //} 184 211 212 if(tile.getHint() == HINT_SITEMAP_LAYER || tile.getHint() == HINT_SITEMAP_GLOBAL) { 213 KMLSiteMap sm = new KMLSiteMap(tile,tLD); 214 try { 215 sm.write(); 216 } catch (IOException ioe) { 217 throw new GeoWebCacheException("Unable to write sitemap: " + ioe.getMessage()); 218 } 219 return; 220 } 221 185 222 if(tile.getTileIndex() == null) { 186 223 // No tile index -> super overlay … … 292 329 } 293 330 294 pr ivatestatic String gridLocString(int[] gridLoc) {331 protected static String gridLocString(int[] gridLoc) { 295 332 return "x" + gridLoc[0] + "y" + gridLoc[1] + "z" + gridLoc[2]; 296 333 }
