cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Zhemzhitsky (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-3705) It's impossible to extend org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom non-standad algorithms.
Date Thu, 04 Aug 2011 06:19:32 GMT
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


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};
    }

}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message