private void addDefaultsIfMissing(ServiceInfo serviceInfo) { if (serviceInfo instanceof WMSInfoImpl) { WMSInfoImpl wmsInfo = (WMSInfoImpl) serviceInfo; if (wmsInfo.getAuthorityURLs() == null) { List<AuthorityURLInfo> authorityURLS = new ArrayList<AuthorityURLInfo>(); wmsInfo.setAuthorityURLs(authorityURLS); } if (wmsInfo.getIdentifiers() == null) { List<LayerIdentifierInfo> identifiers = new ArrayList<LayerIdentifierInfo>(); wmsInfo.setIdentifiers(identifiers); } if (wmsInfo.getSRS() == null) { List<String> srsList = new ArrayList<String>(); wmsInfo.setSRS(srsList); } } else if (serviceInfo instanceof WFSInfoImpl) { WFSInfoImpl wfsInfo = (WFSInfoImpl) serviceInfo; if (wfsInfo.getGML() == null) { GMLInfoImpl gml3Info = new GMLInfoImpl(); gml3Info.setOverrideGMLAttributes(true); Map<WFSInfo.Version, GMLInfo> gml = new HashMap<WFSInfo.Version, GMLInfo>(); wfsInfo.setGML(gml); wfsInfo.getGML().put(WFSInfo.Version.V_11, gml3Info); wfsInfo.getGML().put(WFSInfo.Version.V_10, gml3Info); wfsInfo.getGML().put(WFSInfo.Version.V_20, gml3Info); } } }
@Override public Object doUnmarshal( Object result, HierarchicalStreamReader reader, UnmarshallingContext context) { WMSInfoImpl service = (WMSInfoImpl) super.doUnmarshal(result, reader, context); MetadataMap metadata = service.getMetadata(); // for backwards compatibility with 2.1.3+ data directories, check if the auth urls and // identifiers are stored in the metadata map if (service.getAuthorityURLs() == null && metadata != null) { String serialized = metadata.get("authorityURLs", String.class); List<AuthorityURLInfo> authorities; if (serialized == null) { authorities = new ArrayList<AuthorityURLInfo>(1); } else { authorities = AuthorityURLInfoInfoListConverter.fromString(serialized); } service.setAuthorityURLs(authorities); } if (service.getIdentifiers() == null && metadata != null) { String serialized = metadata.get("identifiers", String.class); List<LayerIdentifierInfo> identifiers; if (serialized == null) { identifiers = new ArrayList<LayerIdentifierInfo>(1); } else { identifiers = LayerIdentifierInfoListConverter.fromString(serialized); } service.setIdentifiers(identifiers); } return service; } }