[ https://issues.apache.org/jira/browse/CXF-3705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Zhemzhitsky updated CXF-3705: ------------------------------------ Description: It's impossible to extend org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom non-standad algorithms. Sometimes it's needed to support non-standard algorithm suite. Now it's hardly possible to do. The possible solution is to refactor org.apache.cxf.ws.security.policy.builders.AlgorithmSuiteBuilder to get all algorithm suites using cxf extension mechanism, for example, {code} public class AlgorithmSuiteBuilder implements AssertionBuilder<Element> { private Bus bus; public AlgorithmSuiteBuilder(Bus bus) { this.bus = bus; } public Assertion build(Element element, AssertionBuilderFactory factory) throws IllegalArgumentException { SPConstants consts = SP11Constants.SP_NS.equals(element.getNamespaceURI()) ? SP11Constants.INSTANCE : SP12Constants.INSTANCE; Element policyElem = DOMUtils.getFirstElement(element); String algoSuiteName = DOMUtils.getFirstElement(policyElem).getLocalName(); AlgorithmSuiteLoader loader = bus.getExtension(AlgorithmSuiteLoader.class); AlgorithmSuite suite = loader.getAlgorithmSuite(algoSuiteName, consts); if(suite == null) { throw new IllegalArgumentException("Algorithm suite \"" + algoSuiteName + "\" is not registered"); } return suite; } public QName[] getKnownElements() { return new QName[]{SP11Constants.ALGORITHM_SUITE, SP12Constants.ALGORITHM_SUITE}; } } {code} was: It's impossible to extend org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom non-standad algorithms. Sometimes it's needed to support non-standard algorithm suite. Now it's hardly possible to do. The possible solution is to refactor org.apache.cxf.ws.security.policy.builders.AlgorithmSuiteBuilder to get all algorithm suites using cxf extension mechanism, for example, public class AlgorithmSuiteBuilder implements AssertionBuilder<Element> { private Bus bus; public AlgorithmSuiteBuilder(Bus bus) { this.bus = bus; } public Assertion build(Element element, AssertionBuilderFactory factory) throws IllegalArgumentException { SPConstants consts = SP11Constants.SP_NS.equals(element.getNamespaceURI()) ? SP11Constants.INSTANCE : SP12Constants.INSTANCE; Element policyElem = DOMUtils.getFirstElement(element); String algoSuiteName = DOMUtils.getFirstElement(policyElem).getLocalName(); AlgorithmSuiteLoader loader = bus.getExtension(AlgorithmSuiteLoader.class); AlgorithmSuite suite = loader.getAlgorithmSuite(algoSuiteName, consts); if(suite == null) { throw new IllegalArgumentException("Algorithm suite \"" + algoSuiteName + "\" is not registered"); } return suite; } public QName[] getKnownElements() { return new QName[]{SP11Constants.ALGORITHM_SUITE, SP12Constants.ALGORITHM_SUITE}; } } > It's impossible to extend > org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom > non-standad algorithms. > ---------------------------------------------------------------------------------------------------------------------- > > Key: CXF-3705 > URL: https://issues.apache.org/jira/browse/CXF-3705 > Project: CXF > Issue Type: Improvement > Components: WS-* Components > Affects Versions: 2.4.1 > Reporter: Sergey Zhemzhitsky > Labels: ws-security > > It's impossible to extend > org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom > non-standad algorithms. > Sometimes it's needed to support non-standard algorithm suite. Now it's > hardly possible to do. > The possible solution is to refactor > org.apache.cxf.ws.security.policy.builders.AlgorithmSuiteBuilder to get all > algorithm suites using cxf extension mechanism, for example, > {code} > public class AlgorithmSuiteBuilder implements AssertionBuilder<Element> { > private Bus bus; > public AlgorithmSuiteBuilder(Bus bus) { > this.bus = bus; > } > public Assertion build(Element element, AssertionBuilderFactory factory) > throws IllegalArgumentException { > SPConstants consts = > SP11Constants.SP_NS.equals(element.getNamespaceURI()) > ? SP11Constants.INSTANCE : SP12Constants.INSTANCE; > Element policyElem = DOMUtils.getFirstElement(element); > String algoSuiteName = > DOMUtils.getFirstElement(policyElem).getLocalName(); > AlgorithmSuiteLoader loader = > bus.getExtension(AlgorithmSuiteLoader.class); > AlgorithmSuite suite = loader.getAlgorithmSuite(algoSuiteName, > consts); > if(suite == null) { > throw new IllegalArgumentException("Algorithm suite \"" + > algoSuiteName + "\" is not registered"); > } > return suite; > } > public QName[] getKnownElements() { > return new QName[]{SP11Constants.ALGORITHM_SUITE, > SP12Constants.ALGORITHM_SUITE}; > } > } > {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira