private WFSExceptionWriter checkParametersForError ( String request , String version , String service , String typeName ) { // The SERVICE parameter is required. If not specified, is an error (throw exception through XML). if ( service != null ) { // For the WFS servlet it must be WFS if not, write out an InvalidParameterValue exception. if ( ! service . equalsIgnoreCase ( "WFS" ) ) { return new WFSExceptionWriter ( "WFS Server error. SERVICE parameter must be of value WFS." , "service" , "InvalidParameterValue" ) ; } } else { return new WFSExceptionWriter ( "WFS server error. SERVICE parameter is required." , "request" , "MissingParameterValue" ) ; } // The REQUEST Parameter is required. If not specified, is an error (throw exception through XML). if ( request != null ) { // Only go through version checks if NOT a Get Capabilities request, the VERSION parameter is required for all operations EXCEPT GetCapabilities section 7.6.25 of WFS 2.0 Interface Standard if ( ! request . equalsIgnoreCase ( WFSRequestType . GetCapabilities . toString ( ) ) ) { if ( version != null ) { // If the version is not failed report exception VersionNegotiationFailed, from OGC Web Services Common Standard section 7.4.1 // Get each part String [ ] versionParts = version . split ( "\\." ) ; for ( int ind = 0 ; ind < versionParts . length ; ind ++ ) { // Check if number will throw NumberFormatException if not. try { Integer . valueOf ( versionParts [ ind ] ) ; } /* Version parameters are only allowed to consist of numbers and periods. If this is not the case then * It qualifies for InvalidParameterException */ catch ( NumberFormatException excep ) { return new WFSExceptionWriter ( "WFS server error. VERSION parameter consists of invalid characters." , "version" , "InvalidParameterValue" ) ; } } /* Now the version parts are all constructed from the parameter * Analyze for correctness. */ boolean validVersion = false ; // If just number 2 is specified, assume 2.0.0, pass the check if ( versionParts . length == 1 ) if ( versionParts [ 0 ] . equals ( "2" ) ) validVersion = true ; // Two or more version parts specified, make sure it's 2.0.#.#... if ( versionParts . length >= 2 ) if ( versionParts [ 0 ] . equals ( "2" ) && versionParts [ 1 ] . equals ( "0" ) ) validVersion = true ; /* Another exception VersionNegotiationFailed is specified by OGC Web Services Common * for version mismatches. If the version check failed print this exception */ if ( ! validVersion ) { return new WFSExceptionWriter ( "WFS Server error. Version requested is not supported." , null , "VersionNegotiationFailed" ) ; } } else { return new WFSExceptionWriter ( "WFS server error. VERSION parameter is required." , "request" , "MissingParameterValue" ) ; } // Last check to see if typenames is specified, must be for GetFeature, DescribeFeatureType if ( typeName == null ) { return new WFSExceptionWriter ( "WFS server error. For the specifed request, parameter typename or typenames must be specified." , request , "MissingParameterValue" ) ; } } WFSRequestType reqToProc = WFSRequestType . getWFSRequestType ( request ) ; if ( reqToProc == null ) return new WFSExceptionWriter ( "WFS server error. REQUEST parameter is not valid. Possible values: GetCapabilities, " + "DescribeFeatureType, GetFeature" , "request" , "InvalidParameterValue" ) ; } else { return new WFSExceptionWriter ( "WFS server error. REQUEST parameter is required." , "request" , "MissingParameterValue" ) ; } return null ; }
Checks request parameters for errors . Will send back an XML Exception if any errors are encountered .