diff options
| author | wbauer <wbauer@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2008-09-11 13:03:44 +0000 | 
|---|---|---|
| committer | wbauer <wbauer@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2008-09-11 13:03:44 +0000 | 
| commit | 76bb812a3254be530e403f8db8c01323a31b30c1 (patch) | |
| tree | 718366a1d1c9bb92f7565fe46a534dd86719210f | |
| parent | 66cfb865fbfa7af514e803003f928d77f1156e46 (diff) | |
| download | mocca-76bb812a3254be530e403f8db8c01323a31b30c1.tar.gz mocca-76bb812a3254be530e403f8db8c01323a31b30c1.tar.bz2 mocca-76bb812a3254be530e403f8db8c01323a31b30c1.zip | |
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@33 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
17 files changed, 812 insertions, 596 deletions
| diff --git a/BKUOnline/pom.xml b/BKUOnline/pom.xml index a0e45cf6..d31367a8 100644 --- a/BKUOnline/pom.xml +++ b/BKUOnline/pom.xml @@ -1,141 +1,180 @@  <?xml version="1.0" encoding="UTF-8"?>
 -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 -    <parent>
 -        <artifactId>bku</artifactId>
 -        <groupId>at.gv.egiz</groupId>
 -        <version>1.0-SNAPSHOT</version>
 -    </parent>
 -    <modelVersion>4.0.0</modelVersion>
 -    <groupId>at.gv.egiz</groupId>
 -    <artifactId>BKUOnline</artifactId>
 -    <packaging>war</packaging>
 -    <name>BKU Online</name>
 -    <version>1.0-SNAPSHOT</version>
 -    <dependencies>
 -        <dependency>
 -            <groupId>at.gv.egiz</groupId>
 -            <artifactId>bkucommon</artifactId>
 -            <version>1.0-SNAPSHOT</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>commons-logging</groupId>
 -            <artifactId>commons-logging</artifactId>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework</groupId>
 -            <artifactId>spring-core</artifactId>
 -            <version>2.5.5</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>javax.servlet</groupId>
 -            <artifactId>servlet-api</artifactId>
 -            <version>2.5</version>
 -            <scope>provided</scope>
 -        </dependency>
 -        <dependency>
 -            <groupId>org.springframework</groupId>
 -            <artifactId>spring-web</artifactId>
 -            <version>2.5.5</version>
 -        </dependency>
 -        <dependency>
 -            <groupId>at.gv.egiz</groupId>
 -            <artifactId>STALService</artifactId>
 -            <version>1.0-SNAPSHOT</version>
 -            <scope>compile</scope>
 -        </dependency>
 -        <!--dependency>
 -            <groupId>at.gv.egiz</groupId>
 -            <artifactId>BKUApplet</artifactId>
 -            <version>1.0-SNAPSHOT</version>
 -            <scope>provided</scope>
 -        </dependency-->
 -        <!--
 -         | see https://wsit.dev.java.net/issues/show_bug.cgi?id=970
 -         -->
 -        <dependency>
 -            <groupId>com.sun.xml.ws</groupId>
 -            <!--artifactId>webservices-rt</artifactId>
 -            <version>1.2</version-->
 -            <artifactId>jaxws-rt</artifactId>
 -            <version>2.1.4</version>
 -            <!-- conflict with SAAJ from java 6 ? 
 -            <exclusions>
 -                <exclusion>
 -                    <groupId>javax.xml.soap</groupId>
 -                    <artifactId>saaj-api</artifactId>
 -                </exclusion>
 -                <exclusion>
 -                    <groupId>com.sun.xml.messaging.saaj</groupId>
 -                    <artifactId>saaj-impl</artifactId>
 -                </exclusion>
 -            </exclusions-->
 -        </dependency>
 -        <!--dependency>
 -            <groupId>at.gv.egiz</groupId>
 -            <artifactId>BKUApplet</artifactId>
 -            <version>1.0-SNAPSHOT</version>
 -            <scope>compile</scope>
 -        </dependency-->
 -    </dependencies>
 -    <properties>
 -        <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
 -    </properties>
 -    <build>
 -        <plugins>
 -            <plugin>
 -                <artifactId>maven-dependency-plugin</artifactId>
 -                <executions>
 -                    <execution>
 -                        <id>copyapplet</id>
 -                        <goals>
 -                            <goal>copy</goal>
 -                        </goals>
 -                        <configuration>
 -                            <artifactItems>
 -                                <artifactItem>
 -                                    <groupId>at.gv.egiz</groupId>
 -                                    <artifactId>BKUApplet</artifactId>
 -                                    <version>1.0-SNAPSHOT</version>
 -                                </artifactItem>
 -                                <artifactItem>
 -                                    <groupId>commons-logging</groupId>
 -                                    <artifactId>commons-logging</artifactId>
 -                                </artifactItem>
 -                                <artifactItem>
 -                                    <groupId>iaik</groupId>
 -                                    <artifactId>iaik_jce_me4se</artifactId>
 -                                </artifactItem>
 -                            </artifactItems>
 -                            <outputDirectory>${project.build.directory}/${project.build.finalName}/applet</outputDirectory>
 -                        </configuration>
 -                    </execution>
 -                </executions>
 -            </plugin>
 -            <!--plugin>
 -                <groupId>org.codehaus.mojo</groupId>
 -                <artifactId>jaxws-maven-plugin</artifactId>
 -                <executions>
 -                    <execution>
 -                        <goals>
 -                            <goal>wsimport</goal>
 -                        </goals>
 -                        <configuration>
 -                            <verbose>true</verbose>
 -                            <bindingDirectory>${basedir}/src/main/custom-binding</bindingDirectory>
 -                            <bindingFiles>
 -                                <bindingFile>stalservice-custom.xml</bindingFile>
 -                                <bindingFile>staltypes-custom.xml</bindingFile>
 -                            </bindingFiles>
 -                            <wsdlDirectory>${basedir}/src/main/webapp/WEB-INF/wsdl</wsdlDirectory>
 -                            <wsdlFiles>
 -                                <wsdlFile>stal.wsdl</wsdlFile>
 -                            </wsdlFiles>
 -                            <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
 -                            <staleFile>${project.build.directory}/generated-sources/wsimport/.staleFlag</staleFile>
 -                        </configuration>
 -                    </execution>
 -                </executions>
 -            </plugin-->
 -        </plugins>
 -    </build>
 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 +	<parent>
 +		<artifactId>bku</artifactId>
 +		<groupId>at.gv.egiz</groupId>
 +		<version>1.0-SNAPSHOT</version>
 +	</parent>
 +	<modelVersion>4.0.0</modelVersion>
 +	<groupId>at.gv.egiz</groupId>
 +	<artifactId>BKUOnline</artifactId>
 +	<packaging>war</packaging>
 +	<name>BKU Online</name>
 +	<version>1.0-SNAPSHOT</version>
 +
 +	<pluginRepositories>
 +		<pluginRepository>
 +			<id>tlc</id>
 +			<name>TLC Repository</name>
 +			<url>http://commons.ucalgary.ca/pub/m2</url>
 +		</pluginRepository>
 +	</pluginRepositories>
 +
 +	<dependencies>
 +		<dependency>
 +			<groupId>at.gv.egiz</groupId>
 +			<artifactId>bkucommon</artifactId>
 +			<version>1.0-SNAPSHOT</version>
 +		</dependency>
 +		<dependency>
 +      <groupId>at.gv.egiz</groupId>
 +      <artifactId>BKUViewer</artifactId>
 +      <version>1.0-SNAPSHOT</version>
 +    </dependency>
 +		<dependency>
 +			<groupId>commons-logging</groupId>
 +			<artifactId>commons-logging</artifactId>
 +		</dependency>
 +		<dependency>
 +			<groupId>org.springframework</groupId>
 +			<artifactId>spring-core</artifactId>
 +			<version>2.5.5</version>
 +		</dependency>
 +		<dependency>
 +			<groupId>javax.servlet</groupId>
 +			<artifactId>servlet-api</artifactId>
 +			<version>2.5</version>
 +			<scope>provided</scope>
 +		</dependency>
 +		<dependency>
 +			<groupId>org.springframework</groupId>
 +			<artifactId>spring-web</artifactId>
 +			<version>2.5.5</version>
 +		</dependency>
 +		<dependency>
 +			<groupId>at.gv.egiz</groupId>
 +			<artifactId>STALService</artifactId>
 +			<version>1.0-SNAPSHOT</version>
 +			<scope>compile</scope>
 +		</dependency>
 +		<!--
 +			dependency> <groupId>at.gv.egiz</groupId>
 +			<artifactId>BKUApplet</artifactId> <version>1.0-SNAPSHOT</version>
 +			<scope>provided</scope> </dependency
 +		-->
 +		<!--
 +			| see https://wsit.dev.java.net/issues/show_bug.cgi?id=970
 +		-->
 +		<dependency>
 +			<groupId>com.sun.xml.ws</groupId>
 +			<!--
 +				artifactId>webservices-rt</artifactId> <version>1.2</version
 +			-->
 +			<artifactId>jaxws-rt</artifactId>
 +			<version>2.1.4</version>
 +			<!--
 +				conflict with SAAJ from java 6 ? <exclusions> <exclusion>
 +				<groupId>javax.xml.soap</groupId> <artifactId>saaj-api</artifactId>
 +				</exclusion> <exclusion>
 +				<groupId>com.sun.xml.messaging.saaj</groupId>
 +				<artifactId>saaj-impl</artifactId> </exclusion> </exclusions
 +			-->
 +		</dependency>
 +		<!--
 +			dependency> <groupId>at.gv.egiz</groupId>
 +			<artifactId>BKUApplet</artifactId> <version>1.0-SNAPSHOT</version>
 +			<scope>compile</scope> </dependency
 +		-->
 +	</dependencies>
 +	<properties>
 +		<netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
 +	</properties>
 +	<scm>
 +	  <developerConnection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/trunk/BKUOnline</developerConnection>
 +		<connection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/trunk/BKUOnline</connection>
 +		<url>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/trunk/BKUOnline</url>
 +	</scm>
 +	<build>
 +		<plugins>
 +			<plugin>
 +				<artifactId>maven-dependency-plugin</artifactId>
 +				<executions>
 +					<execution>
 +						<id>copyapplet</id>
 +						<goals>
 +							<goal>copy</goal>
 +						</goals>
 +						<configuration>
 +							<artifactItems>
 +								<artifactItem>
 +									<groupId>at.gv.egiz</groupId>
 +									<artifactId>BKUApplet</artifactId>
 +									<version>1.0-SNAPSHOT</version>
 +								</artifactItem>
 +								<artifactItem>
 +									<groupId>commons-logging</groupId>
 +									<artifactId>commons-logging</artifactId>
 +								</artifactItem>
 +								<artifactItem>
 +									<groupId>iaik</groupId>
 +									<artifactId>iaik_jce_me4se</artifactId>
 +								</artifactItem>
 +							</artifactItems>
 +							<outputDirectory>${project.build.directory}/${project.build.finalName}/applet</outputDirectory>
 +						</configuration>
 +					</execution>
 +				</executions>
 +			</plugin>
 +			<!--
 +				plugin> <groupId>org.codehaus.mojo</groupId>
 +				<artifactId>jaxws-maven-plugin</artifactId> <executions> <execution>
 +				<goals> <goal>wsimport</goal> </goals> <configuration>
 +				<verbose>true</verbose>
 +				<bindingDirectory>${basedir}/src/main/custom-binding</bindingDirectory>
 +				<bindingFiles> <bindingFile>stalservice-custom.xml</bindingFile>
 +				<bindingFile>staltypes-custom.xml</bindingFile> </bindingFiles>
 +				<wsdlDirectory>${basedir}/src/main/webapp/WEB-INF/wsdl</wsdlDirectory>
 +				<wsdlFiles> <wsdlFile>stal.wsdl</wsdlFile> </wsdlFiles>
 +				<sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
 +				<staleFile>${project.build.directory}/generated-sources/wsimport/.staleFlag</staleFile>
 +				</configuration> </execution> </executions> </plugin
 +			-->
 +			<plugin>
 +				<artifactId>maven-war-plugin</artifactId>
 +				<version>2.0.2</version>
 +				<configuration>
 +					<manifest>
 +						<addDefaultImplementationEntries>
 +							true
 +            </addDefaultImplementationEntries>
 +					</manifest>
 +					<archive>
 +						<manifestEntries>
 +							<Implementation-Build>
 +								${project.version}-r${buildNumber}
 +              </Implementation-Build>
 +						</manifestEntries>
 +					</archive>
 +				</configuration>
 +			</plugin>
 +			<plugin>
 +				<groupId>org.codehaus.mojo</groupId>
 +				<artifactId>maven-buildnumber-plugin</artifactId>
 +				<version>0.9.6</version>
 +				<executions>
 +					<execution>
 +						<phase>validate</phase>
 +						<goals>
 +							<goal>create</goal>
 +						</goals>
 +					</execution>
 +				</executions>
 +				<configuration>
 +					<doCheck>false</doCheck>
 +					<doUpdate>false</doUpdate>
 +				</configuration>
 +			</plugin>
 +		</plugins>
 +	</build>
  </project>
 diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/Configurator.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/Configurator.java index de577139..c09abcc1 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/Configurator.java +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/Configurator.java @@ -17,8 +17,10 @@  package at.gv.egiz.bku.online.conf;  import iaik.security.ecc.provider.ECCProvider; +import iaik.security.provider.IAIK;  import iaik.xml.crypto.XSecProvider; +import java.io.IOException;  import java.net.HttpURLConnection;  import java.security.Provider;  import java.security.Security; @@ -29,22 +31,30 @@ import javax.net.ssl.HttpsURLConnection;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory; +import at.gv.egiz.bku.binding.DataUrl; +import at.gv.egiz.bku.binding.DataUrlConnection; +import at.gv.egiz.bku.slcommands.impl.xsect.DataObject;  import at.gv.egiz.bku.slcommands.impl.xsect.STALProvider; -import iaik.security.provider.IAIK;  /**   *    * TODO currently only the code to get started.   */ -public class Configurator { +public abstract class Configurator {  	private Log log = LogFactory.getLog(Configurator.class); +	 +	private static Configurator instance = new SpringConfigurator();  	protected Properties properties; -	public Configurator() { +	protected Configurator() {  	} +	public static Configurator getInstance() { +	  return instance; +	} +	  	protected void configUrlConnections() {  		HttpsURLConnection.setFollowRedirects(false);  		HttpURLConnection.setFollowRedirects(false); @@ -65,9 +75,14 @@ public class Configurator {  		log.debug(sb.toString());  	} +	protected void configViewer() { +	  DataObject.enableHashDataInputValidation(Boolean.parseBoolean(properties.getProperty("ValidateHashDataInputs"))); +	} +	  	public void configure() {  		configureProviders();  		configUrlConnections(); +		configViewer();  	}  	public void setConfiguration(Properties props) { diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java index 545a69c9..9fe91708 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java @@ -49,6 +49,8 @@ import org.springframework.context.ResourceLoaderAware;  import org.springframework.core.io.Resource;
  import org.springframework.core.io.ResourceLoader;
 +import at.gv.egiz.bku.binding.DataUrl;
 +import at.gv.egiz.bku.binding.DataUrlConnection;
  import at.gv.egiz.bku.slexceptions.SLRuntimeException;
  public class SpringConfigurator extends Configurator implements
 @@ -71,9 +73,24 @@ public class SpringConfigurator extends Configurator implements  		}
  	}
 +	public void configureVersion() {
 +    Properties p = new Properties();
 +    try {
 +      p.load(resourceLoader.getResource("META-INF/MANIFEST.MF").getInputStream());
 +      String version = p.getProperty("Implementation-Build");
 +      properties.setProperty(DataUrlConnection.USER_AGENT_PROPERTY_KEY, "citizen-card-environment/1.2 MOCCA "+version);
 +      DataUrl.setConfiguration(properties);
 +      log.debug("Setting user agent to: "+properties.getProperty(DataUrlConnection.USER_AGENT_PROPERTY_KEY));
 +    } catch (IOException e) {
 +     log.error(e);
 +    }
 +  }
 +	
 +	
  	public void configure() {
  		super.configure();
  		configureSSL();
 +		configureVersion();
  	}
  	private Set<TrustAnchor> getCACerts() throws IOException,
 diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java index bc3edf18..28c714c1 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java @@ -1,121 +1,129 @@  /* -* Copyright 2008 Federal Chancellery Austria and -* Graz University of Technology -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -*     http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.online.webapp;
 -
 -import java.io.IOException;
 -import java.util.Iterator;
 -
 -import javax.servlet.ServletConfig;
 -import javax.servlet.ServletException;
 -import javax.servlet.http.HttpServletRequest;
 -import javax.servlet.http.HttpServletResponse;
 -import javax.servlet.http.HttpSession;
 -
 -import org.apache.commons.logging.Log;
 -import org.apache.commons.logging.LogFactory;
 -
 -import at.gv.egiz.bku.binding.HTTPBindingProcessor;
 -import at.gv.egiz.bku.binding.IdFactory;
 -
 -/**
 - * Delivers the result to the browser 
 - *
 - */
 -public class ResultServlet extends SpringBKUServlet {
 -  
 -  private final static Log log = LogFactory.getLog(ResultServlet.class);
 -  
 -  private String encoding = "UTF-8";
 -  private String expiredPage = "./expiredError.jsp";
 -  
 -  public ResultServlet() {
 -  }
 -  
 -  private void myInit() {
 -    String enc = getServletContext().getInitParameter("responseEncoding");
 -    if (enc != null) {
 -      log.debug("Init default encoding to: "+enc);
 -      encoding = enc;
 -    }
 -    String expP = getServletConfig().getInitParameter("expiredPage");
 -    if (expP != null) {
 -      log.debug("Init expired page to: "+expP);
 -      expiredPage = expP;
 -    }
 -  }
 -
 -  @Override
 -  public void init() throws ServletException {
 -    super.init();
 -    myInit();
 -  }
 -
 -  @Override
 -  public void init(ServletConfig config) throws ServletException {
 -    super.init(config);
 -    myInit();
 -  }
 -
 -
 -
 -  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
 -      throws ServletException, IOException {
 -    doGet(req, resp);
 -  }
 -
 -  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
 -      throws ServletException, java.io.IOException {
 -
 -    HttpSession session = req.getSession(false);
 -    if (session == null) {
 -      resp.sendRedirect(expiredPage);
 -      return;
 -    }
 -    String sessionId = session.getId();
 -    if (sessionId == null) {
 -      resp.sendRedirect(expiredPage);
 -      return;
 -    }
 -    log.debug("Got a result request for session: " + sessionId);
 -    HTTPBindingProcessor bp = (HTTPBindingProcessor) getBindingProcessorManager().getBindingProcessor(
 -        IdFactory.getInstance().createId(sessionId));
 -    if (bp == null) {
 -      session.invalidate();
 -      resp.sendRedirect(expiredPage);
 -      return;
 -    }
 -    
 -    if (bp.getRedirectURL() != null) {
 -      resp.sendRedirect(bp.getRedirectURL());
 -      return;
 -    }
 -    resp.setStatus(bp.getResponseCode());
 -    resp.setHeader("Cache-Control","no-store"); //HTTP 1.1
 -    resp.setHeader("Pragma","no-cache"); //HTTP 1.0
 -    resp.setDateHeader ("Expires", 0);
 -    for (Iterator<String> it = bp.getResponseHeaders().keySet()
 -        .iterator(); it.hasNext();) {
 -      String header = it.next();
 -      resp.setHeader(header, bp.getResponseHeaders().get(header));
 -    }
 -    resp.setContentType(bp.getResultContentType());
 -    resp.setCharacterEncoding(encoding);
 -    bp.writeResultTo(resp.getOutputStream(), encoding);
 + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *     http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package at.gv.egiz.bku.online.webapp; + +import java.io.IOException; +import java.util.Iterator; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.binding.HTTPBindingProcessor; +import at.gv.egiz.bku.binding.HttpUtil; +import at.gv.egiz.bku.binding.IdFactory; +import at.gv.egiz.bku.online.conf.Configurator; + +/** + * Delivers the result to the browser + *  + */ +public class ResultServlet extends SpringBKUServlet { + +  private final static Log log = LogFactory.getLog(ResultServlet.class); +  public final static String USER_AGENT_PROPERTY_KEY = "UserAgent"; + +  private String encoding = "UTF-8"; +  private String expiredPage = "./expiredError.jsp"; + +  public ResultServlet() { +  } + +  private void myInit() { +    String enc = getServletContext().getInitParameter("responseEncoding"); +    if (enc != null) { +      log.debug("Init default encoding to: " + enc); +      encoding = enc; +    } +    String expP = getServletConfig().getInitParameter("expiredPage"); +    if (expP != null) { +      log.debug("Init expired page to: " + expP); +      expiredPage = expP; +    } +  } + +  @Override +  public void init() throws ServletException { +    super.init(); +    myInit(); +  } + +  @Override +  public void init(ServletConfig config) throws ServletException { +    super.init(config); +    myInit(); +  } + +  protected void doPost(HttpServletRequest req, HttpServletResponse resp) +      throws ServletException, IOException { +    doGet(req, resp); +  } + +  protected void doGet(HttpServletRequest req, HttpServletResponse resp) +      throws ServletException, java.io.IOException { + +    HttpSession session = req.getSession(false); +    if (session == null) { +      resp.sendRedirect(expiredPage); +      return; +    } +    String sessionId = session.getId(); +    if (sessionId == null) { +      resp.sendRedirect(expiredPage); +      return; +    } +    log.debug("Got a result request for session: " + sessionId); +    HTTPBindingProcessor bp = (HTTPBindingProcessor) getBindingProcessorManager() +        .getBindingProcessor(IdFactory.getInstance().createId(sessionId)); +    if (bp == null) { +      session.invalidate(); +      resp.sendRedirect(expiredPage); +      return; +    } + +    if (bp.getRedirectURL() != null) { +      resp.sendRedirect(bp.getRedirectURL()); +      return; +    } +    resp.setStatus(bp.getResponseCode()); +    resp.setHeader("Cache-Control", "no-store"); // HTTP 1.1
 +    resp.setHeader("Pragma", "no-cache"); // HTTP 1.0
 +    resp.setDateHeader("Expires", 0); +    if (Configurator.getInstance().getProperty(USER_AGENT_PROPERTY_KEY) != null) { +      resp.setHeader(HttpUtil.HTTP_HEADER_USER_AGENT, Configurator.getInstance().getProperty( +          USER_AGENT_PROPERTY_KEY)); +    } else { +      resp.setHeader(HttpUtil.HTTP_HEADER_USER_AGENT, +          "citizen-card-environment/1.2 MOCCA Unknown"); +    } +    for (Iterator<String> it = bp.getResponseHeaders().keySet().iterator(); it +        .hasNext();) { +      String header = it.next(); +      resp.setHeader(header, bp.getResponseHeaders().get(header)); +    } +    resp.setContentType(bp.getResultContentType()); +    resp.setCharacterEncoding(encoding); +    bp.writeResultTo(resp.getOutputStream(), encoding);      session.invalidate(); -    getBindingProcessorManager().removeBindingProcessor(bp.getId());
 -  }
 -}
 +    getBindingProcessorManager().removeBindingProcessor(bp.getId()); +  } +} diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java index 6ee537b1..ec062e42 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java @@ -19,13 +19,13 @@ package at.gv.egiz.bku.online.webapp;  import javax.servlet.http.HttpServlet;
  import at.gv.egiz.bku.binding.BindingProcessorManager;
 +import at.gv.egiz.bku.online.conf.Configurator;  public abstract class SpringBKUServlet extends HttpServlet {
 -  public final static String BEAN_NAME="bindingProcessorManager";
 -  
 +  public final static String BEAN_NAME="bindingProcessorManager"; +      protected BindingProcessorManager getBindingProcessorManager() {
      return (BindingProcessorManager) getServletContext().getAttribute(BEAN_NAME);
    }
 -
  }
 diff --git a/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties b/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties index 108f8624..cdc2bfad 100644 --- a/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties +++ b/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties @@ -39,3 +39,5 @@ SSL.sslProtocol=TLS  # ------------ END SSL Config  --------------------
 +ValidateHashDataInputs=true
 +
 diff --git a/BKUOnline/src/main/resources/log4j.properties b/BKUOnline/src/main/resources/log4j.properties index ed14b424..58f09511 100644 --- a/BKUOnline/src/main/resources/log4j.properties +++ b/BKUOnline/src/main/resources/log4j.properties @@ -13,9 +13,8 @@  # See the License for the specific language governing permissions and  # limitations under the License. -# loglever DEBUG, appender STDOUT -log4j.rootLogger=TRACE, STDOUT -#log4j.logger.at.gv.egiz.slbinding.RedirectEventFilter=DEBUG, STDOUT + +log4j.rootLogger=TRACE, STDOUT, file  # STDOUT appender  log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender @@ -24,11 +23,11 @@ log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout  #log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n  log4j.appender.STDOUT.layout.ConversionPattern=%-5p | %t | %c %x - %m%n -### FILE appender -#log4j.appender.file=org.apache.log4j.RollingFileAppender -#log4j.appender.file.maxFileSize=100KB -#log4j.appender.file.maxBackupIndex=9 -#log4j.appender.file.File=egovbus_ca.log -#log4j.appender.file.threshold=info -#log4j.appender.file.layout=org.apache.log4j.PatternLayout -#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
\ No newline at end of file +# FILE appender +log4j.appender.file=org.apache.log4j.RollingFileAppender +log4j.appender.file.maxFileSize=500KB +log4j.appender.file.maxBackupIndex=9 +log4j.appender.file.File=${catalina.home}/logs/bkuonline.log +log4j.appender.file.threshold=trace +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p | %t | %c{1}:%L - %m%n
\ No newline at end of file diff --git a/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml b/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml index f87d09f5..04b07ba4 100644 --- a/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml +++ b/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml @@ -45,8 +45,8 @@  	</bean>
  	<!-- Configure Configuration -->
 -	<bean id="configurator" class="at.gv.egiz.bku.online.conf.SpringConfigurator"
 -		scope="singleton" init-method="configure">
 +	<bean id="configurator" factory-method="getInstance" class="at.gv.egiz.bku.online.conf.SpringConfigurator"
 +		 init-method="configure">
  		<property name="resource" value="classpath:at/gv/egiz/bku/online/conf/defaultConf.properties"/>
  	</bean>
 diff --git a/BKUOnline/src/main/webapp/appletPage.jsp b/BKUOnline/src/main/webapp/appletPage.jsp index 684a8dca..fdd7072f 100644 --- a/BKUOnline/src/main/webapp/appletPage.jsp +++ b/BKUOnline/src/main/webapp/appletPage.jsp @@ -25,15 +25,15 @@  <body>  <script src="./js/deployJava.js"></script>  <script> -	if (!deployJava.versionCheck('1.6.0')) { +	if (!deployJava.versionCheck('1.6.0_02')) {  		document -				.write('<b>Diese Anwendung benötigt die Java Platform Version 1.6.0 oder höher.</b>' + '<input type="submit" value="Java Platform 1.6.0 installieren" onclick="deployJava.installLatestJRE();">'); +				.write('<b>Diese Anwendung benötigt die Java Platform Version 1.6.0_02 oder höher.</b>' + '<input type="submit" value="Java Platform 1.6.0_02 installieren" onclick="deployJava.installLatestJRE();">');  	} else {  		var attributes = {  			codebase :'applet',  			code :'at.gv.egiz.bku.online.applet.BKUApplet.class',  			archive :'BKUApplet-1.0-SNAPSHOT.jar, commons-logging-1.1.1.jar, iaik_jce_me4se-3.04.jar', -			width :500, +			width :400,  			height :200  		};  		var parameters = { @@ -41,7 +41,7 @@  			SessionID : '<%= session.getId() %>',  			redirectURL : '../bkuResult'  		}; -		var version = '1.6.0'; +		var version = '1.6.0_02';  		deployJava.runApplet(attributes, parameters, version);  	}  </script> diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java index 8eaeacbd..a8477ece 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java @@ -16,13 +16,14 @@  */  package at.gv.egiz.bku.binding;
 -import java.net.MalformedURLException;
 -import java.net.URL;
 -
 -import org.apache.commons.logging.Log;
 -import org.apache.commons.logging.LogFactory;
 -
 -import at.gv.egiz.bku.slexceptions.SLRuntimeException;
 +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.slexceptions.SLRuntimeException;  /**
   * Used to handle DataUrl connections as specified in the CCE's HTTP protocol binding. 
 @@ -30,7 +31,8 @@ import at.gv.egiz.bku.slexceptions.SLRuntimeException;   */
  public class DataUrl {
    private static DataUrlConnectionSPI defaultDataUrlConnection = new DataUrlConnectionImpl();
 -  private static Log log = LogFactory.getLog(DataUrl.class);
 +  private static Log log = LogFactory.getLog(DataUrl.class); +  private static Properties configuration;
    private URL url;
 @@ -58,5 +60,9 @@ public class DataUrl {        log.error(e);
        throw new SLRuntimeException("Cannot instantiate a dataurlconnection:",e);
      }
 +  } +   +  public static void setConfiguration(Properties props) { +    configuration = props;    }
  }
\ No newline at end of file diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java index 6d654639..c6ffa32a 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java @@ -34,14 +34,16 @@ import at.gv.egiz.bku.slcommands.SLResult;   */
  public interface DataUrlConnection {
 -    public static final String DEFAULT_USERAGENT = "citizen-card-environment/1.2 BKU2 1.0";
 +    public static final String DEFAULT_USERAGENT = "citizen-card-environment/1.2 MOCCA Unknown";
      public static final String FORMPARAM_RESPONSETYPE = "ResponseType";
      public static final String DEFAULT_RESPONSETYPE = "HTTP-Security-Layer-RESPONSE";
      public static final String FORMPARAM_XMLRESPONSE = "XMLResponse";
      public static final String FORMPARAM_BINARYRESPONSE = "BinaryResponse";
      public static final String XML_RESPONSE_ENCODING = "UTF-8";
 -
 + +    public final static String USER_AGENT_PROPERTY_KEY="UserAgent"; +    
      public String getProtocol();      public URL getUrl();
 diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java index 9f5d70cb..bb0314b5 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java @@ -1,221 +1,235 @@  /* -* Copyright 2008 Federal Chancellery Austria and -* Graz University of Technology -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -*     http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding;
 -
 -import java.io.FileOutputStream;
 -import java.io.IOException;
 -import java.io.InputStream;
 -import java.io.OutputStream;
 -import java.net.HttpURLConnection;
 -import java.net.SocketTimeoutException;
 -import java.net.URL;
 -import java.security.cert.X509Certificate;
 -import java.util.ArrayList;
 -import java.util.HashMap;
 -import java.util.Iterator;
 -import java.util.List;
 -import java.util.Map;
 -import java.util.Set;
 -
 -import javax.net.ssl.HttpsURLConnection;
 -
 -import org.apache.commons.httpclient.methods.multipart.FilePart;
 -import org.apache.commons.httpclient.methods.multipart.Part;
 -import org.apache.commons.httpclient.methods.multipart.StringPart;
 -
 -import at.gv.egiz.bku.binding.multipart.InputStreamPartSource;
 -import at.gv.egiz.bku.binding.multipart.SLResultPart;
 -import at.gv.egiz.bku.slcommands.SLResult;
 -import at.gv.egiz.bku.slcommands.SLResult.SLResultType;
 -import at.gv.egiz.bku.slexceptions.SLRuntimeException;
 -import at.gv.egiz.bku.utils.StreamUtil;
 -import at.gv.egiz.bku.utils.binding.Protocol;
 -
 -/**
 - * not thread-safe thus newInsance always returns a new object
 - * 
 - */
 -public class DataUrlConnectionImpl implements DataUrlConnectionSPI {
 -
 -  public final static Protocol[] SUPPORTED_PROTOCOLS = { Protocol.HTTP,
 -      Protocol.HTTPS };
 -  protected X509Certificate serverCertificate;
 -  protected Protocol protocol;
 -  protected URL url;
 -  private HttpURLConnection connection;
 -  protected Map<String, String> requestHttpHeaders;
 -  protected ArrayList<Part> formParams;
 -  protected String boundary;
 -
 -  protected DataUrlResponse result;
 -
 -  public String getProtocol() {
 -    if (protocol == null) {
 -      return null;
 -    }
 -    return protocol.toString();
 -  }
 -
 -  /**
 -   * opens a connection sets the headers gets the server certificate
 -   * 
 -   * @throws java.net.SocketTimeoutException
 -   * @throws java.io.IOException
 -   * @pre url != null
 -   * @pre httpHeaders != null
 -   */
 -  public void connect() throws SocketTimeoutException, IOException {
 -    connection = (HttpURLConnection) url.openConnection();
 -
 + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *     http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package at.gv.egiz.bku.binding; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.SocketTimeoutException; +import java.net.URL; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import javax.net.ssl.HttpsURLConnection; + +import org.apache.commons.httpclient.methods.multipart.FilePart; +import org.apache.commons.httpclient.methods.multipart.Part; +import org.apache.commons.httpclient.methods.multipart.StringPart; + +import at.gv.egiz.bku.binding.multipart.InputStreamPartSource; +import at.gv.egiz.bku.binding.multipart.SLResultPart; +import at.gv.egiz.bku.slcommands.SLResult; +import at.gv.egiz.bku.slcommands.SLResult.SLResultType; +import at.gv.egiz.bku.slexceptions.SLRuntimeException; +import at.gv.egiz.bku.utils.binding.Protocol; + +/** + * not thread-safe thus newInsance always returns a new object + *  + */ +public class DataUrlConnectionImpl implements DataUrlConnectionSPI { + +  public final static Protocol[] SUPPORTED_PROTOCOLS = { Protocol.HTTP, +      Protocol.HTTPS }; +  protected X509Certificate serverCertificate; +  protected Protocol protocol; +  protected URL url; +  private HttpURLConnection connection; +  protected Map<String, String> requestHttpHeaders; +  protected ArrayList<Part> formParams; +  protected String boundary; +  protected Properties config = null; + +  protected DataUrlResponse result; + +  public String getProtocol() { +    if (protocol == null) { +      return null; +    } +    return protocol.toString(); +  } + +  /** +   * opens a connection sets the headers gets the server certificate +   *  +   * @throws java.net.SocketTimeoutException +   * @throws java.io.IOException +   * @pre url != null +   * @pre httpHeaders != null +   */ +  public void connect() throws SocketTimeoutException, IOException { +    connection = (HttpURLConnection) url.openConnection(); +      // FIXXME move this to config.
 -    HttpURLConnection.setFollowRedirects(false);
 -    
 -    
 -    connection.setDoOutput(true);
 -    Set<String> headers = requestHttpHeaders.keySet();
 -    Iterator<String> headerIt = headers.iterator();
 -    while (headerIt.hasNext()) {
 -      String name = headerIt.next();
 -      connection.setRequestProperty(name, requestHttpHeaders.get(name));
 -    }
 -    connection.connect();
 -    if (connection instanceof HttpsURLConnection) {
 -      HttpsURLConnection ssl = (HttpsURLConnection) connection;
 -      X509Certificate[] certs = (X509Certificate[]) ssl.getServerCertificates();
 -      if ((certs != null) && (certs.length >= 1)) {
 -        serverCertificate = certs[0];
 -      }
 -    }
 -  }
 -
 -  public X509Certificate getServerCertificate() {
 -    return serverCertificate;
 -  }
 -
 -  public void setHTTPHeader(String name, String value) {
 -    if (name != null && value != null) {
 -      requestHttpHeaders.put(name, value);
 -    }
 -  }
 -
 -  public void setHTTPFormParameter(String name, InputStream data,
 -      String contentType, String charSet, String transferEncoding) {
 -    InputStreamPartSource source = new InputStreamPartSource(null, data);
 -    FilePart formParam = new FilePart(name, source, contentType, charSet);
 -    if (transferEncoding != null) {
 -      formParam.setTransferEncoding(transferEncoding);
 -    } else {
 -      formParam.setTransferEncoding(null);
 -    }
 -    formParams.add(formParam);
 -  }
 -
 -  /**
 -   * send all formParameters
 -   * 
 -   * @throws java.io.IOException
 -   */
 -  public void transmit(SLResult slResult) throws IOException {
 -    SLResultPart slResultPart = new SLResultPart(slResult,
 -        XML_RESPONSE_ENCODING);
 -    if (slResult.getResultType() == SLResultType.XML) {
 -      slResultPart.setTransferEncoding(null);
 -      slResultPart.setContentType(slResult.getMimeType());
 -      slResultPart.setCharSet(XML_RESPONSE_ENCODING);
 -    } else {
 -      slResultPart.setTransferEncoding(null);
 -      slResultPart.setContentType(slResult.getMimeType());
 -    }
 -    formParams.add(slResultPart);
 -
 -    OutputStream os = connection.getOutputStream();
 -    
 -    Part[] parts = new Part[formParams.size()];
 -    Part.sendParts(os, formParams.toArray(parts), boundary.getBytes());
 -    os.close();
 +    HttpURLConnection.setFollowRedirects(false); + +    connection.setDoOutput(true); +    Set<String> headers = requestHttpHeaders.keySet(); +    Iterator<String> headerIt = headers.iterator(); +    while (headerIt.hasNext()) { +      String name = headerIt.next(); +      connection.setRequestProperty(name, requestHttpHeaders.get(name)); +    } +    connection.connect(); +    if (connection instanceof HttpsURLConnection) { +      HttpsURLConnection ssl = (HttpsURLConnection) connection; +      X509Certificate[] certs = (X509Certificate[]) ssl.getServerCertificates(); +      if ((certs != null) && (certs.length >= 1)) { +        serverCertificate = certs[0]; +      } +    } +  } + +  public X509Certificate getServerCertificate() { +    return serverCertificate; +  } + +  public void setHTTPHeader(String name, String value) { +    if (name != null && value != null) { +      requestHttpHeaders.put(name, value); +    } +  } + +  public void setHTTPFormParameter(String name, InputStream data, +      String contentType, String charSet, String transferEncoding) { +    InputStreamPartSource source = new InputStreamPartSource(null, data); +    FilePart formParam = new FilePart(name, source, contentType, charSet); +    if (transferEncoding != null) { +      formParam.setTransferEncoding(transferEncoding); +    } else { +      formParam.setTransferEncoding(null); +    } +    formParams.add(formParam); +  } + +  /** +   * send all formParameters +   *  +   * @throws java.io.IOException +   */ +  public void transmit(SLResult slResult) throws IOException { +    SLResultPart slResultPart = new SLResultPart(slResult, +        XML_RESPONSE_ENCODING); +    if (slResult.getResultType() == SLResultType.XML) { +      slResultPart.setTransferEncoding(null); +      slResultPart.setContentType(slResult.getMimeType()); +      slResultPart.setCharSet(XML_RESPONSE_ENCODING); +    } else { +      slResultPart.setTransferEncoding(null); +      slResultPart.setContentType(slResult.getMimeType()); +    } +    formParams.add(slResultPart); + +    OutputStream os = connection.getOutputStream(); + +    Part[] parts = new Part[formParams.size()]; +    Part.sendParts(os, formParams.toArray(parts), boundary.getBytes()); +    os.close();      // MultipartRequestEntity PostMethod
 -    result = new DataUrlResponse(url.toString(), connection.getResponseCode(),
 -        connection.getInputStream());
 -    
 -    Map<String, String> responseHttpHeaders = new HashMap<String, String>();
 -    Map<String, List<String>> httpHeaders = connection.getHeaderFields();
 -    for (Iterator<String> keyIt = httpHeaders.keySet().iterator(); keyIt
 -        .hasNext();) {
 -      String key = keyIt.next();
 -      StringBuffer value = new StringBuffer();
 -      for (String val : httpHeaders.get(key)) {
 -        value.append(val);
 -        value.append(HttpUtil.SEPERATOR[0]);
 -      }
 -      String valString = value.substring(0, value.length() - 1);
 -      if ((key != null)&&(value.length() > 0)) {
 -        responseHttpHeaders.put(key, valString);
 -      }
 -    }
 -    result.setResponseHttpHeaders(responseHttpHeaders);
 -  }
 -
 -  @Override
 -  public DataUrlResponse getResponse() throws IOException {
 -    return result;
 -  }
 -
 -  /**
 -   * inits protocol, url, httpHeaders, formParams
 -   * 
 -   * @param url
 -   *          must not be null
 -   */
 -  @Override
 -  public void init(URL url) {
 -
 -    for (int i = 0; i < SUPPORTED_PROTOCOLS.length; i++) {
 -      if (SUPPORTED_PROTOCOLS[i].toString().equalsIgnoreCase(url.getProtocol())) {
 -        protocol = SUPPORTED_PROTOCOLS[i];
 -        break;
 -      }
 -    }
 -    if (protocol == null) {
 -      throw new SLRuntimeException("Protocol " + url.getProtocol()
 -          + " not supported for data url");
 -    }
 -    this.url = url;
 -    boundary = "--" + IdFactory.getInstance().createId().toString();
 -    requestHttpHeaders = new HashMap<String, String>();
 -    requestHttpHeaders.put(HttpUtil.HTTP_HEADER_USER_AGENT, DEFAULT_USERAGENT);
 -    requestHttpHeaders.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE,
 -        HttpUtil.MULTIPART_FOTMDATA + HttpUtil.SEPERATOR[0]
 -            + HttpUtil.MULTIPART_FOTMDATA_BOUNDARY + "=" + boundary);
 -
 -    formParams = new ArrayList<Part>();
 -    StringPart responseType = new StringPart(FORMPARAM_RESPONSETYPE,
 -        DEFAULT_RESPONSETYPE);
 -    responseType.setCharSet("UTF-8");
 -    responseType.setTransferEncoding(null);
 -    formParams.add(responseType);
 -  }
 -
 -  @Override
 -  public DataUrlConnectionSPI newInstance() {
 -    return new DataUrlConnectionImpl();
 +    result = new DataUrlResponse(url.toString(), connection.getResponseCode(), +        connection.getInputStream()); + +    Map<String, String> responseHttpHeaders = new HashMap<String, String>(); +    Map<String, List<String>> httpHeaders = connection.getHeaderFields(); +    for (Iterator<String> keyIt = httpHeaders.keySet().iterator(); keyIt +        .hasNext();) { +      String key = keyIt.next(); +      StringBuffer value = new StringBuffer(); +      for (String val : httpHeaders.get(key)) { +        value.append(val); +        value.append(HttpUtil.SEPERATOR[0]); +      } +      String valString = value.substring(0, value.length() - 1); +      if ((key != null) && (value.length() > 0)) { +        responseHttpHeaders.put(key, valString); +      } +    } +    result.setResponseHttpHeaders(responseHttpHeaders);    } -	@Override -	public URL getUrl() { -		return url; -	}
 +  @Override +  public DataUrlResponse getResponse() throws IOException { +    return result; +  } + +  /** +   * inits protocol, url, httpHeaders, formParams +   *  +   * @param url +   *          must not be null +   */ +  @Override +  public void init(URL url) { + +    for (int i = 0; i < SUPPORTED_PROTOCOLS.length; i++) { +      if (SUPPORTED_PROTOCOLS[i].toString().equalsIgnoreCase(url.getProtocol())) { +        protocol = SUPPORTED_PROTOCOLS[i]; +        break; +      } +    } +    if (protocol == null) { +      throw new SLRuntimeException("Protocol " + url.getProtocol() +          + " not supported for data url"); +    } +    this.url = url; +    boundary = "--" + IdFactory.getInstance().createId().toString(); +    requestHttpHeaders = new HashMap<String, String>(); +    if ((config != null) +        && (config.getProperty(USER_AGENT_PROPERTY_KEY) != null)) { +      requestHttpHeaders.put(HttpUtil.HTTP_HEADER_USER_AGENT, config +          .getProperty(USER_AGENT_PROPERTY_KEY)); +    } else { +      requestHttpHeaders +          .put(HttpUtil.HTTP_HEADER_USER_AGENT, DEFAULT_USERAGENT); + +    } +    requestHttpHeaders.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, +        HttpUtil.MULTIPART_FOTMDATA + HttpUtil.SEPERATOR[0] +            + HttpUtil.MULTIPART_FOTMDATA_BOUNDARY + "=" + boundary); + +    formParams = new ArrayList<Part>(); +    StringPart responseType = new StringPart(FORMPARAM_RESPONSETYPE, +        DEFAULT_RESPONSETYPE); +    responseType.setCharSet("UTF-8"); +    responseType.setTransferEncoding(null); +    formParams.add(responseType); +  } + +  @Override +  public DataUrlConnectionSPI newInstance() { +    DataUrlConnectionSPI uc = new DataUrlConnectionImpl(); +    uc.setConfiguration(config); +    return uc; +  } + +  @Override +  public URL getUrl() { +    return url; +  } + +  @Override +  public void setConfiguration(Properties config) { +    this.config = config; +  }  }
\ No newline at end of file diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java index 9e5a66f8..80cc3a0b 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java @@ -17,6 +17,7 @@  package at.gv.egiz.bku.binding;
  import java.net.URL;
 +import java.util.Properties;  /**
   * Prototype of a DataurlconnectionSPI
 @@ -36,7 +37,13 @@ public interface DataUrlConnectionSPI extends DataUrlConnection {     * Initializes the DataUrlConnection
     * @param url
     */
 -  public void init(URL url);
 +  public void init(URL url); +   +  /** +   * Sets configuration parameters for this connection +   * @param config +   */ +  public void setConfiguration(Properties config);
  }
 diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java index 555f83bd..fb624211 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java @@ -16,12 +16,14 @@  */  package at.gv.egiz.bku.slcommands.impl;
 -import at.buergerkarte.namespaces.securitylayer._1.ErrorResponseType;
 -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
 -import at.gv.egiz.bku.slcommands.ErrorResult;
 -import at.gv.egiz.bku.slexceptions.SLException;
 -
 -import javax.xml.transform.Result;
 +import java.util.Locale; + +import javax.xml.transform.Result; + +import at.buergerkarte.namespaces.securitylayer._1.ErrorResponseType; +import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; +import at.gv.egiz.bku.slcommands.ErrorResult; +import at.gv.egiz.bku.slexceptions.SLException;  /**
   * This class implements the security layer result <code>ErrorResponse</code>.
 diff --git a/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties b/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties index 8e0a09bc..cf52a4c3 100644 --- a/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties +++ b/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties @@ -13,85 +13,86 @@  # See the License for the specific language governing permissions and  # limitations under the License. -test.noerror=This is a test error-message. No error occurred. - -ec1000=Unclassified error. -ec2000=Unclassified error in the transport binding. -ec2001=HTTP/HTTPS binding: DataURL cannot be resolved. -ec2002=HTTP/HTTPS binding: StylesheetURL cannot be resolved. -ec2003=HTTP/HTTPS binding: RedirectURL cannot be resolved. -ec2004=HTTP/HTTPS binding: XMLRequest parameter missing. -ec2005=HTTP/HTTPS binding: Unknown parameter encoding. -ec2006=HTTP/HTTPS binding: Incorrect parameter encoding. -ec2007=HTTP/HTTPS binding: DataURL server transmits error or unexpected response. -ec2008=HTTP/HTTPS binding: Error in stylesheet obtained from the StylesheetURL. -ec2009=HTTP/HTTPS binding: HTTP request to local CCE directed to unauthorised URL. -ec2010=HTTPS binding: Error while establishing the TLS connection. -ec3000=Unclassified error in the XML structure of the command request. -ec3001=XML structure of the command request is not well formed. -ec3002=XML structure of the command request does not comply with the Security Layer schema. -ec3003=XML structure of the command request contains an invalid combination of optional elements or attributes. -ec3004=XML structure contains an element or attribute whose syntax does not match the Security Layer specification. -ec3005=Protocol version of Security Layer not supported. -ec4000=Unclassified error while processing command. -ec4001=Unknown key box identifier. -ec4002=Unknown info box identifier. -ec4003=Date to be signed cannot be resolved. -ec4004=Supplementary object cannot be resolved. -ec4005=Date to be encrypted cannot be resolved. -ec4006=Algorithm (signature, encryption, digest, canonicalisation, transformation) not supported. -ec4007=Error while executing algorithm (signature, encryption, digest, canonicalisation, transformation). -ec4008=Error while parsing CMS message -ec4009=No matching decryption key. -ec4010=Info box command parameters do not match info box type. -ec4011=Command not implemented. -ec4100=XML document in which the signature is to be integrated cannot be resolved. -ec4101=XML document in which the signature is to be integrated cannot be parsed. -ec4102=Signature cannot be integrated in the existing XML document at the specified location. -ec4103=Signature certificate not contained in the CMS signature. -ec4104=Signed data not contained in the CMS signature or XML request. -ec4105=XML document containing the signature to be verified cannot be resolved. -ec4106=XML document containing the signature to be verified cannot be parsed. -ec4107=There is no XML signature at the specified location within the XML document. -ec4108=Encrypted date cannot be inserted in the existing XML document at the specified location. -ec4109=Existing XML document is required but missing. -ec4110=Existing XML document cannot be resolved. -ec4111=Existing XML document cannot be parsed. -ec4112=Encrypted data encryption keys cannot be inserted in the existing XML document at the specified location. -ec4113=Data to be decrypted not contained in either the CMS message or XML request. -ec4114=XML document to be decrypted cannot be resolved. -ec4115=XML document to be decrypted cannot be parsed. -ec4116=At least one specified encryption element cannot be found in the XML document to be decrypted. -ec4117=No encryption element for binary response. -ec4118=Date to be hashed cannot be resolved. -ec4119=Date for which the hash value is to be verified cannot be resolved. -ec4120=Selected info box identifier already allocated. -ec4121=Info box with specified identifier does not exist. -ec4122=Contents of the selected info box cannot be displayed as XML. -ec4123=Associative array: No entry for the specified key. -ec5000=Unclassified error in the viewer component. -ec5001=Display of data of the mime type specified in the command request not supported. -ec5002=Character encoding of the data to be displayed is invalid or not supported. -ec5003=Data to be displayed contains unsupported characters. -ec5004=Standard display format: HTML does not conform to specification. -ec5005=Standard display format: CSS does not conform to specification. -ec5006=Standard display format: Format of an embedded image does not conform to specification. -ec5007=Standard display format: Signature for embedded images missing or does not conform to specification. -ec6000=Unclassified cancelling by the citizen. -ec6001=Cancelled by the citizen via the user interface. -ec6002=Cancelled because of insufficient rights to execute command. - -# 3xxx -# - -ec3000.unclassified=Error in the XML structure of the command request. {0} -ec3002.invalid=XML structure of the command request does not comply with the Security Layer schema. {0}  - -# 4xxx -# - -ec4000.infobox.invalid=The infobox '{0}' contains invalid content. -ec4000.idlink.transfomation.failed=Failed to transform CompressedIdentityLink with Stylesheet {0}. -ec4002.infobox.unknown=Unknown info box identifier {0}. -ec4003.not.resolved=Data to be signed cannot be resolved from URI={0}. -ec4011.notimplemented=Command {0} not implemented. +test.noerror=Das ist eine Test-Fehlermeldung. Es ist kein Fehler aufgetreten.
 +
 +ec1000=Unklassifizierter Fehler.
 +ec2000=Unklassifizierter Fehler in der Transportbindung.
 +ec2001=HTTP/HTTPS-Bindung: DataURL kann nicht aufgelöst werden.
 +ec2002=HTTP/HTTPS-Bindung: StylesheetURL kann nicht aufgelöst werden.
 +ec2003=HTTP/HTTPS-Bindung: RedirectURL kann nicht aufgelöst werden.
 +ec2004=HTTP/HTTPS-Bindung: Parameter XMLRequest fehlt.
 +ec2005=HTTP/HTTPS-Bindung: Unbekannte Kodierung der Parameter.
 +ec2006=HTTP/HTTPS-Bindung: Fehlerhafte Kodierung der Parameter.
 +ec2007=HTTP/HTTPS-Bindung: DataURL-Server sendet Fehler oder unerwartete Antwort.
 +ec2008=HTTP/HTTPS-Bindung: Fehler im Stylesheet, der von der StylesheetURL bezogen wurde.
 +ec2009=HTTP/HTTPS-Bindung: HTTP-Anfrage an lokale BKU wurde an unerlaubte URL gerichtet.
 +ec2010=HTTPS-Bindung: Fehler beim Aufbau der TLS-Verbindung.
 +ec3000=Unklassifizierter Fehler in der XML-Struktur der Befehlsanfrage.
 +ec3001=XML-Struktur der Befehlsanfrage ist nicht wohlgeformt.
 +ec3002=XML-Struktur der Befehlsanfrage entspricht nicht dem Schema des Security-Layers.
 +ec3003=XML-Struktur der Befehlsanfrage enthält eine unerlaubte Kombination aus optionalen Elementen oder Attributen.
 +ec3004=XML-Struktur enthält ein Element oder Attribut, dessen Syntax nicht der Spezifikation des Security-Layer entspricht.
 +ec3005=Protokollversion des Security-Layer wird nicht unterstützt.
 +ec4000=Unklassifizierter Fehler in der Befehlsabarbeitung.
 +ec4001=Unbekannter Keyboxbezeichner.
 +ec4002=Unbekannter Infoboxbezeichner.
 +ec4003=Zu signierendes Datum kann nicht aufgelöst werden.
 +ec4004=Ergänzungsobjekt kann nicht aufgelöst werden.
 +ec4005=Zu verschlüsselndes Datum kann nicht aufgelöst werden.
 +ec4006=Algorithmus (Signatur, Verschlüsselung, Digest, Kanonisierung, Transformation) wird nicht unterstützt.
 +ec4007=Fehler bei der Algorithmusausführung (Signatur, Verschlüsselung, Digest, Kanonisierung, Transformation).
 +ec4008=Fehler beim Parsen der CMS-Nachricht.
 +ec4009=Kein passender Entschlüsselungsschlüssel vorhanden.
 +ec4010=Parameter des Infobox-Befehls passen nicht zum Typ der Infobox.
 +ec4011=Befehl ist nicht implementiert.
 +ec4100=XML-Dokument, in das die Signatur integriert werden soll, kann nicht aufgelöst werden.
 +ec4101=XML-Dokument, in das die Signatur integriert werden soll, kann nicht geparst werden.
 +ec4102=Signatur kann nicht am spezifizierten Ort in das bestehende XML-Dokument integriert werden.
 +ec4103=Signatorzertifikat ist nicht in der CMS-Signatur enthalten.
 +ec4104=Signierte Daten sind weder in der CMS-Signatur noch im XML-Request enthalten.
 +ec4105=XML-Dokument, das die zu prüfende Signatur enthält, kann nicht aufgelöst werden.
 +ec4106=XML-Dokument, das die zu prüfende Signatur enthält, kann nicht geparst werden.
 +ec4107=Am spezifizierten Ort innerhalb des XML-Dokuments befindet sich keine XML-Signatur.
 +ec4108=Verschlüsseltes Datum kann nicht am spezifizierten Ort in das bestehende XML-Dokument eingefügt werden.
 +ec4109=Bestehendes XML-Dokument ist notwendig, aber nicht vorhanden.
 +ec4110=Bestehendes XML-Dokument kann nicht aufgelöst werden.
 +ec4111=Bestehendes XML-Dokument kann nicht geparst werden.
 +ec4112=Verschlüsselte Datenverschlüsselungsschlüssel können nicht am spezifizierten Ort in das bestehende XML-Dokument eingefügt werden.
 +ec4113=Zu entschlüsselnde Daten sind weder in der CMS-Nachricht noch im XML-Request enthalten.
 +ec4114=Zu entschlüsselndes XML-Dokument kann nicht aufgelöst werden.
 +ec4115=Zu entschlüsselndes XML-Dokument kann nicht geparst werden.
 +ec4116=Zumindest ein spezifiziertes Verschlüsselungselement kann nicht im zu entschlüsselnden XML-Dokument gefunden werden.
 +ec4117=Kein Verschlüsselungselement für Binärantwort vorhanden.
 +ec4118=Zu hashendes Datum kann nicht aufgelöst werden.
 +ec4119=Datum, für das der Hashwert zu prüfen ist, kann nicht aufgelöst werden.
 +ec4120=Gewählter Infoboxbezeichner bereits vergeben.
 +ec4121=Infobox mit spezifiziertem Bezeichner existiert nicht.
 +ec4122=Inhalt der ausgewählten Infobox kann nicht als XML dargestellt werden.
 +ec4123=Assoziatives Array: Zum spezifizierten Schlüssel existiert kein Eintrag.
 +ec5000=Unklassifizierter Fehler in der Anzeigekomponente.
 +ec5001=Anzeige von Daten des in der Befehlsanfrage angegebenen Mime-Types wird nicht unterstützt.
 +ec5002=Zeichenkodierung der anzuzeigenden Daten ist fehlerhaft oder wird nicht unterstützt.
 +ec5003=Anzuzeigende Daten enhalten nicht unterstützte Zeichen.
 +ec5004=Standardanzeigeformat: HTML ist nicht spezifikationskonform.
 +ec5005=Standardanzeigeformat: CSS ist nicht spezifikationskonform.
 +ec5006=Standardanzeigeformat: Format eines eingebundenen Bildes ist nicht spezifikationskonform.
 +ec5007=Standardanzeigeformat: Signatur über eingebundene Bilder fehlt oder ist nicht spezifikationskonform.
 +ec6000=Unklassifizierter Abbruch durch den Bürger.
 +ec6001=Abbruch durch den Bürger über die Benutzerschnittstelle.
 +ec6002=Abbruch auf Grund mangelnder Rechte zur Befehlsausführung.
 +
 +# 3xxx
 +#
 +
 +ec3000.unclassified=Unklassifizierter Fehler in der XML-Struktur der Befehlsanfrage. {0}
 +ec3002.invalid=XML-Struktur der Befehlsanfrage entspricht nicht dem Schema des Security-Layers. {0} 
 +
 +# 4xxx
 +#
 +
 +ec4000.infobox.invalid=Die Infobox '{0}' enthält ungültige Daten.
 +ec4000.idlink.transfomation.failed=Die komprimierte Personenbindung konnte mit dem Stylesheet {0} nicht transformiert werden.
 +ec4002.infobox.unknown=Unbekannter Infoboxbezeichner {0}.
 +ec4003.not.resolved=Zu signierendes Datum kann nicht aufgelöst werden (URI={0}).
 +ec4011.notimplemented=Befehl {0} ist nicht implementiert.
 +
 diff --git a/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties b/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties new file mode 100644 index 00000000..8e0a09bc --- /dev/null +++ b/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties @@ -0,0 +1,97 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +#     http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +test.noerror=This is a test error-message. No error occurred. + +ec1000=Unclassified error. +ec2000=Unclassified error in the transport binding. +ec2001=HTTP/HTTPS binding: DataURL cannot be resolved. +ec2002=HTTP/HTTPS binding: StylesheetURL cannot be resolved. +ec2003=HTTP/HTTPS binding: RedirectURL cannot be resolved. +ec2004=HTTP/HTTPS binding: XMLRequest parameter missing. +ec2005=HTTP/HTTPS binding: Unknown parameter encoding. +ec2006=HTTP/HTTPS binding: Incorrect parameter encoding. +ec2007=HTTP/HTTPS binding: DataURL server transmits error or unexpected response. +ec2008=HTTP/HTTPS binding: Error in stylesheet obtained from the StylesheetURL. +ec2009=HTTP/HTTPS binding: HTTP request to local CCE directed to unauthorised URL. +ec2010=HTTPS binding: Error while establishing the TLS connection. +ec3000=Unclassified error in the XML structure of the command request. +ec3001=XML structure of the command request is not well formed. +ec3002=XML structure of the command request does not comply with the Security Layer schema. +ec3003=XML structure of the command request contains an invalid combination of optional elements or attributes. +ec3004=XML structure contains an element or attribute whose syntax does not match the Security Layer specification. +ec3005=Protocol version of Security Layer not supported. +ec4000=Unclassified error while processing command. +ec4001=Unknown key box identifier. +ec4002=Unknown info box identifier. +ec4003=Date to be signed cannot be resolved. +ec4004=Supplementary object cannot be resolved. +ec4005=Date to be encrypted cannot be resolved. +ec4006=Algorithm (signature, encryption, digest, canonicalisation, transformation) not supported. +ec4007=Error while executing algorithm (signature, encryption, digest, canonicalisation, transformation). +ec4008=Error while parsing CMS message +ec4009=No matching decryption key. +ec4010=Info box command parameters do not match info box type. +ec4011=Command not implemented. +ec4100=XML document in which the signature is to be integrated cannot be resolved. +ec4101=XML document in which the signature is to be integrated cannot be parsed. +ec4102=Signature cannot be integrated in the existing XML document at the specified location. +ec4103=Signature certificate not contained in the CMS signature. +ec4104=Signed data not contained in the CMS signature or XML request. +ec4105=XML document containing the signature to be verified cannot be resolved. +ec4106=XML document containing the signature to be verified cannot be parsed. +ec4107=There is no XML signature at the specified location within the XML document. +ec4108=Encrypted date cannot be inserted in the existing XML document at the specified location. +ec4109=Existing XML document is required but missing. +ec4110=Existing XML document cannot be resolved. +ec4111=Existing XML document cannot be parsed. +ec4112=Encrypted data encryption keys cannot be inserted in the existing XML document at the specified location. +ec4113=Data to be decrypted not contained in either the CMS message or XML request. +ec4114=XML document to be decrypted cannot be resolved. +ec4115=XML document to be decrypted cannot be parsed. +ec4116=At least one specified encryption element cannot be found in the XML document to be decrypted. +ec4117=No encryption element for binary response. +ec4118=Date to be hashed cannot be resolved. +ec4119=Date for which the hash value is to be verified cannot be resolved. +ec4120=Selected info box identifier already allocated. +ec4121=Info box with specified identifier does not exist. +ec4122=Contents of the selected info box cannot be displayed as XML. +ec4123=Associative array: No entry for the specified key. +ec5000=Unclassified error in the viewer component. +ec5001=Display of data of the mime type specified in the command request not supported. +ec5002=Character encoding of the data to be displayed is invalid or not supported. +ec5003=Data to be displayed contains unsupported characters. +ec5004=Standard display format: HTML does not conform to specification. +ec5005=Standard display format: CSS does not conform to specification. +ec5006=Standard display format: Format of an embedded image does not conform to specification. +ec5007=Standard display format: Signature for embedded images missing or does not conform to specification. +ec6000=Unclassified cancelling by the citizen. +ec6001=Cancelled by the citizen via the user interface. +ec6002=Cancelled because of insufficient rights to execute command. + +# 3xxx +# + +ec3000.unclassified=Error in the XML structure of the command request. {0} +ec3002.invalid=XML structure of the command request does not comply with the Security Layer schema. {0}  + +# 4xxx +# + +ec4000.infobox.invalid=The infobox '{0}' contains invalid content. +ec4000.idlink.transfomation.failed=Failed to transform CompressedIdentityLink with Stylesheet {0}. +ec4002.infobox.unknown=Unknown info box identifier {0}. +ec4003.not.resolved=Data to be signed cannot be resolved from URI={0}. +ec4011.notimplemented=Command {0} not implemented. diff --git a/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java b/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java index 45e38674..8a607b80 100644 --- a/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java +++ b/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java @@ -25,6 +25,7 @@ import java.security.cert.X509Certificate;  import java.util.Collections;
  import java.util.HashMap;
  import java.util.Map;
 +import java.util.Properties;  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
 @@ -124,5 +125,11 @@ public class TestDataUrlConnection implements DataUrlConnectionSPI {  	@Override  	public URL getUrl() {  		return url; -	}
 +	} + +  @Override +  public void setConfiguration(Properties config) { +    // TODO Auto-generated method stub +     +  }
   }
 | 
