diff options
Diffstat (limited to 'bkucommon/src/main')
| -rw-r--r-- | bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java | 278 | 
1 files changed, 143 insertions, 135 deletions
| diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java index 45e966d9..4e6c131d 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java @@ -98,42 +98,44 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	protected static String XML_MIME_TYPE = "text/xml";  	protected static String BINARY_MIME_TYPE = "application/octet-stream"; -  /** -   * The citizen card environment identifier for <code>Server</code> and -   * <code>UserAgent</code> headers. -   */ -  protected static String CITIZENC_CARD_ENVIRONMENT = "citizen-card-environment/1.2"; -	 -  /** -   * The configuration facade used to access the MOCCA configuration. -   */ -  protected ConfigurationFacade configurationFacade = new ConfigurationFacade(); - -  public class ConfigurationFacade implements MoccaConfigurationFacade { -     -    public static final String DATAURLCLIENT_MAXHOPS = "DataURLConnection.MaxHops"; - -    public int getMaxDataUrlHops() { -      return configuration.getInt(DATAURLCLIENT_MAXHOPS, 10); -    } - -    public String getProductName() { -      return configuration.getString( -          ConfigurationFactoryBean.MOCCA_IMPLEMENTATIONNAME_PROPERTY, "MOCCA"); -    } -     -    public String getProductVersion() { -      return configuration.getString( -          ConfigurationFactoryBean.MOCCA_IMPLEMENTATIONVERSION_PROPERTY, -          "UNKNOWN"); -    } -     -    public String getSignatureLayout() { -      return configuration -          .getString(ConfigurationFactoryBean.SIGNATURE_LAYOUT_PROPERTY); -    } -     -  }   +	/** +	 * The citizen card environment identifier for <code>Server</code> and +	 * <code>UserAgent</code> headers. +	 */ +	protected static String CITIZENC_CARD_ENVIRONMENT = "citizen-card-environment/1.2"; + +	/** +	 * The configuration facade used to access the MOCCA configuration. +	 */ +	protected ConfigurationFacade configurationFacade = new ConfigurationFacade(); + +	public class ConfigurationFacade implements MoccaConfigurationFacade { + +		public static final String DATAURLCLIENT_MAXHOPS = "DataURLConnection.MaxHops"; + +		public int getMaxDataUrlHops() { +			return configuration.getInt(DATAURLCLIENT_MAXHOPS, 10); +		} + +		public String getProductName() { +			return configuration.getString( +					ConfigurationFactoryBean.MOCCA_IMPLEMENTATIONNAME_PROPERTY, +					"MOCCA"); +		} + +		public String getProductVersion() { +			return configuration +					.getString( +							ConfigurationFactoryBean.MOCCA_IMPLEMENTATIONVERSION_PROPERTY, +							"UNKNOWN"); +		} + +		public String getSignatureLayout() { +			return configuration +					.getString(ConfigurationFactoryBean.SIGNATURE_LAYOUT_PROPERTY); +		} + +	}  	/**  	 * If null everything is ok and the result is taken from the command invoker. @@ -156,42 +158,43 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	protected Map<String, String> responseHeaders = Collections.EMPTY_MAP;  	protected boolean finished = false; -    @Override -    public void setUrlDereferencer(URLDereferencer urlDereferencer) { -      super.setUrlDereferencer(new FormDataURLDereferencer(urlDereferencer, this)); -    } - -    /** -     * @return the sslSocketFactory -     */ -    public SSLSocketFactory getSslSocketFactory() { -      return sslSocketFactory; -    } -   -    /** -     * @param sslSocketFactory -     *          the sslSocketFactory to set -     */ -    public void setSslSocketFactory(SSLSocketFactory sslSocketFactory) { -      this.sslSocketFactory = sslSocketFactory; -    } -   -    /** -     * @return the hostnameVerifier -     */ -    public HostnameVerifier getHostnameVerifier() { -      return hostnameVerifier; -    } -   -    /** -     * @param hostnameVerifier -     *          the hostnameVerifier to set -     */ -    public void setHostnameVerifier(HostnameVerifier hostnameVerifier) { -      this.hostnameVerifier = hostnameVerifier; -    } -	 -    protected void sendSTALQuit() { +	@Override +	public void setUrlDereferencer(URLDereferencer urlDereferencer) { +		super.setUrlDereferencer(new FormDataURLDereferencer(urlDereferencer, +				this)); +	} + +	/** +	 * @return the sslSocketFactory +	 */ +	public SSLSocketFactory getSslSocketFactory() { +		return sslSocketFactory; +	} + +	/** +	 * @param sslSocketFactory +	 *            the sslSocketFactory to set +	 */ +	public void setSslSocketFactory(SSLSocketFactory sslSocketFactory) { +		this.sslSocketFactory = sslSocketFactory; +	} + +	/** +	 * @return the hostnameVerifier +	 */ +	public HostnameVerifier getHostnameVerifier() { +		return hostnameVerifier; +	} + +	/** +	 * @param hostnameVerifier +	 *            the hostnameVerifier to set +	 */ +	public void setHostnameVerifier(HostnameVerifier hostnameVerifier) { +		this.hostnameVerifier = hostnameVerifier; +	} + +	protected void sendSTALQuit() {  		log.debug("Sending QUIT command to STAL.");  		List<STALRequest> quit = new ArrayList<STALRequest>(1);  		quit.add(new QuitRequest()); @@ -379,7 +382,7 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  			if (conn.getServerCertificates() instanceof X509Certificate[]) {  			  serverCertificate = (X509Certificate) conn.getServerCertificates()[0];  			} -            targetContext.setTargetCertificate(serverCertificate); +			targetContext.setTargetCertificate(serverCertificate);  			targetContext.setTargetUrl(conn.getURL());  			SLResult result = commandInvoker.getResult(targetContext); @@ -409,9 +412,10 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  						currentState = State.PROCESS;  					} else if (((contentType.startsWith(HttpUtil.TXT_HTML))  							|| (contentType.startsWith(HttpUtil.TXT_PLAIN)) -              || (contentType.startsWith(HttpUtil.TXT_XML))) +							|| (contentType.startsWith(HttpUtil.TXT_XML)))  							&& (dataUrlResponse.isHttpResponseXMLOK())) { -						log.info("Dataurl response matches <ok/> with content type: {}.", contentType); +						log.info( +								"Dataurl response matches <ok/> with content type: {}.", contentType);  						currentState = State.TRANSFORM;  					} else if ((contentType.startsWith(HttpUtil.TXT_XML)) @@ -469,8 +473,9 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  							.get(HttpUtil.HTTP_HEADER_REFERER));  				} else { -					log.debug("Received dataurl response code 307 non XML content: {}.",  -					    dataUrlResponse.getContentType()); +					log.debug( +							"Received dataurl response code 307 non XML content: {}.", +							dataUrlResponse.getContentType());  					resultContentType = dataUrlResponse.getContentType();  					currentState = State.FINISHED;  				} @@ -489,9 +494,9 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  			default:  				// issue error -				log.info("Unexpected response code from dataurl server: {}.",  -				    dataUrlResponse.getResponseCode()); -                throw new SLBindingException(2007); +				log.info("Unexpected response code from dataurl server: {}.", +						dataUrlResponse.getResponseCode()); +				throw new SLBindingException(2007);  			}  		} catch (SLException slx) { @@ -562,16 +567,16 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	// activity diagram --  	//---------------------------------------------------------------------------- -    public String getServerHeaderValue() { -      return CITIZENC_CARD_ENVIRONMENT + " " -          + configurationFacade.getProductName() + "/" -          + configurationFacade.getProductVersion(); -    } +	public String getServerHeaderValue() { +		return CITIZENC_CARD_ENVIRONMENT + " " +				+ configurationFacade.getProductName() + "/" +				+ configurationFacade.getProductVersion(); +	} + +	public String getSignatureLayoutHeaderValue() { +		return configurationFacade.getSignatureLayout(); +	} -    public String getSignatureLayoutHeaderValue() { -      return configurationFacade.getSignatureLayout(); -    } -	  	/**  	 * Sets the headers of the SL Request. IMPORTANT: make sure to set all headers  	 * before invoking {@link #consumeRequestStream(String, InputStream)} @@ -579,7 +584,7 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	 * @param aHeaderMap  	 *          if null all header will be cleared.  	 */ -    @Override +	@Override  	public void setHTTPHeaders(Map<String, String> aHeaderMap) {  		headerMap = new HashMap<String, String>();  		// ensure lowercase keys @@ -627,20 +632,20 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	public InputStream getFormData(String aParameterName) {  		FormParameter fp = formParameterMap.get(aParameterName);  		if (fp != null) { -		  final String enc = fp.getHeaderValue("Content-Transfer-Encoding"); -		  if (enc == null || "binary".equals(enc)) { -            return fp.getFormParameterValue(); -		  } else if ("base64".equals(enc)) { -		    return new Base64InputStream(fp.getFormParameterValue()); -		  } else { -            return new InputStream() { -              @Override -              public int read() throws IOException { -                throw new IOException("Content-Transfer-Encoding : " + enc -                    + " is not supported."); -              } -            }; -		  } +			final String enc = fp.getHeaderValue("Content-Transfer-Encoding"); +			if (enc == null || "binary".equals(enc)) { +				return fp.getFormParameterValue(); +			} else if ("base64".equals(enc)) { +				return new Base64InputStream(fp.getFormParameterValue()); +			} else { +				return new InputStream() { +					@Override +					public int read() throws IOException { +						throw new IOException("Content-Transfer-Encoding : " +								+ enc + " is not supported."); +					} +				}; +			}  		}  		return null;  	} @@ -649,10 +654,10 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  			throws IOException, SLException {  		Reader r = new InputStreamReader(is, charset);  		StreamSource source = new StreamSource(r); -        slCommand = slCommandFactory.createSLCommand(source); -        log.info("XMLRequest={}. Created new command: {}.", slCommand.getName(), slCommand -            .getClass().getName()); -  } +		slCommand = slCommandFactory.createSLCommand(source); +		log.info("XMLRequest={}. Created new command: {}.", +				slCommand.getName(), slCommand.getClass().getName()); +	}  	@Override  	public void process() { @@ -675,7 +680,7 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  						handleDataUrl();  						if (++hopcounter > configurationFacade.getMaxDataUrlHops()) {  							log.error("Maximum number ({}) of dataurl hops reached.",  -							    configurationFacade.getMaxDataUrlHops()); +									configurationFacade.getMaxDataUrlHops());  							bindingProcessorError = new SLBindingException(2000);  							currentState = State.FINISHED;  						} @@ -714,9 +719,9 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	@Override  	public void consumeRequestStream(String url, InputStream is) {  		try { -          this.srcUrl = new URL(url); -          srcContex.setSourceUrl(srcUrl); -	        srcContex.setSourceIsDataURL(false); +			this.srcUrl = new URL(url); +			srcContex.setSourceUrl(srcUrl); +			srcContex.setSourceIsDataURL(false);  			log.debug("Start consuming request stream.");  			formParameterMap.clear();  			String ct = headerMap @@ -773,11 +778,12 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  			bindingProcessorError = new SLException(2000);  		} finally {  			try { -			  if (is.read() != -1) { -			    log.warn("Request input stream not completely read."); -			    while (is.read() != -1); -			  } -			  log.debug("Finished consuming request stream."); +				if (is.read() != -1) { +					log.warn("Request input stream not completely read."); +					while (is.read() != -1) +						; +				} +				log.debug("Finished consuming request stream.");  			} catch (IOException e) {  				log.error("Failed to read request input stream.", e);  			} @@ -815,13 +821,13 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	}  	protected Writer writeXMLDeclarationAndProcessingInstruction(OutputStream os, String encoding) throws IOException { -      if (encoding == null) { -        encoding = HttpUtil.DEFAULT_CHARSET; -      } -      OutputStreamWriter writer = new OutputStreamWriter(os, encoding); -      writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"); -      writer.write("<?xml-stylesheet type=\"text/css\" href=\"errorresponse.css\"?>\n"); -      return writer; +		if (encoding == null) { +			encoding = HttpUtil.DEFAULT_CHARSET; +		} +		OutputStreamWriter writer = new OutputStreamWriter(os, encoding); +		writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"); +		writer.write("<?xml-stylesheet type=\"text/css\" href=\"errorresponse.css\"?>\n"); +		return writer;  	}  	@Override @@ -866,10 +872,11 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  			boolean fragment = false;  			Writer writer;  			if (slResult instanceof ErrorResult) { -			  writer = writeXMLDeclarationAndProcessingInstruction(os, encoding); -			  fragment = true; +				writer = writeXMLDeclarationAndProcessingInstruction(os, +						encoding); +				fragment = true;  			} else { -	          writer = new OutputStreamWriter(os, encoding); +				writer = new OutputStreamWriter(os, encoding);  			}  			slResult.writeTo(new StreamResult(writer), templates, fragment);  			writer.flush(); @@ -895,15 +902,16 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  	 */  	@Override  	public Map<String, String> getResponseHeaders() { -	  LinkedHashMap<String, String> headers = new LinkedHashMap<String, String>(); -	  headers.put(HttpUtil.HTTP_HEADER_SERVER, getServerHeaderValue()); -	  headers.put(HttpUtil.HTTP_HEADER_SIGNATURE_LAYOUT, getSignatureLayoutHeaderValue()); -	  headers.putAll(responseHeaders); -	  return headers; +		LinkedHashMap<String, String> headers = new LinkedHashMap<String, String>(); +		headers.put(HttpUtil.HTTP_HEADER_SERVER, getServerHeaderValue()); +		headers.put(HttpUtil.HTTP_HEADER_SIGNATURE_LAYOUT, +				getSignatureLayoutHeaderValue()); +		headers.putAll(responseHeaders); +		return headers;  	} -  public boolean isFinished() { -    return finished; -  } +	public boolean isFinished() { +		return finished; +	}  } | 
