if (override.equalsIgnoreCase("geoserver")) {
strategy = new GeoServerPre200Strategy();
} else if (override.equalsIgnoreCase("cubewerx")) {
strategy = new CubeWerxStrategy();
} else if (override.equalsIgnoreCase("ionic")) {
strategy = new IonicStrategy();
} else {
LOGGER.warning("Could not handle wfs strategy override " + override
+ " proceeding with autodetection");
}
}
// auto detection
if (strategy == null) {
// look in comments for indication of CubeWerx server
NodeList childNodes = capabilitiesDoc.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node child = childNodes.item(i);
if (child.getNodeType() == Node.COMMENT_NODE) {
String nodeValue = child.getNodeValue();
nodeValue = nodeValue.toLowerCase();
if (nodeValue.contains("cubewerx")) {
strategy = new CubeWerxStrategy();
break;
}
}
}
}
if (strategy == null) {
// Ionic declares its own namespace so that's our hook
Element root = capabilitiesDoc.getDocumentElement();
String ionicNs = root.getAttribute("xmlns:ionic");
if (ionicNs != null) {
if (ionicNs.equals("http://www.ionicsoft.com/versions/4")) {
strategy = new IonicStrategy();
} else if (ionicNs.startsWith("http://www.ionicsoft.com/versions")) {
LOGGER.warning("Found a Ionic server but the version may not match the strategy "
+ "we have (v.4). Ionic namespace url: " + ionicNs);
strategy = new IonicStrategy();
}
}
}
if (strategy == null) {