Author: werner Date: Fri Dec 9 06:45:56 2005 New Revision: 355504 URL: http://svn.apache.org/viewcvs?rev=355504&view=rev Log: Add Loader class from WSS4J, use real "on-the-fly" class loading in PolicyFactory to enable real plug-in and be independent of specifc XML parser.
Modified: webservices/commons/trunk/policy/src/org/apache/ws/policy/util/PolicyFactory.java Modified: webservices/commons/trunk/policy/src/org/apache/ws/policy/util/PolicyFactory.java URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/ws/policy/util/PolicyFactory.java?rev=355504&r1=355503&r2=355504&view=diff ============================================================================== --- webservices/commons/trunk/policy/src/org/apache/ws/policy/util/PolicyFactory.java (original) +++ webservices/commons/trunk/policy/src/org/apache/ws/policy/util/PolicyFactory.java Fri Dec 9 06:45:56 2005 @@ -27,18 +27,46 @@ public static PolicyReader getPolicyReader(int type) { + String name = null; switch (type) { case DOM_POLICY_READER: - return new DOMPolicyReader(); + name = "org.apache.ws.policy.util.DOMPolicyReader"; + break; case OM_POLICY_READER: - return new OMPolicyReader(); + name = "org.apache.ws.policy.util.OMPolicyReader"; + break; default: - throw new IllegalArgumentException("Unknow PolicyReader type .."); + throw new IllegalArgumentException("Unknown PolicyReader type .."); } + try { + return (PolicyReader)Loader.loadClass(name).newInstance(); + } catch (InstantiationException e) { + throw new IllegalArgumentException("Cannot load PolicyReader type .."); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException("Cannot load PolicyReader type .."); + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException("Cannot load PolicyReader type .."); + } } - public static PolicyWriter getPolicyWriter() { - return new StAXPolicyWriter(); + public static PolicyWriter getPolicyWriter(int type) { + String name = null; + switch (type) { + case StAX_POLICY_WRITER: + name = "org.apache.ws.policy.util.StAXPolicyWriter"; + break; + default: + throw new IllegalArgumentException("Unknown PolicyWriter type .."); + } + try { + return (PolicyWriter)Loader.loadClass(name).newInstance(); + } catch (InstantiationException e) { + throw new IllegalArgumentException("Cannot load PolicyWriter type .."); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException("Cannot load PolicyWriter type .."); + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException("Cannot load PolicyWriter type .."); + } } }