private void beginSoap11Response( HttpResponseBuffer response ) throws IOException, XMLStreamException { response.setContentType( "text/xml" ); XMLStreamWriter xmlWriter = response.getXMLWriter(); String soapEnvNS = "http://schemas.xmlsoap.org/soap/envelope/"; String xsiNS = "http://www.w3.org/2001/XMLSchema-instance"; xmlWriter.writeStartElement( "soap", "Envelope", soapEnvNS ); xmlWriter.writeNamespace( "soap", soapEnvNS ); xmlWriter.writeNamespace( "xsi", xsiNS ); xmlWriter.writeAttribute( xsiNS, "schemaLocation", "http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/" ); xmlWriter.writeStartElement( soapEnvNS, "Body" ); }
private void doGetMap( Map<String, String> map, HttpResponseBuffer response, Version version, GetMap gm ) throws OWSException, IOException { LinkedList<String> headers = doGetMap( gm, map, version, response.getOutputStream() ); response.setContentType( gm.getFormat() ); addHeaders( response, headers ); }
@Override public void serializeException( HttpResponseBuffer response, OWSException exception ) throws IOException, XMLStreamException { response.reset(); response.setCharacterEncoding( "UTF-8" ); response.setContentType( "application/xml" ); setExceptionStatusCode( response, exception ); serializeExceptionToXML( response.getXMLWriter(), exception ); }
@Override public void serializeException( HttpResponseBuffer response, OWSException exception ) throws IOException, XMLStreamException { response.reset(); response.setCharacterEncoding( "UTF-8" ); if ( detailSerializer != null ) { if ( exception != null && exception instanceof SOAPException ) { detailSerializer.setExceptionStatusCode( response, ( (SOAPException) exception ).getDetail() ); } else { detailSerializer.setExceptionStatusCode( response, exception ); } } else { response.setStatus( 200 ); } serializeExceptionToXML( response.getXMLWriter(), exception ); }
@Override protected void exportCapas( String getUrl, String postUrl, MapService service, HttpResponseBuffer response, ServiceIdentification identification, ServiceProvider provider, Map<String, String> customParameters, WMSController controller, OWSMetadataProvider metadata ) throws IOException, OWSException { String format = detectFormat( customParameters ); response.setContentType( format ); try { if ( TEXT_XML_FORMAT.equals( format ) ) { XMLStreamWriter xmlWriter = response.getXMLWriter(); new Capabilities130XMLAdapter( identification, provider, metadata, getUrl, postUrl, service, controller ).export( xmlWriter ); } else { ByteArrayOutputStream stream = new ByteArrayOutputStream(); XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter( stream ); new Capabilities130XMLAdapter( identification, provider, metadata, getUrl, postUrl, service, controller ).export( xmlWriter ); xmlWriter.close(); capabilitiesManager.serializeCapabilities( format, new ByteArrayInputStream( stream.toByteArray() ), response.getOutputStream() ); } } catch ( XMLStreamException e ) { throw new IOException( e ); } }
public void sendResource ( HttpResponseBuffer response) { try { response.setContentType( getMimeType() ); response.setContentLength( (int) getLength() ); OutputStream os = response.getOutputStream(); InputStream is = getInputStream(); byte[] buffer = new byte[4096]; int numBytes = -1; while ( ( numBytes = is.read( buffer ) ) != -1 ) { os.write( buffer, 0, numBytes ); } os.flush(); } catch ( IOException e ) { LOG.debug( "Error sending resource to client.", e ); } }
@Override public void serializeException( HttpResponseBuffer response, OWSException ex, XMLExceptionSerializer exceptionSerializer, Map<String, String> map ) throws SerializingException { try { response.setContentType( contenType ); ByteArrayOutputStream stream = writeToStream( ex, exceptionSerializer ); transform( new ByteArrayInputStream( stream.toByteArray() ), response ); } catch ( XMLStreamException e ) { throw new SerializingException( e ); } catch ( FactoryConfigurationError e ) { throw new SerializingException( e ); } }
if ( gvResponseImage != null ) { try { ImageIO.write( gvResponseImage, ioFormat, response.getOutputStream() ); } catch ( IOException e ) { throw new OWSException( "An error occurred while writing the result image to the stream because: " + e.getLocalizedMessage(), NO_APPLICABLE_CODE ); response.setContentLength( response.getBufferSize() ); response.setContentType( format );
@Override protected void exportCapas( String getUrl, String postUrl, MapService service, HttpResponseBuffer response, ServiceIdentification identification, ServiceProvider provider, Map<String, String> customParameters, WMSController controller, OWSMetadataProvider metadata ) throws IOException, OWSException { response.setContentType( "application/vnd.ogc.wms_xml" ); String userAgent = OGCFrontController.getContext().getUserAgent(); if ( userAgent != null && userAgent.toLowerCase().contains( "mozilla" ) ) { response.setContentType( "application/xml" ); } response.addHeader( "Content-Disposition", "inline; filename=\"capabilities.xml\"" ); try { XMLStreamWriter xmlWriter = response.getXMLWriter(); new Capabilities111XMLAdapter( identification, provider, metadata, getUrl, postUrl, service, controller ).export( xmlWriter ); } catch ( XMLStreamException e ) { throw new IOException( e ); } }
if ( !response.isCommitted() ) { try { response.reset(); } catch ( IllegalStateException e ) { String value = additionalHeaders.get( key ); if ( key != null && !"".equals( key ) && value != null ) { response.addHeader( key, value ); throw new ServletException( e ); response.setExceptionSent(); response.setContentType( "application/xml" );
} else { try { response.sendError( 404, "No stored (or pending) WPS response document with id '" + location.getId() + "' found." ); response.setContentType( "text/xml; charset=UTF-8" ); try { XMLStreamWriter writer = response.getXMLWriter(); ExecuteResponseXMLWriter.export100( writer, status.createExecuteResponse() ); writer.flush();
@Override public OutputStream getOutputStream() throws IOException { if ( outputStream != null ) { return outputStream; } if ( redirected ) { throw new IllegalStateException( "sendRedirect() already called for FeatureInfoContext" ); } if ( xmlWriter != null ) { throw new IllegalStateException( "getXmlWriter() already called for FeatureInfoContext" ); } return outputStream = response.getOutputStream(); }
@Override public XMLStreamWriter getXmlWriter() throws IOException, XMLStreamException { if ( xmlWriter != null ) { return xmlWriter; } if ( redirected ) { throw new IllegalStateException( "sendRedirect() already called for FeatureInfoContext" ); } if ( outputStream != null ) { throw new IllegalStateException( "getOutputStream() already called for FeatureInfoContext" ); } return xmlWriter = response.getXMLWriter(); }
private void doDescribeCoverage( DescribeCoverage describeReq, HttpResponseBuffer response ) throws IOException, XMLStreamException, OWSException { response.setContentType( "text/xml" ); XMLStreamWriter xmlWriter = getXMLStreamWriter( response.getWriter() ); List<WCSCoverage> coverages = new LinkedList<WCSCoverage>(); if ( describeReq.getCoverages().size() == 0 ) { // return all coverages = wcsService.getAllCoverages(); } else { for ( String reqCoverage : describeReq.getCoverages() ) { if ( wcsService.hasCoverage( reqCoverage ) ) { coverages.add( wcsService.getCoverage( reqCoverage ) ); } else { throw new OWSException( "Unknown coverage " + reqCoverage, COVERAGE_NOT_DEFINED, "coverage" ); } } } CoverageDescription100XMLAdapter.export( xmlWriter, coverages, UPDATE_SEQUENCE ); xmlWriter.flush(); }
/** * Returns an {@link XMLStreamWriter} for writing a response with XML content. * <p> * NOTE: This method may be called more than once -- the first call will create an {@link XMLStreamWriter} object * and subsequent calls return the same object. This provides a convenient means to produce plain XML responses and * SOAP wrapped response bodies with the same code. * </p> * * @return {@link XMLStreamWriter} for writing the response, with XML preamble already written * @throws IOException * @throws XMLStreamException */ public synchronized XMLStreamWriter getXMLWriter() throws IOException, XMLStreamException { if ( xmlWriter == null ) { XMLOutputFactory factory = XMLOutputFactory.newInstance(); String encoding = "UTF-8"; xmlWriter = new IndentingXMLStreamWriter( factory.createXMLStreamWriter( getOutputStream(), encoding ) ); xmlWriter.writeStartDocument( encoding, "1.0" ); // TODO decide again if character encoding should be set (WFS CITE 1.1.0 tests don't like it, but // iGeoDesktop/OpenJUMP currently require it) if ( addEncoding ) { setCharacterEncoding( "UTF-8" ); } } return xmlWriter; }
addHeaders( response, pair.second ); format = format == null ? "application/vnd.ogc.gml" : format; response.setContentType( format ); response.setCharacterEncoding( "UTF-8" ); FeatureInfoParams params = new FeatureInfoParams( nsBindings, col, format, geometries, loc, type, crs ); featureInfoManager.serializeFeatureInfo( params, new StandardFeatureInfoContext( response ) ); response.flushBuffer(); } catch ( XMLStreamException e ) { throw new IOException( e.getLocalizedMessage(), e );
if ( credentialsProvider != null ) { cred = credentialsProvider.doKVP( normalizedKVPParams, requestWrapper, response ); response.setCredentials( cred ); response.setContentType( "text/plain" ); DeegreeAALogoUtils.print( response.getWriter() ); return;
GMLVersion version = options.getGmlVersion(); LOG.debug( "contentType:" + response.getContentType() ); LOG.debug( "characterEncoding:" + response.getCharacterEncoding() );
private void doGetCapabilities( Map<String, String> map, HttpResponseBuffer response, String updateSequence, GetCapabilities req ) throws OWSException, IOException { Version myVersion = negotiateVersion( req ); String getUrl = OGCFrontController.getHttpGetURL(); String postUrl = OGCFrontController.getHttpPostURL(); if ( metadataProvider != null ) { controllers.get( myVersion ).getCapabilities( getUrl, postUrl, updateSequence, service, response, metadataProvider.getServiceIdentification(), metadataProvider.getServiceProvider(), map, this, metadataProvider ); } else { controllers.get( myVersion ).getCapabilities( getUrl, postUrl, updateSequence, service, response, identification, provider, map, this, null ); } response.flushBuffer(); // TODO remove this to enable validation, enable validation on a DTD basis... }
private static void addHeaders( HttpResponseBuffer response, LinkedList<String> headers ) { while ( !headers.isEmpty() ) { String s = headers.poll(); response.addHeader( "Warning", s ); } }