diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-04-02 09:32:26 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-04-02 09:32:26 +0200 | 
| commit | 657bd247f385b480ab4550c4c1216c3c95157c4d (patch) | |
| tree | b90095cdc1a5588a29d12968fddbc42c5f22a8ce | |
| parent | 5e50fb49f048cbd0a6bafb1f097d08dd8cad8320 (diff) | |
| download | moa-id-spss-657bd247f385b480ab4550c4c1216c3c95157c4d.tar.gz moa-id-spss-657bd247f385b480ab4550c4c1216c3c95157c4d.tar.bz2 moa-id-spss-657bd247f385b480ab4550c4c1216c3c95157c4d.zip | |
add EncodingFilter from commons-iaik.jar to ConfigWebTool
remove lib commons-iaik.jar
3 files changed, 132 insertions, 4 deletions
| diff --git a/id/ConfigWebTool/pom.xml b/id/ConfigWebTool/pom.xml index 7154cc2bb..36fe03457 100644 --- a/id/ConfigWebTool/pom.xml +++ b/id/ConfigWebTool/pom.xml @@ -69,7 +69,6 @@          <dependency>              <groupId>MOA.id.server</groupId>              <artifactId>moa-id-commons</artifactId> -            <version>2.0.1</version>          </dependency>          <dependency>              <groupId>MOA.id.server</groupId> @@ -140,11 +139,17 @@              <type>jar</type>              <scope>compile</scope>          </dependency> -        <dependency> +<!--         <dependency>              <groupId>iaik</groupId>              <artifactId>commons-iaik</artifactId>              <version>0.7.1</version> -        </dependency> +            <exclusions> +            	<exclusion> +            		<groupId>log4j</groupId> +            		<artifactId>log4j</artifactId> +            	</exclusion>             +            </exclusions> +        </dependency> -->      </dependencies> diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/EncodingFilter.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/EncodingFilter.java new file mode 100644 index 000000000..71f9536ae --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/EncodingFilter.java @@ -0,0 +1,123 @@ +package at.gv.egovernment.moa.id.configuration.filter; + +import java.io.IOException; +import java.nio.charset.Charset; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.log4j.Logger; + +/** + * @author <a href="mailto:thomas.knall@iaik.tugraz.at">Thomas Knall</a> + */ +public class EncodingFilter implements javax.servlet.Filter { + +   private static final String SERVLET_INIT_PARAM_ENCODING = "encoding"; +    +   private static final String SERVLET_INIT_PARAM_SET_REQUEST_ENCODING    = "setRequestEncoding"; +   private static final String SERVLET_INIT_PARAM_FORCE_REQUEST_ENCODING  = "forceRequestEncoding"; + +   private static final String SERVLET_INIT_PARAM_SET_RESPONSE_ENCODING   = "setResponseEncoding"; +   private static final String SERVLET_INIT_PARAM_FORCE_RESPONSE_ENCODING = "forceResponseEncoding"; +    +   private static final boolean DEFAULT_SET_REQUEST_ENCODING_VALUE    = true; +   private static final boolean DEFAULT_FORCE_REQUEST_ENCODING_VALUE  = true; +   private static final boolean DEFAULT_SET_RESPONSE_ENCODING_VALUE   = false; +   private static final boolean DEFAULT_FORCE_RESPONSE_ENCODING_VALUE = false; +    +   private Logger log = Logger.getLogger(getClass().getName()); + +   private String encoding = null; +    +   private boolean setRequestEncoding; +   private boolean forceRequestEncoding; + +   private boolean setResponseEncoding; +   private boolean forceResponseEncoding; +    +   private boolean enabled = false; +    +   private boolean parseBooleanInitParameter(final FilterConfig filterConfig, String parameterName, boolean defaultValue) { +      String paramValue = filterConfig.getInitParameter(parameterName); +      if (paramValue == null) { +         return defaultValue; +      } +      paramValue = paramValue.trim(); +      if (paramValue.equalsIgnoreCase("true")) { +         return true; +      } else if (paramValue.equalsIgnoreCase("false")){ +         return false; +      } else { +         log.warn("Unknown value \"" + paramValue + "\" for init parameter \"" + parameterName + "\" detected. Should be \"true\" or \"false\". Using default value \"" + defaultValue + "\"."); +         return defaultValue; +      } +   } + +   public void init(final FilterConfig filterConfig) throws ServletException { +      log.debug("Initializing encoding filter (" + getClass().getName() + ")."); + +      // mandatory parameter encoding +      String desiredEncoding = filterConfig.getInitParameter(SERVLET_INIT_PARAM_ENCODING); +      if (StringUtils.isEmpty(desiredEncoding)) { +         log.warn("Unable to initialize encoding filter (" + getClass().getName() + "). Init parameter \"" + SERVLET_INIT_PARAM_ENCODING + "\" empty or not supplied."); +      } else if (!Charset.isSupported(desiredEncoding)) { +         log.warn("Unable to initialize encoding filter (" + getClass().getName() + "). Encoding \"" + desiredEncoding + "\" is not supported."); +      } else { +         this.encoding = desiredEncoding; +         this.enabled = true; +         this.setRequestEncoding    = this.parseBooleanInitParameter(filterConfig, SERVLET_INIT_PARAM_SET_REQUEST_ENCODING,    DEFAULT_SET_REQUEST_ENCODING_VALUE); +         this.forceRequestEncoding  = this.parseBooleanInitParameter(filterConfig, SERVLET_INIT_PARAM_FORCE_REQUEST_ENCODING,  DEFAULT_FORCE_REQUEST_ENCODING_VALUE); +         this.setResponseEncoding   = this.parseBooleanInitParameter(filterConfig, SERVLET_INIT_PARAM_SET_RESPONSE_ENCODING,   DEFAULT_SET_RESPONSE_ENCODING_VALUE); +         this.forceResponseEncoding = this.parseBooleanInitParameter(filterConfig, SERVLET_INIT_PARAM_FORCE_RESPONSE_ENCODING, DEFAULT_FORCE_RESPONSE_ENCODING_VALUE); +         log.debug("Encoding filter \"" + getClass().getName() + "\" configured: " + this.toString(true)); +          +      } +   } +    +   public String toString(boolean verbose) { +      if (verbose) { +         return new ToStringBuilder(this) +            .append(SERVLET_INIT_PARAM_ENCODING, this.encoding) +            .append(SERVLET_INIT_PARAM_SET_REQUEST_ENCODING, this.setRequestEncoding) +            .append(SERVLET_INIT_PARAM_FORCE_REQUEST_ENCODING, this.forceRequestEncoding) +            .append(SERVLET_INIT_PARAM_SET_RESPONSE_ENCODING, this.setResponseEncoding) +            .append(SERVLET_INIT_PARAM_FORCE_RESPONSE_ENCODING, this.forceResponseEncoding) +         .toString(); +      } else { +         return super.toString(); +      } +   } + +   public void doFilter(ServletRequest request, ServletResponse response, final FilterChain filterChain) throws IOException, ServletException { +      if (this.enabled) { +         if (this.setRequestEncoding) { +            if (this.forceRequestEncoding) { +               log.trace("Forcing request encoding \"" + this.encoding + "\"."); +               request.setCharacterEncoding(this.encoding); +            } else if (request.getCharacterEncoding() == null) { +               log.trace("Request character encoding not set. Setting to \"" + this.encoding + "\"."); +               request.setCharacterEncoding(this.encoding); +            } +         } +         if (this.setResponseEncoding) { +            if (this.forceResponseEncoding) { +               log.trace("Forcing response encoding \"" + this.encoding + "\"."); +               response.setCharacterEncoding(this.encoding); +            } else if (response.getCharacterEncoding() == null) { +               log.trace("Response character encoding not set. Setting to \"" + this.encoding + "\"."); +               response.setCharacterEncoding(this.encoding); +            } +         } +      } +      filterChain.doFilter(request, response); +   } + +   public void destroy() { +   } +} diff --git a/id/ConfigWebTool/src/main/webapp/WEB-INF/web.xml b/id/ConfigWebTool/src/main/webapp/WEB-INF/web.xml index a44cf8ce5..b55e97f23 100644 --- a/id/ConfigWebTool/src/main/webapp/WEB-INF/web.xml +++ b/id/ConfigWebTool/src/main/webapp/WEB-INF/web.xml @@ -46,7 +46,7 @@     <filter>  		<filter-name>EncodingFilter</filter-name> -		<filter-class>at.iaik.commons.webapp.filter.encoding.EncodingFilter</filter-class> +		<filter-class>at.gv.egovernment.moa.id.configuration.filter.EncodingFilter</filter-class>  		<init-param>  			<param-name>encoding</param-name>  			<param-value>UTF-8</param-value> | 
