You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ha...@apache.org on 2005/09/27 17:38:00 UTC
svn commit: r291977 - in /webservices/wss4j/trunk: ./ interop/
src/org/apache/ws/axis/security/ src/org/apache/ws/axis/security/handler/
src/org/apache/ws/sandbox/ src/org/apache/ws/security/action/
src/org/apache/ws/security/handler/
Author: hans
Date: Tue Sep 27 08:37:57 2005
New Revision: 291977
URL: http://svn.apache.org/viewcvs?rev=291977&view=rev
Log:
* Avoid wsdl2java'ing when not needed (see target 'chkwsdl'
in interop/build.xml)
* build.xml does not dump classpaths etc unless invoked with
debug -- you need to use "ant [-debug|-d]" to see this
output (set by <echo level="debug">)
* Replace pattern throughout handlers
if ((x = (String) getOption(X)) == null) {
x = (String) ((MessageContext)reqData.getMsgContext())
.getProperty(X);
}
with something of type:
x = getString(X, reqData.getMsgContext());
* Added package.html for sandbox.
* Generally wrap lines at 80 chars in functions/methods I
changed.
Added:
webservices/wss4j/trunk/src/org/apache/ws/sandbox/package.html
Modified:
webservices/wss4j/trunk/build.xml
webservices/wss4j/trunk/interop/build.xml
webservices/wss4j/trunk/src/org/apache/ws/axis/security/WSDoAllSender.java
webservices/wss4j/trunk/src/org/apache/ws/axis/security/handler/WSDoAllHandler.java
webservices/wss4j/trunk/src/org/apache/ws/security/action/EncryptionAction.java
webservices/wss4j/trunk/src/org/apache/ws/security/action/SAMLTokenSignedAction.java
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
Modified: webservices/wss4j/trunk/build.xml
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/build.xml?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/build.xml (original)
+++ webservices/wss4j/trunk/build.xml Tue Sep 27 08:37:57 2005
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<project name="Web Services Security (WSS4J)" default="usage" basedir=".">
- <!-- =================================================================== -->
+ <!-- ================================================================== -->
<description>
Build file for WSS4J
@@ -9,7 +9,7 @@
ANT is available from http://jakarta.apache.org/ant/index.html
Prerequisites:
- See the REAME file
+ See the README file
Build Instructions:
To build, run
@@ -28,9 +28,12 @@
<property name='product.version.major' value='1'/>
<property name='product.version.minor' value='1'/>
<property name='product.version.level' value='0'/>
- <property name='product.Version' value='${product.version.major}.${product.version.minor}.${product.version.level}'/>
- <property name='product.version' value='${product.version.major}.${product.version.minor}.${product.version.level}'/>
- <property name='product_version' value='${product.version.major}_${product.version.minor}_${product.version.level}'/>
+ <property name='product.Version' value='${product.version.major}
+ .${product.version.minor}.${product.version.level}'/>
+ <property name='product.version' value='${product.version.major}
+ .${product.version.minor}.${product.version.level}'/>
+ <property name='product_version' value='${product.version.major}
+ _${product.version.minor}_${product.version.level}'/>
<property name="year" value="2005"/>
<property name="copyright" value="Copyright © ${year} Apache WS-Security Project. All Rights Reserved."/>
@@ -103,8 +106,10 @@
<path refid="classpath.libraries"/>
</path>
- <taskdef resource="axis-tasks.properties" classpathref="classpath.library"/>
- <taskdef name="runaxisfunctionaltests" classname="org.apache.axis.tools.ant.axis.RunAxisFunctionalTestsTask"
+ <taskdef resource="axis-tasks.properties" classpathref=
+ "classpath.library"/>
+ <taskdef name="runaxisfunctionaltests" classname=
+ "org.apache.axis.tools.ant.axis.RunAxisFunctionalTestsTask"
loaderref="axis">
<classpath refid="classpath.library"/>
</taskdef>
@@ -132,7 +137,7 @@
</patternset>
<patternset id="srcFiles">
- <!-- for some strange reasons, I can't use ${src} but must use src -->
+ <!-- for some strange reasons, I can't use ${src} but must use src -->
<include name="src/**/*"/>
</patternset>
@@ -161,54 +166,56 @@
org.apache.ws.axis.security.util
"/>
- <echo message="-------------------------------------------------------------------"/>
- <echo message="-------------- ${product.Name} v${product.Version} [${year}] ----------------"/>
- <echo message="-------------------------------------------------------------------"/>
- <echo message="Building with ${ant.version}"/>
- <echo message="using build file ${ant.file}"/>
- <echo message="Java ${java.version} located at ${java.home} "/>
- <echo message="-------------------------------------------------------------------"/>
- <echo message="--- Property values ---" />
- <echo message="sun.boot.class.path=${sun.boot.class.path}"/>
- <pathconvert targetos="windows" property="classpath.test.as.string" refid="classpath.test"/>
- <echo message="classpath.test: ${classpath.test.as.string}"/>
- <echo message="" />
-
+ <echo level="debug">
+ -------------------------------------------------------------------
+ ${product.Name} v${product.Version} [${year}]
+ -------------------------------------------------------------------
+ Building with ${ant.version}
+ using build file ${ant.file}
+ Java ${java.version} located at ${java.home}
+ -------------------------------------------------------------------
+ --- Property values ---
+ sun.boot.class.path=${sun.boot.class.path}
+ </echo>
+ <pathconvert targetos="windows" property="classpath.test.as.string"
+ refid="classpath.test"/>
+ <echo level="debug">
+ classpath.test: ${classpath.test.as.string}
+ </echo>
</target>
<target name="usage" depends="init">
- <echo message=" "/>
- <echo message=" "/>
- <echo message=" Build instructions "/>
- <echo message="-------------------------------------------------------------------"/>
- <echo message=" "/>
- <echo message=" available targets are: "/>
- <echo message=" "/>
- <echo message=" compile --> compiles everything "/>
- <echo message=" compile.library --> compiles the source code "/>
- <echo message=" compile.samples --> compiles the samples source code "/>
- <echo message=" compile.tests --> compiles the tests source code "/>
- <echo message=" compile.interops--> compiles the interop source code "/>
- <echo message=" "/>
- <echo message=" javadoc --> generates the API documentation "/>
- <echo message=" (needs Java > 1.2) "/>
- <echo message=" "/>
- <echo message=" test --> runs the defined JUnit tests "/>
- <echo message=" report --> generates html report of test results "/>
- <echo message=" "/>
- <echo message=" clean --> cleans up all generated files and "/>
- <echo message=" directories "/>
- <echo message=" jar --> creates the JAR file "/>
- <echo message=" gump --> includes javadoc, compile jar and test "/>
- <echo message=" "/>
- <echo message=" usage --> provides help on using the build tool "/>
- <echo message=" (default) "/>
- <echo message=" "/>
- <echo message=" changelog --> generates changelog.html "/>
- <echo message=" "/>
- <echo message=" See comments inside the build.xml file for more details. "/>
- <echo message="-------------------------------------------------------------------"/>
- <echo message=" "/>
+ <echo>
+ Build instructions
+ -------------------------------------------------------------------
+
+ available targets are:
+
+ compile --> compiles everything
+ compile.library --> compiles the source code
+ compile.samples --> compiles the samples source code
+ compile.tests --> compiles the tests source code
+ compile.interops--> compiles the interop source code
+
+ javadoc --> generates the API documentation
+ (needs Java > 1.2)
+
+ test --> runs the defined JUnit tests
+ report --> generates html report of test results
+
+ clean --> cleans up all generated files and
+ directories
+ jar --> creates the JAR file
+ gump --> includes javadoc, compile jar and test
+
+ usage --> provides help on using the build tool
+ (default)
+
+ changelog --> generates changelog.html
+
+ See comments inside the build.xml file for more details.
+ -------------------------------------------------------------------
+ </echo>
</target>
<target name="clean" depends="init"
@@ -230,7 +237,8 @@
<delete dir="${build.dir}/test-reports"/>
<mkdir dir="${build.dir}/test-reports"/>
- <available property="junit.present" classname="junit.framework.TestCase">
+ <available property="junit.present"
+ classname="junit.framework.TestCase">
<!-- check whether JUnit is available -->
<classpath refid="classpath.test"/>
</available>
@@ -259,20 +267,22 @@
<classpath refid="classpath.test"/>
</available>
- <echo message="--- Flags (Note: If the {property name} is displayed, "/>
- <echo message=" then the component is not present)"/>
- <echo message="jdk13.present=${jdk13.present}"/>
- <echo message="jdk14.present=${jdk14.present}"/>
- <echo message="jdk15.present=${jdk15.present}"/>
- <echo message="bc.present=${bc.present}"/>
+ <echo level="debug">
+ --- Flags (Note: If the {property name} is displayed,
+ then the component is not present)
+ jdk13.present=${jdk13.present}
+ jdk14.present=${jdk14.present}
+ jdk15.present=${jdk15.present}
+ bc.present=${bc.present}
+ </echo>
</target>
- <!-- #################################################################### -->
- <!-- #################################################################### -->
- <!-- #################################################################### -->
- <!-- #################################################################### -->
- <!-- #################################################################### -->
+ <!-- ################################################################## -->
+ <!-- ################################################################## -->
+ <!-- ################################################################## -->
+ <!-- ################################################################## -->
+ <!-- ################################################################## -->
<target name="prepare-src" depends="prepare"
description="This target copies the Java sources and brands the version information">
@@ -300,7 +310,7 @@
</javadoc>
</target>
- <!-- #################################################################### -->
+ <!-- ################################################################## -->
<!-- Aliases -->
<target name="javadocs" depends="javadoc"/>
@@ -312,14 +322,15 @@
description="Target for the gump run"/>
<target name="compile"
- depends="compile.library, compile.samples, compile.tests, compile.interops, fix.properties"
+ depends="compile.library,compile.samples, compile.tests,
+ compile.interops, fix.properties"
description="compile everything"/>
<target name="test"
depends="unitTests, systemTests"
description="tests everything"/>
- <!-- #################################################################### -->
+ <!-- ################################################################## -->
<target name="fix.properties" if="jdk13.present">
<replace dir="${build.dir}" value="org.apache.ws.security.components.crypto.BouncyCastle">
@@ -403,7 +414,8 @@
<target name="start-functional-test-http-server" if="junit.present">
<echo message="Starting http server."/>
- <java classname="org.apache.axis.transport.http.SimpleAxisServer" fork="yes" dir="${build.dir}">
+ <java classname="org.apache.axis.transport.http.SimpleAxisServer"
+ fork="yes" dir="${build.dir}">
<jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
<classpath refid="classpath.library"/>
</java>
@@ -450,7 +462,8 @@
<java classname="org.apache.axis.utils.Admin" fork="true">
<classpath refid="classpath.library"/>
<arg value="client"/>
- <arg file="${build.work}/org/apache/ws/axis/oasis/ping/undeploy.wsdd"/>
+ <arg file=
+ "${build.work}/org/apache/ws/axis/oasis/ping/undeploy.wsdd"/>
</java>
<junit printsummary="yes"
@@ -500,14 +513,16 @@
<fileset dir="${build.classes}">
<include name="**/wssec/PackageTests.class"/>
<include name="**/components/PackageTests.class"/>
- <!--<include name="**/secconv/components/PackageTests.class"/> -->
+ <!--<include name="**/secconv/components/PackageTests.class"/> -->
</fileset>
</batchtest>
</junit>
</target>
- <target name="tcpmon" depends="init" description="Start standalone tcp monitor application (provided by axis)">
- <java dir="${basedir}" fork="yes" failOnError="true" className="org.apache.axis.utils.tcpmon">
+ <target name="tcpmon" depends="init" description=
+ "Start standalone tcp monitor application (provided by axis)">
+ <java dir="${basedir}" fork="yes" failOnError="true"
+ className="org.apache.axis.utils.tcpmon">
<classpath refid="classpath.library" />
<arg value="9080" />
<arg value="localhost" />
@@ -517,9 +532,11 @@
<!--
This runs the selected scenario with SimpleAxisServer locally.
- Before you start this target be sure you have started tcpmon too in a separate
+ Before you start this target be sure you have started tcpmon too
+ in a separate
"ant tcpmon" call.
- To run different scenarios use: "ant -DNumber=x scenarioTest" to run scenario x
+ To run different scenarios use: "ant -DNumber=x scenarioTest"
+ to run scenario x
-->
<target name="scenarioTest" depends="compile"
if="junit.present"
@@ -532,11 +549,13 @@
</target>
<target name="scenario" if="junit.present">
- <echo message="Running interop test scenario ${Number} on SimpleAxisServer"/>
+ <echo message=
+ "Running interop test scenario ${Number} on SimpleAxisServer"/>
<antcall target="deployWSDD" />
- <java classname="interop.TestScenario${Number}" fork="yes" dir="${basedir}">
+ <java classname="interop.TestScenario${Number}" fork="yes"
+ dir="${basedir}">
<jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
<classpath refid="classpath.library"/>
</java>
@@ -546,11 +565,14 @@
</target>
<!--
- This runs the selected scenario with SimpleAxisServer locally with perfomance
+ This runs the selected scenario with SimpleAxisServer locally
+ with perfomance
timing switched on.
- You may also emable the **.TIME entry in log4j.properties to get the internal
+ You may also emable the **.TIME entry in log4j.properties to get
+ the internal
timing.
- To run different scenarios use: "ant -DNumber=x scenarioTest" to run scenario x
+ To run different scenarios use: "ant -DNumber=x scenarioTest"
+ to run scenario x
-->
<target name="performanceTest" depends="compile"
if="junit.present"
@@ -563,79 +585,82 @@
</target>
<target name="performance" if="junit.present">
- <echo message="Running performance test scenario ${Number} on SimpleAxisServer"/>
+ <echo message=
+ "Running performance test scenario ${Number} on SimpleAxisServer"/>
<antcall target="deployWSDD" />
- <java classname="interop.TestScenario${Number}" fork="yes" dir="${basedir}">
+ <java classname="interop.TestScenario${Number}" fork="yes"
+ dir="${basedir}">
<jvmarg value="-Djava.endorsed.dirs=${basedir}/endorsed"/>
- <arg value="-lhttp://localhost:8080/axis/services/Ping${Number}" />
+ <arg value="-lhttp://localhost:8080/axis/services/Ping${Number}" />
<arg value="-t" />
<classpath refid="classpath.library"/>
</java>
<antcall target="undeployWSDD" />
</target>
- <target name="deployWSDD">
- <path id="deploy_xml_files">
- <fileset dir="${build.work}">
- <include name="**/deploy.wsdd"/>
- </fileset>
- </path>
+ <target name="deployWSDD">
+ <path id="deploy_xml_files">
+ <fileset dir="${build.work}">
+ <include name="**/deploy.wsdd"/>
+ </fileset>
+ </path>
- <copy todir="${build.dir}/keys">
- <fileset dir="${dir.keys}" includes="**"/>
- </copy>
- <copy todir="${build.dir}/interop">
- <fileset dir="${dir.interop}" includes="*.jks"/>
- </copy>
+ <copy todir="${build.dir}/keys">
+ <fileset dir="${dir.keys}" includes="**"/>
+ </copy>
+ <copy todir="${build.dir}/interop">
+ <fileset dir="${dir.interop}" includes="*.jks"/>
+ </copy>
- <property name="deploy_xml_property" refid="deploy_xml_files"/>
+ <property name="deploy_xml_property" refid="deploy_xml_files"/>
- <java classname="org.apache.axis.utils.Admin" fork="true">
- <classpath refid="classpath.library"/>
- <arg value="client"/>
- <arg file="${build.work}/org/apache/ws/axis/oasis/Client_deploy.wsdd"/>
- </java>
+ <java classname="org.apache.axis.utils.Admin" fork="true">
+ <classpath refid="classpath.library"/>
+ <arg value="client"/>
+ <arg file="${build.work}/org/apache/ws/axis/oasis/Client_deploy.wsdd"/>
+ </java>
- <java classname="org.apache.axis.client.AdminClient" fork="yes">
- <classpath refid="classpath.library"/>
- <arg line="${deploy_xml_property}"/>
- </java>
-
- </target>
+ <java classname="org.apache.axis.client.AdminClient" fork="yes">
+ <classpath refid="classpath.library"/>
+ <arg line="${deploy_xml_property}"/>
+ </java>
+ </target>
- <target name="undeployWSDD">
- <path id="undeploy_xml_files">
- <fileset dir="${build.work}">
- <include name="**/undeploy.wsdd"/>
- </fileset>
- </path>
+ <target name="undeployWSDD">
+ <path id="undeploy_xml_files">
+ <fileset dir="${build.work}">
+ <include name="**/undeploy.wsdd"/>
+ </fileset>
+ </path>
- <property name="undeploy_xml_property" refid="undeploy_xml_files"/>
+ <property name="undeploy_xml_property" refid="undeploy_xml_files"/>
- <java classname="org.apache.axis.utils.Admin" fork="true">
+ <java classname="org.apache.axis.utils.Admin" fork="true">
<classpath refid="classpath.library"/>
<arg value="client"/>
- <arg file="${build.work}/org/apache/ws/axis/oasis/ping/undeploy.wsdd"/>
- </java>
-
- <java classname="org.apache.axis.client.AdminClient" fork="yes">
- <classpath refid="classpath.library"/>
- <arg line="${undeploy_xml_property}"/>
- </java>
-
- </target>
+ <arg file=
+ "${build.work}/org/apache/ws/axis/oasis/ping/undeploy.wsdd"/>
+ </java>
+
+ <java classname="org.apache.axis.client.AdminClient" fork="yes">
+ <classpath refid="classpath.library"/>
+ <arg line="${undeploy_xml_property}"/>
+ </java>
+ </target>
<!-- generate a report from all the tests.
requires Xalan or other XSLT engine in ant\lib-->
- <target name="report" depends="init">
+
+ <target name="report" depends="init">
<junitreport todir="${build.dir}/test-reports">
<fileset dir="${build.dir}/test-reports">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${build.dir}/test-reports/html"/>
</junitreport>
- <echo message="point your browser to ${build.dir}/test-reports/html/index.html"/>
+ <echo message=
+ "point your browser to ${build.dir}/test-reports/html/index.html"/>
</target>
<target name="jar"
@@ -648,35 +673,43 @@
/>
</target>
- <target name="bindist" depends="gump" description="Build zip file for distro">
- <delete dir="${dir.dist}"/>
- <mkdir dir="${dir.dist}"/>
- <jar jarfile="${dir.dist}/${jar.library}"
- basedir="${build.classes}"
- includes="**/apache/**/security/**" />
- <zip destfile="${dir.dist}/${product.shortname}-bin-${product.version}.zip">
- <zipfileset prefix="wss4j" dir="."
- includes="keys/**, interop/**, interop2/**, test/**, samples/**,
- LICENSE.txt, README.txt legal/**, webapps/**"/>
- <zipfileset prefix="wss4j/classes" dir="${build.classes}"
- includes="*.properties, interop/**, wssec/**, org/**/oasis/**, org/**/samples/**"/>
- <zipfileset prefix="wss4j/doc/api" dir="${build.javadoc}"/>
- <zipfileset fullpath="wss4j/${jar.library}" dir="${dir.dist}" includes="${jar.library}"/>
- </zip>
- <delete file="${dir.dist}/${jar.library}" />
+ <target name="bindist" depends="gump"
+ description="Build zip file for distro">
+ <delete dir="${dir.dist}"/>
+ <mkdir dir="${dir.dist}"/>
+ <jar jarfile="${dir.dist}/${jar.library}"
+ basedir="${build.classes}"
+ includes="**/apache/**/security/**" />
+ <zip destfile=
+ "${dir.dist}/${product.shortname}-bin-${product.version}.zip">
+ <zipfileset prefix="wss4j" dir="."
+ includes="keys/**, interop/**, interop2/**, test/**, samples/**,
+ LICENSE.txt, README.txt legal/**, webapps/**"/>
+ <zipfileset prefix="wss4j/classes" dir="${build.classes}"
+ includes=
+ "*.properties, interop/**, wssec/**, org/**/oasis/**, org/**/samples/**"/>
+ <zipfileset prefix="wss4j/doc/api" dir="${build.javadoc}"/>
+ <zipfileset fullpath="wss4j/${jar.library}" dir="${dir.dist}"
+ includes="${jar.library}"/>
+ </zip>
+ <delete file="${dir.dist}/${jar.library}" />
</target>
- <target name="otherdist" depends="init" description="Build zip for required jars">
+ <target name="otherdist" depends="init"
+ description="Build zip for required jars">
<mkdir dir="${dir.dist}"/>
- <zip destfile="${dir.dist}/${product.shortname}-otherjars-${product.version}.zip">
+ <zip destfile=
+ "${dir.dist}/${product.shortname}-otherjars-${product.version}.zip">
<zipfileset prefix="wss4j" dir="."
includes="lib/*.jar, endorsed/*.jar"/>
</zip>
</target>
- <target name="srcdist" depends="init" description="Build source zip file for distro">
+ <target name="srcdist" depends="init" description=
+ "Build source zip file for distro">
<mkdir dir="${dir.dist}"/>
- <zip destfile="${dir.dist}/${product.shortname}-src-${product.version}.zip">
+ <zip destfile=
+ "${dir.dist}/${product.shortname}-src-${product.version}.zip">
<zipfileset prefix="wss4j" dir="."
includes="src/** LICENSE.txt README.txt legal/** build.xml "/>
</zip>
@@ -751,7 +784,8 @@
</fileset>
</path>
<property name="deploy_xml_property" refid="deploy_xml_files"/>
- <java classname="org.apache.axis.utils.Admin" fork="yes" dir="${build.webapp}/WEB-INF">
+ <java classname="org.apache.axis.utils.Admin" fork="yes"
+ dir="${build.webapp}/WEB-INF">
<classpath refid="classpath.library"/>
<arg line="server"/>
<arg line="${deploy_xml_property}"/>
Modified: webservices/wss4j/trunk/interop/build.xml
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/interop/build.xml?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/interop/build.xml (original)
+++ webservices/wss4j/trunk/interop/build.xml Tue Sep 27 08:37:57 2005
@@ -46,18 +46,30 @@
</java>
</target>
- <target name="compile">
- <mkdir dir="${dir.work}"/>
- <axis-wsdl2java
- output="${dir.work}"
- serverSide="yes"
- testcase="no"
- verbose="no"
- url="${dir.interop}/ping.wsdl">
- <mapping
- namespace="http://xmlsoap.org/Ping"
- package="org.apache.ws.axis.oasis.ping"/>
- </axis-wsdl2java>
+ <target name="chkWsdl">
+ <uptodate property="wsdl.notRequired"
+ targetfile="${dir.work}/${server}/PingBindingImpl.java"
+ srcfile="${dir.interop}/ping.wsdl"/>
+ </target>
+
+ <target name="wsdl" depends="chkWsdl" unless="wsdl.notRequired">
+ <axis-wsdl2java
+ output="${dir.work}"
+ serverSide="yes"
+ testcase="no"
+ verbose="no"
+ url="${dir.interop}/ping.wsdl">
+ <mapping
+ namespace="http://xmlsoap.org/Ping"
+ package="org.apache.ws.axis.oasis.ping"/>
+ </axis-wsdl2java>
+ </target>
+
+ <target name="init">
+ <mkdir dir="${dir.work}"/>
+ </target>
+
+ <target name="compile" depends="init, wsdl">
<copy todir="${dir.work}/${server}" overwrite="yes">
<fileset dir="${dir.interop}/${server}">
<include name="*.java"/>
Modified: webservices/wss4j/trunk/src/org/apache/ws/axis/security/WSDoAllSender.java
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/axis/security/WSDoAllSender.java?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/axis/security/WSDoAllSender.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/axis/security/WSDoAllSender.java Tue Sep 27 08:37:57 2005
@@ -70,19 +70,15 @@
reqData.setMsgContext(mc);
/*
- * The overall try, just to have a finally at the end to perform some
- * housekeeping.
- */
+ * The overall try, just to have a finally at the end to perform some
+ * housekeeping.
+ */
try {
/*
- * Get the action first.
- */
+ * Get the action first.
+ */
Vector actions = new Vector();
- String action = null;
- if ((action = (String) getOption(WSHandlerConstants.ACTION)) == null) {
- action = (String) ((MessageContext)reqData.getMsgContext())
- .getProperty(WSHandlerConstants.ACTION);
- }
+ String action = getString(WSHandlerConstants.ACTION, mc);
if (action == null) {
throw new AxisFault("WSDoAllSender: No action defined");
}
Modified: webservices/wss4j/trunk/src/org/apache/ws/axis/security/handler/WSDoAllHandler.java
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/axis/security/handler/WSDoAllHandler.java?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/axis/security/handler/WSDoAllHandler.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/axis/security/handler/WSDoAllHandler.java Tue Sep 27 08:37:57 2005
@@ -107,11 +107,20 @@
}
/**
- * Returns the option corresponding to the 'name' given
+ * Returns the option corresponding to <code>name</code>.
+ *
+ * @param name the non-null name of the option.
+ * @return the option on <code>name</code> if <code>name</code>
+ * exists; otherwise null.
*/
public Object getOption(String name) {
- if (options == null) return (null);
- return (options.get(name));
+ if (name == null) {
+ throw new IllegalArgumentException("name cannot be null");
+ }
+ if (options == null) {
+ return null;
+ }
+ return options.get(name);
}
/**
Added: webservices/wss4j/trunk/src/org/apache/ws/sandbox/package.html
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/sandbox/package.html?rev=291977&view=auto
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/sandbox/package.html (added)
+++ webservices/wss4j/trunk/src/org/apache/ws/sandbox/package.html Tue Sep 27 08:37:57 2005
@@ -0,0 +1,5 @@
+<html>
+<! -- $Id$ -->
+<body>
+This package contains parts of WSS4J that are experimental.
+</body>
Modified: webservices/wss4j/trunk/src/org/apache/ws/security/action/EncryptionAction.java
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/security/action/EncryptionAction.java?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/action/EncryptionAction.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/action/EncryptionAction.java Tue Sep 27 08:37:57 2005
@@ -35,13 +35,9 @@
wsEncrypt.setKeyIdentifierType(reqData.getEncKeyId());
}
if (reqData.getEncKeyId() == WSConstants.EMBEDDED_KEYNAME) {
- String encKeyName = null;
- if ((encKeyName =
- (String) handler.getOption(WSHandlerConstants.ENC_KEY_NAME))
- == null) {
- encKeyName =
- (String) handler.getProperty(reqData.getMsgContext(), WSHandlerConstants.ENC_KEY_NAME);
- }
+ String encKeyName
+ = handler.getString(WSHandlerConstants.ENC_KEY_NAME,
+ reqData.getMsgContext());
wsEncrypt.setEmbeddedKeyName(encKeyName);
byte[] embeddedKey =
handler.getPassword(reqData.getEncUser(),
Modified: webservices/wss4j/trunk/src/org/apache/ws/security/action/SAMLTokenSignedAction.java
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/security/action/SAMLTokenSignedAction.java?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/action/SAMLTokenSignedAction.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/action/SAMLTokenSignedAction.java Tue Sep 27 08:37:57 2005
@@ -97,15 +97,11 @@
}
}
- protected SAMLIssuer loadSamlIssuer(WSHandler handler, RequestData reqData) {
- String samlPropFile = null;
-
- if ((samlPropFile =
- (String) handler.getOption(WSHandlerConstants.SAML_PROP_FILE))
- == null) {
- samlPropFile =
- (String) handler.getProperty(reqData.getMsgContext(), WSHandlerConstants.SAML_PROP_FILE);
- }
+ protected SAMLIssuer loadSamlIssuer(WSHandler handler,
+ RequestData reqData) {
+ String samlPropFile
+ = handler.getString(WSHandlerConstants.SAML_PROP_FILE,
+ reqData.getMsgContext());
return SAMLIssuerFactory.getInstance(samlPropFile);
}
Modified: webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
URL: http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java?rev=291977&r1=291976&r2=291977&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java Tue Sep 27 08:37:57 2005
@@ -33,6 +33,7 @@
import org.apache.ws.security.util.WSSecurityUtil;
import org.apache.ws.security.util.XmlSchemaDateFormat;
import org.w3c.dom.Document;
+//import org.apache.axis.MessageContext;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
@@ -68,25 +69,24 @@
* @param doAction a set defining the actions to do
* @param doc the request as DOM document
* @param reqData a data storage to pass values around bewteen methods
- * @param actions a vector holding the actions to do in the order defined in
- * the deployment file or property
+ * @param actions a vector holding the actions to do in the order defined
+ * in the deployment file or property
* @throws WSSecurityException
*/
protected void doSenderAction(int doAction, Document doc,
- RequestData reqData, Vector actions, boolean isRequest)
+ RequestData reqData, Vector actions,
+ boolean isRequest)
throws WSSecurityException {
boolean mu = decodeMustUnderstand(reqData);
WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setPrecisionInMilliSeconds(decodeTimestampPrecision(reqData));
+ wssConfig
+ .setPrecisionInMilliSeconds(decodeTimestampPrecision(reqData));
reqData.setWssConfig(wssConfig);
- String actor = null;
- if ((actor = (String) getOption(WSHandlerConstants.ACTOR)) == null) {
- actor = (String) getProperty(reqData.getMsgContext(),
- WSHandlerConstants.ACTOR);
- }
+ Object mc = reqData.getMsgContext();
+ String actor = getString(WSHandlerConstants.ACTOR, mc);
reqData.setActor(actor);
reqData.setSoapConstants(WSSecurityUtil.getSOAPConstants(doc
@@ -309,25 +309,23 @@
* Hook to allow subclasses to load their Signature Crypto however they see
* fit.
*/
- public Crypto loadSignatureCrypto(RequestData reqData) throws WSSecurityException {
+ public Crypto loadSignatureCrypto(RequestData reqData)
+ throws WSSecurityException {
Crypto crypto = null;
/*
* Get crypto property file for signature. If none specified throw
* fault, otherwise get a crypto instance.
*/
- String sigPropFile = null;
- if ((sigPropFile = (String) getOption(WSHandlerConstants.SIG_PROP_FILE))
- == null) {
- sigPropFile =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.SIG_PROP_FILE);
- }
+ String sigPropFile = getString(WSHandlerConstants.SIG_PROP_FILE,
+ reqData.getMsgContext());
if (sigPropFile != null) {
if ((crypto = (Crypto) cryptos.get(sigPropFile)) == null) {
crypto = CryptoFactory.getInstance(sigPropFile);
cryptos.put(sigPropFile, crypto);
}
} else {
- throw new WSSecurityException("WSHandler: Signature: no crypto property file");
+ throw new WSSecurityException(
+ "WSHandler: Signature: no crypto property file");
}
return crypto;
}
@@ -336,93 +334,87 @@
* Hook to allow subclasses to load their Encryption Crypto however they
* see fit.
*/
- protected Crypto loadEncryptionCrypto(RequestData reqData) throws WSSecurityException {
+ protected Crypto loadEncryptionCrypto(RequestData reqData)
+ throws WSSecurityException {
Crypto crypto = null;
/*
* Get encryption crypto property file. If non specified take crypto
* instance from signature, if that fails: throw fault
*/
- String encPropFile = null;
- if ((encPropFile = (String) getOption(WSHandlerConstants.ENC_PROP_FILE))
- == null) {
- encPropFile =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ENC_PROP_FILE);
- }
+ String encPropFile = getString(WSHandlerConstants.ENC_PROP_FILE,
+ reqData.getMsgContext());
if (encPropFile != null) {
if ((crypto = (Crypto) cryptos.get(encPropFile)) == null) {
crypto = CryptoFactory.getInstance(encPropFile);
cryptos.put(encPropFile, crypto);
}
} else if ((crypto = reqData.getSigCrypto()) == null) {
- throw new WSSecurityException("WSHandler: Encryption: no crypto property file");
+ throw new WSSecurityException(
+ "WSHandler: Encryption: no crypto property file");
}
return crypto;
}
- protected void decodeUTParameter(RequestData reqData) throws WSSecurityException {
- reqData.setPwType((String) getOption(WSHandlerConstants.PASSWORD_TYPE));
- if (reqData.getPwType() == null) {
- reqData.setPwType((String) getProperty(reqData.getMsgContext(), WSHandlerConstants.PASSWORD_TYPE));
- }
- if (reqData.getPwType() != null) {
- reqData.setPwType(reqData.getPwType().equals(WSConstants.PW_TEXT)
- ? WSConstants.PASSWORD_TEXT
- : WSConstants.PASSWORD_DIGEST);
- }
- String tmpS = null;
- if ((tmpS = (String) getOption(WSHandlerConstants.ADD_UT_ELEMENTS))
- == null) {
- tmpS =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ADD_UT_ELEMENTS);
- }
- if (tmpS != null) {
- reqData.setUtElements(StringUtil.split(tmpS, ' '));
+ protected void decodeUTParameter(RequestData reqData)
+ throws WSSecurityException {
+ Object mc = reqData.getMsgContext();
+
+ String type = getString(WSHandlerConstants.PASSWORD_TYPE, mc);
+ reqData.setPwType(type);
+ if (type != null) {
+ reqData.setPwType(type.equals(WSConstants.PW_TEXT)
+ ? WSConstants.PASSWORD_TEXT
+ : WSConstants.PASSWORD_DIGEST);
+ }
+
+ String add = getString(WSHandlerConstants.ADD_UT_ELEMENTS, mc);
+ if (add != null) {
+ reqData.setUtElements(StringUtil.split(add, ' '));
}
}
- protected void decodeSignatureParameter(RequestData reqData) throws WSSecurityException {
- String tmpS = null;
- if ((tmpS = (String) getOption(WSHandlerConstants.SIG_KEY_ID)) == null) {
- tmpS = (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.SIG_KEY_ID);
- }
- if (tmpS != null) {
- Integer I = (Integer) WSHandlerConstants.keyIdentifier.get(tmpS);
- if (I == null) {
- throw new WSSecurityException("WSHandler: Signature: unknown key identification");
- }
- reqData.setSigKeyId(I.intValue());
- if (!(reqData.getSigKeyId() == WSConstants.ISSUER_SERIAL
- || reqData.getSigKeyId() == WSConstants.BST_DIRECT_REFERENCE
- || reqData.getSigKeyId() == WSConstants.X509_KEY_IDENTIFIER
- || reqData.getSigKeyId() == WSConstants.SKI_KEY_IDENTIFIER
- || reqData.getSigKeyId() == WSConstants.THUMBPRINT_IDENTIFIER)) {
- throw new WSSecurityException("WSHandler: Signature: illegal key identification");
- }
- }
- reqData.setSigAlgorithm((String) getOption(WSHandlerConstants.SIG_ALGO));
- if (reqData.getSigAlgorithm() == null) {
- tmpS = (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.SIG_ALGO);
- }
- if ((tmpS = (String) getOption(WSHandlerConstants.SIGNATURE_PARTS))
- == null) {
- tmpS =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.SIGNATURE_PARTS);
- }
- if (tmpS != null) {
- splitEncParts(tmpS, reqData.getSignatureParts(), reqData);
+ protected void decodeSignatureParameter(RequestData reqData)
+ throws WSSecurityException {
+ Object mc = reqData.getMsgContext();
+ String keyId = getString(WSHandlerConstants.SIG_KEY_ID, mc);
+ if (keyId != null) {
+ Integer id = (Integer) WSHandlerConstants.keyIdentifier.get(keyId);
+ if (id == null) {
+ throw new WSSecurityException(
+ "WSHandler: Signature: unknown key identification");
+ }
+ int tmp = id.intValue();
+ if (!(tmp == WSConstants.ISSUER_SERIAL
+ || tmp == WSConstants.BST_DIRECT_REFERENCE
+ || tmp == WSConstants.X509_KEY_IDENTIFIER
+ || tmp == WSConstants.SKI_KEY_IDENTIFIER
+ || tmp == WSConstants.THUMBPRINT_IDENTIFIER)) {
+ throw new WSSecurityException(
+ "WSHandler: Signature: illegal key identification");
+ }
+ reqData.setSigKeyId(tmp);
+ }
+ String algo = getString(WSHandlerConstants.SIG_ALGO, mc);
+ reqData.setSigAlgorithm(algo);
+
+ String parts = getString(WSHandlerConstants.SIGNATURE_PARTS, mc);
+ if (parts != null) {
+ splitEncParts(parts, reqData.getSignatureParts(), reqData);
}
}
- protected void decodeEncryptionParameter(RequestData reqData) throws WSSecurityException {
- reqData.setEncUser((String) getOption(WSHandlerConstants.ENCRYPTION_USER));
- if (reqData.getEncUser() == null) {
- reqData.setEncUser((String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ENCRYPTION_USER));
- }
- if (reqData.getEncUser() == null) {
+ protected void decodeEncryptionParameter(RequestData reqData)
+ throws WSSecurityException {
+ Object mc = reqData.getMsgContext();
+ String encUser = getString(WSHandlerConstants.ENCRYPTION_USER, mc);
+
+ if (encUser != null) {
+ reqData.setEncUser(encUser);
+ } else {
reqData.setEncUser(reqData.getUsername());
- }
+ }
if (reqData.getEncUser() == null) {
- throw new WSSecurityException("WSHandler: Encryption: no username");
+ throw new WSSecurityException("WSHandler: Encryption: no username");
}
/*
* String msgType = msgContext.getCurrentMessage().getMessageType(); if
@@ -430,80 +422,61 @@
* handleSpecialUser(encUser); }
*/
handleSpecialUser(reqData);
-
+
/*
* If the following parameters are no used (they return null) then the
* default values of WSS4J are used.
*/
- String tmpS = null;
- if ((tmpS = (String) getOption(WSHandlerConstants.ENC_KEY_ID)) == null) {
- tmpS = (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ENC_KEY_ID);
- }
- if (tmpS != null) {
- Integer I = (Integer) WSHandlerConstants.keyIdentifier.get(tmpS);
- if (I == null) {
- throw new WSSecurityException("WSHandler: Encryption: unknown key identification");
- }
- reqData.setEncKeyId(I.intValue());
- if (!(reqData.getEncKeyId() == WSConstants.ISSUER_SERIAL
- || reqData.getEncKeyId() == WSConstants.X509_KEY_IDENTIFIER
- || reqData.getEncKeyId() == WSConstants.SKI_KEY_IDENTIFIER
- || reqData.getEncKeyId() == WSConstants.BST_DIRECT_REFERENCE
- || reqData.getEncKeyId() == WSConstants.EMBEDDED_KEYNAME
- || reqData.getSigKeyId() == WSConstants.THUMBPRINT_IDENTIFIER)) {
- throw new WSSecurityException("WSHandler: Encryption: illegal key identification");
- }
+ String encKeyId = getString(WSHandlerConstants.ENC_KEY_ID, mc);
+ if (encKeyId != null) {
+ Integer id = (Integer) WSHandlerConstants
+ .keyIdentifier.get(encKeyId);
+ if (id == null) {
+ throw new WSSecurityException(
+ "WSHandler: Encryption: unknown key identification");
+ }
+ int tmp = id.intValue();
+ reqData.setEncKeyId(tmp);
+ if (!(tmp == WSConstants.ISSUER_SERIAL
+ || tmp == WSConstants.X509_KEY_IDENTIFIER
+ || tmp == WSConstants.SKI_KEY_IDENTIFIER
+ || tmp == WSConstants.BST_DIRECT_REFERENCE
+ || tmp == WSConstants.EMBEDDED_KEYNAME
+ || tmp == WSConstants.THUMBPRINT_IDENTIFIER)) {
+ throw new WSSecurityException(
+ "WSHandler: Encryption: illegal key identification");
+ }
+ }
+ String encSymAlgo = getString(WSHandlerConstants.ENC_SYM_ALGO, mc);
+ reqData.setEncSymmAlgo(encSymAlgo);
+
+ String encKeyTransport
+ = getString(WSHandlerConstants.ENC_KEY_TRANSPORT, mc);
+ reqData.setEncKeyTransport(encKeyTransport);
+
+ String encParts = getString(WSHandlerConstants.ENCRYPTION_PARTS, mc);
+ if (encParts != null) {
+ splitEncParts(encParts, reqData.getEncryptParts(), reqData);
}
+ }
- reqData.setEncSymmAlgo((String) getOption(WSHandlerConstants.ENC_SYM_ALGO));
- if (reqData.getEncSymmAlgo() == null) {
- reqData.setEncSymmAlgo((String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ENC_SYM_ALGO));
- }
+ protected boolean decodeMustUnderstand(RequestData reqData)
+ throws WSSecurityException {
+ String mu = getString(WSHandlerConstants.MUST_UNDERSTAND,
+ reqData.getMsgContext());
- reqData.setEncKeyTransport((String) getOption(WSHandlerConstants.ENC_KEY_TRANSPORT));
- if (reqData.getEncKeyTransport() == null) {
- reqData.setEncKeyTransport((String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ENC_KEY_TRANSPORT));
- }
- if ((tmpS = (String) getOption(WSHandlerConstants.ENCRYPTION_PARTS))
- == null) {
- tmpS =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.ENCRYPTION_PARTS);
- }
- if (tmpS != null) {
- splitEncParts(tmpS, reqData.getEncryptParts(), reqData);
- }
- }
+ if (mu == null) {return true;}
- protected boolean decodeMustUnderstand(RequestData reqData) throws WSSecurityException {
- boolean mu = true;
- String mustUnderstand = null;
- if ((mustUnderstand =
- (String) getOption(WSHandlerConstants.MUST_UNDERSTAND))
- == null) {
- mustUnderstand =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.MUST_UNDERSTAND);
- }
- if (mustUnderstand != null) {
- if (mustUnderstand.equals("0") || mustUnderstand.equals("false")) {
- mu = false;
- } else if (
- mustUnderstand.equals("1") || mustUnderstand.equals("true")) {
- mu = true;
- } else {
- throw new WSSecurityException("WSHandler: illegal mustUnderstand parameter");
- }
- }
- return mu;
+ if ("0".equals(mu) || "false".equals(mu)) {return false;}
+ if ("1".equals(mu) || "true".equals(mu)) {return true;}
+
+ throw new WSSecurityException(
+ "WSHandler: illegal mustUnderstand parameter");
}
public int decodeTimeToLive(RequestData reqData) {
- String ttl = null;
- if ((ttl =
- (String) getOption(WSHandlerConstants.TTL_TIMESTAMP))
- == null) {
- ttl =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.TTL_TIMESTAMP);
- }
+ String ttl = getString(WSHandlerConstants.TTL_TIMESTAMP,
+ reqData.getMsgContext());
int ttl_i = 0;
if (ttl != null) {
try {
@@ -518,26 +491,19 @@
return ttl_i;
}
- protected boolean decodeTimestampPrecision(RequestData reqData) throws WSSecurityException {
+ protected boolean decodeTimestampPrecision(RequestData reqData)
+ throws WSSecurityException {
boolean precisionInMilliSeconds = true;
- String value = null;
- if ((value =
- (String) getOption(WSHandlerConstants.TIMESTAMP_PRECISION))
- == null) {
- value =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.TIMESTAMP_PRECISION);
- }
- if (value != null) {
- if (value.equals("0") || value.equals("false")) {
- precisionInMilliSeconds = false;
- } else if (
- value.equals("1") || value.equals("true")) {
- precisionInMilliSeconds = true;
- } else {
- throw new WSSecurityException("WSHandler: illegal precisionInMilliSeconds parameter");
- }
- }
- return precisionInMilliSeconds;
+ String value = getString(WSHandlerConstants.TIMESTAMP_PRECISION,
+ reqData.getMsgContext());
+
+ if (value == null) {return true;}
+
+ if ("0".equals(value) || "false".equals(value)) {return false;}
+ if ("1".equals(value) || "true".equals(value)) {return true;}
+
+ throw new WSSecurityException(
+ "WSHandler: illegal precisionInMilliSeconds parameter");
}
/**
@@ -553,28 +519,27 @@
throws WSSecurityException {
WSPasswordCallback pwCb = null;
String password = null;
- String callback = null;
CallbackHandler cbHandler = null;
-
- if ((callback = (String) getOption(clsProp)) == null) {
- callback = (String) getProperty(reqData.getMsgContext(), clsProp);
- }
+ String err = "provided null or empty password";
+ Object mc = reqData.getMsgContext();
+ String callback = getString(clsProp, mc);
if (callback != null) { // we have a password callback class
pwCb = readPwViaCallbackClass(callback, username, doAction);
if ((pwCb.getPassword() == null) && (pwCb.getKey() == null)) {
- throw new WSSecurityException("WSHandler: password callback class provided null or empty password");
+ throw new WSSecurityException("WSHandler: password callback class "
+ +err);
}
- } else if (
- (cbHandler = (CallbackHandler) getProperty(reqData.getMsgContext(), refProp))
- != null) {
+ } else if ((cbHandler = (CallbackHandler) getProperty(mc, refProp))
+ != null) {
pwCb = performCallback(cbHandler, username, doAction);
if ((pwCb.getPassword() == null) && (pwCb.getKey() == null)) {
- throw new WSSecurityException("WSHandler: password callback provided null or empty password");
+ throw new WSSecurityException("WSHandler: password callback "
+ +err);
}
- } else if ((password = getPassword(reqData.getMsgContext())) == null) {
- throw new WSSecurityException("WSHandler: application provided null or empty password");
+ } else if ((password = getPassword(mc)) == null) {
+ throw new WSSecurityException("WSHandler: application "+err);
} else {
- setPassword(reqData.getMsgContext(), null);
+ setPassword(mc, null);
pwCb = new WSPasswordCallback("", WSPasswordCallback.UNKNOWN);
pwCb.setPassword(password);
}
@@ -735,83 +700,84 @@
}
/**
- * Hook to allow subclasses to load their Decryption Crypto however they see
- * fit.
+ * Hook to allow subclasses to load their Decryption Crypto however they
+ * see fit.
*/
- protected Crypto loadDecryptionCrypto(RequestData reqData) throws WSSecurityException {
+ protected Crypto loadDecryptionCrypto(RequestData reqData)
+ throws WSSecurityException {
+
Crypto crypto = null;
- String decPropFile = null;
- if ((decPropFile = (String) getOption(WSHandlerConstants.DEC_PROP_FILE))
- == null) {
- decPropFile =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.DEC_PROP_FILE);
- }
+ String decPropFile = getString(WSHandlerConstants.DEC_PROP_FILE,
+ reqData.getMsgContext());
if (decPropFile != null) {
if ((crypto = (Crypto) cryptos.get(decPropFile)) == null) {
crypto = CryptoFactory.getInstance(decPropFile);
cryptos.put(decPropFile, crypto);
}
} else if ((crypto = reqData.getSigCrypto()) == null) {
- throw new WSSecurityException("WSHandler: Encryption: no crypto property file");
+ throw new WSSecurityException(
+ "WSHandler: Encryption: no crypto property file");
}
return crypto;
}
- protected void decodeSignatureParameter2(RequestData reqData) throws WSSecurityException {
+ protected void decodeSignatureParameter2(RequestData reqData)
+ throws WSSecurityException {
reqData.setSigCrypto(loadSignatureCrypto(reqData));
- /* There are currently no other signature parameters that need to be handled
- * here, but we call the load crypto hook rather than just changing the visibility
- * of this method to maintain parity with WSDoAllSender.
- */
+ /* There are currently no other signature parameters that need
+ * to be handled here, but we call the load crypto hook rather
+ * than just changing the visibility
+ * of this method to maintain parity with WSDoAllSender.
+ */
}
/*
- * Set and check the decryption specific parameters, if necessary
- * take over signatur crypto instance.
- */
+ * Set and check the decryption specific parameters, if necessary
+ * take over signatur crypto instance.
+ */
- protected void decodeDecryptionParameter(RequestData reqData) throws WSSecurityException {
+ protected void decodeDecryptionParameter(RequestData reqData)
+ throws WSSecurityException {
reqData.setDecCrypto(loadDecryptionCrypto(reqData));
- /* There are currently no other decryption parameters that need to be handled
- * here, but we call the load crypto hook rather than just changing the visibility
- * of this method to maintain parity with WSDoAllSender.
- */
+ /* There are currently no other decryption parameters that need
+ * to be handled here, but we call the load crypto hook rather
+ * than just changing the visibility
+ * of this method to maintain parity with WSDoAllSender.
+ */
}
/**
* Get the password callback class and get an instance
* <p/>
*/
- protected CallbackHandler getPasswordCB(RequestData reqData) throws WSSecurityException {
+ protected CallbackHandler getPasswordCB(RequestData reqData)
+ throws WSSecurityException {
- String callback = null;
+ Object mc = reqData.getMsgContext();
CallbackHandler cbHandler = null;
- if ((callback = (String) getOption(WSHandlerConstants.PW_CALLBACK_CLASS))
- == null) {
- callback =
- (String) getProperty(reqData.getMsgContext(), WSHandlerConstants.PW_CALLBACK_CLASS);
- }
+ String callback = getString(WSHandlerConstants.PW_CALLBACK_CLASS, mc);
if (callback != null) {
Class cbClass = null;
try {
cbClass = Loader.loadClass(callback);
} catch (ClassNotFoundException e) {
- throw new WSSecurityException("WSHandler: cannot load password callback class: "
- + callback,
- e);
+ throw new WSSecurityException(
+ "WSHandler: cannot load password callback class: "
+ + callback, e);
}
try {
cbHandler = (CallbackHandler) cbClass.newInstance();
} catch (java.lang.Exception e) {
- throw new WSSecurityException("WSHandler: cannot create instance of password callback: "
- + callback,
- e);
+ throw new WSSecurityException(
+ "WSHandler: cannot create instance of password callback: "
+ + callback, e);
}
} else {
- cbHandler =
- (CallbackHandler) getProperty(reqData.getMsgContext(), WSHandlerConstants.PW_CALLBACK_REF);
+ cbHandler = (CallbackHandler) getProperty(mc,
+ WSHandlerConstants.PW_CALLBACK_REF);
if (cbHandler == null) {
- throw new WSSecurityException("WSHandler: no reference in callback property");
+ throw new WSSecurityException(
+ "WSHandler: no reference in callback property");
}
}
return cbHandler;
@@ -998,12 +964,53 @@
log.debug("Validation of Timestamp: Everything is ok");
return true;
}
+
+ /**
+ * Looks up key first via {@link #getOption(String)} and if not found
+ * there, via {@link #getProperty(Object, String)}
+ *
+ * @param key the key to search for. May not be null.
+ * @param mc the message context to search.
+ * @return the value found.
+ * @throws IllegalArgumentException if <code>key</code> is null.
+ */
+ public String getString(String key, Object mc) {
+ if (key == null) {
+ throw new IllegalArgumentException("Key cannot be null");
+ }
+ String s = getStringOption(key);
+ if (s != null) {
+ return s;
+ }
+ if (mc == null) {
+ throw new
+ IllegalArgumentException("Message context cannot be null");
+ }
+ return (String) getProperty(mc, key);
+ }
- public abstract Object getOption(String key);
+ /**
+ * Returns the option on <code>name</code>.
+ *
+ * @param key the non-null key of the option.
+ * @return the option on <code>key</code> if <code>key</code>
+ * exists and is of type java.lang.String; otherwise null.
+ */
+ public String getStringOption(String key) {
+ Object o = getOption(key);
+ if (o instanceof String){
+ return (String) o;
+ } else {
+ return null;
+ }
+ }
+
+ public abstract Object getOption(String key);
public abstract Object getProperty(Object msgContext, String key);
- public abstract void setProperty(Object msgContext, String key, Object value);
+ public abstract void setProperty(Object msgContext, String key,
+ Object value);
public abstract String getPassword(Object msgContext);
---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org