# HG changeset patch # User Ingo Weinzierl # Date 1322041522 0 # Node ID 16f19f12a962d7d670d693dbcdc5c7fc0788ec3b # Parent dfa2d4753fc0449ff0596ad2bc18a792f8c5bf73 Improved parsing of Capabilities document - parse '/WMT_MS_Capabilities' as well. flys-client/trunk@3306 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r dfa2d4753fc0 -r 16f19f12a962 flys-client/ChangeLog --- a/flys-client/ChangeLog Tue Nov 22 20:20:03 2011 +0000 +++ b/flys-client/ChangeLog Wed Nov 23 09:45:22 2011 +0000 @@ -1,3 +1,9 @@ +2011-11-23 Ingo Weinzierl + + * src/main/java/de/intevation/flys/client/server/GCServiceImpl.java: + Improved parsing Capabilities document - the root node of the document + can be "/WMS_Capabilities" oder "WMT_MS_Capabilities" now. + 2011-11-22 Ingo Weinzierl * src/main/java/de/intevation/flys/client/client/ui/map/MapOutputTab.java: diff -r dfa2d4753fc0 -r 16f19f12a962 flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java --- a/flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java Tue Nov 22 20:20:03 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java Wed Nov 23 09:45:22 2011 +0000 @@ -43,14 +43,20 @@ public static final String ERR_MALFORMED_URL = "error_malformed_url"; + public static final String XPATH_WMS_CAPS = + "/WMS_Capabilities"; + + public static final String XPATH_WMT_CAPS = + "/WMT_MS_Capabilities"; + public static final String XPATH_TITLE = - "/WMS_Capabilities/Service/Title/text()"; + "Service/Title/text()"; public static final String XPATH_ONLINE_RESOURCE = - "/WMS_Capabilities/Service/OnlineResource/@href"; + "Service/OnlineResource/@href"; public static final String XPATH_CONTACT_INFORMATION = - "/WMS_Capabilities/Service/ContactInformation"; + "Service/ContactInformation"; public static final String XPATH_CI_PERSON = "ContactPersonPrimary/ContactPerson/text()"; @@ -74,13 +80,13 @@ "ContactElectronicMailAddress/text()"; public static final String XPATH_FEES = - "/WMS_Capabilities/Service/Fees/text()"; + "Service/Fees/text()"; public static final String XPATH_ACCESS_CONSTRAINTS = - "/WMS_Capabilities/Service/AccessConstraints/text()"; + "Service/AccessConstraints/text()"; public static final String XPATH_LAYERS = - "/WMS_Capabilities/Capability/Layer"; + "Capability/Layer"; private Logger logger = Logger.getLogger(GCServiceImpl.class); @@ -126,28 +132,30 @@ throw new ServerException(ERR_GC_DOC_NOT_VALID); } + Node capabilities = getCapabilitiesNode(doc); + String title = (String) XMLUtils.xpath( - doc, + capabilities, XPATH_TITLE, XPathConstants.STRING); String onlineResource = (String) XMLUtils.xpath( - doc, + capabilities, XPATH_ONLINE_RESOURCE, XPathConstants.STRING); String fees = (String) XMLUtils.xpath( - doc, + capabilities, XPATH_FEES, XPathConstants.STRING); String accessConstraints = (String) XMLUtils.xpath( - doc, + capabilities, XPATH_ACCESS_CONSTRAINTS, XPathConstants.STRING); Node contactInformation = (Node) XMLUtils.xpath( - doc, + capabilities, XPATH_CONTACT_INFORMATION, XPathConstants.NODE); @@ -157,7 +165,7 @@ logger.debug("Found access constraints: " + accessConstraints); NodeList layerNodes = (NodeList) XMLUtils.xpath( - doc, + capabilities, XPATH_LAYERS, XPathConstants.NODESET); @@ -173,6 +181,31 @@ } + protected Node getCapabilitiesNode(Document doc) + throws ServerException { + Node capabilities = (Node) XMLUtils.xpath( + doc, + XPATH_WMS_CAPS, + XPathConstants.NODE); + + if (capabilities == null) { + logger.info("No '/WMS_Capabilities' node found."); + logger.info("Try to find a '/WMT_MS_Capabilities' node."); + + capabilities = (Node) XMLUtils.xpath( + doc, + XPATH_WMT_CAPS, + XPathConstants.NODE); + } + + if (capabilities == null) { + throw new ServerException(ERR_GC_DOC_NOT_VALID); + } + + return capabilities; + } + + protected ContactInformation parseContactInformation(Node node) { String person = (String) XMLUtils.xpath( node,