/** * * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated modifiable */ public Object parse(InstanceComponent instance, Object value) throws Exception { return CapabilitiesSectionType.get((String) value); }
/** * Encode the object. * * @param o The Object to encode. * @throws IllegalArgumentException if the Object is not encodeable. */ public void encode(Object o) throws IllegalArgumentException { if (!(o instanceof GetCapabilitiesType)) { throw new IllegalArgumentException( new StringBuffer("Not a GetCapabilitiesType: ").append(o).toString()); } this.request = (GetCapabilitiesType) o; // check the update sequence final long updateSequence = wcs.getGeoServer().getGlobal().getUpdateSequence(); long requestedUpdateSequence = -1; if (request.getUpdateSequence() != null) { try { requestedUpdateSequence = Long.parseLong(request.getUpdateSequence()); } catch (NumberFormatException e) { if (request.getUpdateSequence().length() == 0) requestedUpdateSequence = 0; else throw new WcsException( "Invalid update sequence number format, " + "should be an integer", WcsExceptionCode.InvalidUpdateSequence, "updateSequence"); } if (requestedUpdateSequence > updateSequence) { throw new WcsException( "Invalid update sequence value, it's higher " + "than the current value, " + updateSequence, WcsExceptionCode.InvalidUpdateSequence, "updateSequence"); } if (requestedUpdateSequence == updateSequence) { throw new WcsException( "WCS capabilities document is current (updateSequence = " + updateSequence + ")", WcsExceptionCode.CurrentUpdateSequence, ""); } } final AttributesImpl attributes = new AttributesImpl(); attributes.addAttribute("", "version", "version", "", CUR_VERSION); attributes.addAttribute("", "xmlns:wcs", "xmlns:wcs", "", WCS_URI); attributes.addAttribute("", "xmlns:xlink", "xmlns:xlink", "", "http://www.w3.org/1999/xlink"); attributes.addAttribute("", "xmlns:ogc", "xmlns:ogc", "", "http://www.opengis.net/ogc"); attributes.addAttribute("", "xmlns:ows", "xmlns:ows", "", "http://www.opengis.net/ows/1.1"); attributes.addAttribute("", "xmlns:gml", "xmlns:gml", "", "http://www.opengis.net/gml"); final String prefixDef = new StringBuffer("xmlns:").append(XSI_PREFIX).toString(); attributes.addAttribute("", prefixDef, prefixDef, "", XSI_URI); final String locationAtt = new StringBuffer(XSI_PREFIX).append(":schemaLocation").toString(); // proxifiedBaseUrl = RequestUtils.proxifiedBaseURL(request.getBaseUrl(), wcs // .getGeoServer().getProxyBaseUrl()); // final String locationDef = WCS_URI + " " + proxifiedBaseUrl + // "schemas/wcs/1.0.0/wcsCapabilities.xsd"; final String locationDef = WCS_URI + " " + buildURL( request.getBaseUrl(), appendPath(SCHEMAS, "wcs/1.0.0/wcsCapabilities.xsd"), null, URLType.RESOURCE); attributes.addAttribute("", locationAtt, locationAtt, "", locationDef); attributes.addAttribute( "", "updateSequence", "updateSequence", "", String.valueOf(updateSequence)); start("wcs:WCS_Capabilities", attributes); // handle the sections directive boolean allSections; CapabilitiesSectionType section; if (request.getSection() == null) { allSections = true; section = CapabilitiesSectionType.get("/"); } else { section = request.getSection(); allSections = (section.get("/").equals(section)); } final Set<String> knownSections = new HashSet<String>( Arrays.asList( "/", "/WCS_Capabilities/Service", "/WCS_Capabilities/Capability", "/WCS_Capabilities/ContentMetadata")); if (!knownSections.contains(section.getLiteral())) throw new WcsException( "Unknown section " + section, WcsExceptionCode.InvalidParameterValue, "Sections"); // encode the actual capabilities contents taking into consideration // the sections if (requestedUpdateSequence < updateSequence) { if (allSections || section.equals(CapabilitiesSectionType.WCS_CAPABILITIES_SERVICE_LITERAL)) { handleService(allSections); } if (allSections || section.equals(CapabilitiesSectionType.WCS_CAPABILITIES_CAPABILITY_LITERAL)) handleCapabilities(allSections); if (allSections || section.equals(CapabilitiesSectionType.WCS_CAPABILITIES_CONTENT_METADATA_LITERAL)) handleContentMetadata(allSections); } end("wcs:WCS_Capabilities"); }