// ------------------------------------------------------------------
// Transitive dependencies of this project determined from the
// maven pom organized by organization.
// ------------------------------------------------------------------

Apache CXF


From: 'an unknown organization'
  - AntLR Parser Generator (http://www.antlr.org/) antlr:antlr:jar:2.7.7
    License: BSD License  (http://www.antlr.org/license.html)
  - AOP alliance (http://aopalliance.sourceforge.net) aopalliance:aopalliance:jar:1.0
    License: Public Domain 
  - ANTLR Grammar Tool (http://antlr.org) org.antlr:antlr:jar:3.2

  - Antlr 3 Runtime (http://www.antlr.org) org.antlr:antlr-runtime:jar:3.2

  - ANTLR StringTemplate (http://www.stringtemplate.org) org.antlr:stringtemplate:jar:3.2
    License: BSD licence  (http://antlr.org/license.html)
  - Bouncy Castle Provider (http://www.bouncycastle.org/java.html) org.bouncycastle:bcprov-jdk15:jar:1.45
    License: Bouncy Castle Licence  (http://www.bouncycastle.org/licence.html)
  - Rhino (http://www.mozilla.org/rhino/) rhino:js:jar:1.7R2
    License: Mozilla Public License  (http://www.mozilla.org/MPL/MPL-1.1.html)
  - WSDL4J (http://sf.net/projects/wsdl4j) wsdl4j:wsdl4j:jar:1.6.2
    License: CPL  (http://www.opensource.org/licenses/cpl1.0.txt)

From: 'Apache Software Foundation' (http://www.apache.org)
  - Annotation 1.0 (http://geronimo.apache.org/specs/geronimo-annotation_1.0_spec) org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - JMS 1.1 (http://geronimo.apache.org/specs/geronimo-jms_1.1_spec) org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Streaming API for XML (STAX API 1.0) (http://geronimo.apache.org/specs/geronimo-stax-api_1.0_spec) org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:bundle:1.0.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'Apache Software Foundation' (http://www.apache.org/)
  - XML Commons Resolver Component (http://xml.apache.org/commons/components/resolver/) xml-resolver:xml-resolver:jar:1.2
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'Codehaus' (http://www.codehaus.org/)
  - Stax2 API (http://woodstox.codehaus.org/StAX2) org.codehaus.woodstox:stax2-api:jar:3.1.1
    License: The BSD License  (http://www.opensource.org/licenses/bsd-license.php)
  - Woodstox (http://woodstox.codehaus.org) org.codehaus.woodstox:woodstox-core-asl:jar:4.1.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'Envoi Solutions LLC' (http://www.envoisolutions.com)
  - Jettison (http://codehaus.org/jettison/jettison) org.codehaus.jettison:jettison:jar:1.3.1:compile
    License: The Apache Software License, Version 2.0  (http://jettison.codehaus.org/License)

From: 'Envoi Solutions LLC' (http://www.envoisolutions.com/)
  - Java Rest Annotations (http://jra.codehaus.org) org.codehaus.jra:jra:jar:1.0-alpha-4
    License: The Apache Software License, Version 2.0  (http://jra.codehaus.org/License)

From: 'Mort Bay Consulting' (http://www.mortbay.com)
  - Jetty :: Continuation (http://www.eclipse.org/jetty/jetty-continuation) org.eclipse.jetty:jetty-continuation:jar:7.4.5.v20110725
    License: Apache Software License - Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)    License: Eclipse Public License - Version 1.0  (http://www.eclipse.org/org/documents/epl-v10.php)
  - Jetty :: Http Utility (http://www.eclipse.org/jetty/jetty-http) org.eclipse.jetty:jetty-http:jar:7.4.5.v20110725
    License: Apache Software License - Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)    License: Eclipse Public License - Version 1.0  (http://www.eclipse.org/org/documents/epl-v10.php)
  - Jetty :: IO Utility (http://www.eclipse.org/jetty/jetty-io) org.eclipse.jetty:jetty-io:jar:7.4.5.v20110725
    License: Apache Software License - Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)    License: Eclipse Public License - Version 1.0  (http://www.eclipse.org/org/documents/epl-v10.php)
  - Jetty :: Security (http://www.eclipse.org/jetty/jetty-security) org.eclipse.jetty:jetty-security:jar:7.4.5.v20110725
    License: Apache Software License - Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)    License: Eclipse Public License - Version 1.0  (http://www.eclipse.org/org/documents/epl-v10.php)
  - Jetty :: Server Core (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-server:jar:7.4.5.v20110725
    License: Apache Software License - Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)    License: Eclipse Public License - Version 1.0  (http://www.eclipse.org/org/documents/epl-v10.php)
  - Jetty :: Utilities (http://www.eclipse.org/jetty/jetty-util) org.eclipse.jetty:jetty-util:jar:7.4.5.v20110725
    License: Apache Software License - Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0)    License: Eclipse Public License - Version 1.0  (http://www.eclipse.org/org/documents/epl-v10.php)

From: 'ObjectWeb' (http://www.objectweb.org/)
  - ASM (http://asm.objectweb.org/asm/asm) asm:asm:jar:3.3:compile
    License: BSD  (http://asm.ow2.org/license.html)

From: 'QOS.ch' (http://www.qos.ch)
  - Simple Logging Facade for Java - API (http://www.slf4j.org/slf4j-api) org.slf4j:slf4j-api:jar:1.6.1:runtime
    License: MIT License  (http://www.slf4j.org/license.html)

From: 'Spring Framework' (http://www.springframework.org/)
  - Spring AOP  org.springframework:spring-aop:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring ASM  org.springframework:spring-asm:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring Beans  org.springframework:spring-beans:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring Context  org.springframework:spring-context:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring Core  org.springframework:spring-core:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring Expression  org.springframework:spring-expression:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring JMS  org.springframework:spring-jms:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring Transactions  org.springframework:spring-tx:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Spring Web  org.springframework:spring-web:jar:3.0.5.RELEASE:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'Sun Microsystems' (http://www.sun.com/)
  - Sun JAXB Reference Implementation Runtime (http://jaxb.java.net/jaxb-impl) com.sun.xml.bind:jaxb-impl:jar:2.2.4-1:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
  - Sun JAXB Reference Implementation Tools (http://jaxb.java.net/jaxb-xjc) com.sun.xml.bind:jaxb-xjc:jar:2.2.4-1:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
  - Sun FastInfoset Implementation (http://fi.java.net/FastInfoset) com.sun.xml.fastinfoset:FastInfoset:jar:1.2.9:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Sun SAAJ Reference Implementation  com.sun.xml.messaging.saaj:saaj-impl:jar:1.3.2:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
  - JSR 311 API (https://jsr311.dev.java.net/) javax.ws.rs:jsr311-api:jar:1.1.1:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
  - Java Architecture for XML Binding (JAXB API) (http://jaxb.java.net/jaxb-api) javax.xml.bind:jaxb-api:jar:2.2.3:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)
  - Sun SAAJ API  javax.xml.soap:saaj-api:jar:1.3:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)

From: 'The Apache Software Foundation' (http://www.apache.org)
  - Apache Commons - collections (http://commons.apache.org/collections/commons-collections) commons-collections:commons-collections:jar:3.2.1:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Activation 1.1 (http://geronimo.apache.org/maven/specs/geronimo-activation_1.1_spec/1.1) org.apache.geronimo.specs:geronimo-activation_1.1_spec:bundle:1.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - JavaMail 1.4 (http://geronimo.apache.org/maven/specs/geronimo-javamail_1.4_spec/1.7.1) org.apache.geronimo.specs:geronimo-javamail_1.4_spec:bundle:1.7.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache Geronimo JAX-WS 2.2 API (http://geronimo.apache.org/maven/specs/geronimo-jaxws_2.2_spec/1.0) org.apache.geronimo.specs:geronimo-jaxws_2.2_spec:bundle:1.0
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Servlet 3.0 (http://geronimo.apache.org/maven/specs/geronimo-servlet_3.0_spec/1.0) org.apache.geronimo.specs:geronimo-servlet_3.0_spec:bundle:1.0
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Web Services Metadata 2.0 (http://geronimo.apache.org/maven/specs/geronimo-ws-metadata_2.0_spec/1.1.3) org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec:bundle:1.1.3
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - XML Security (http://santuario.apache.org/xmlsec) org.apache.santuario:xmlsec:jar:1.4.5:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Jakarta-ORO  oro:oro:jar:2.0.8:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache Xalan-Java (http://xml.apache.org/xalan-j/xalan) xalan:xalan:jar:2.7.1:compile
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'The Apache Software Foundation' (http://www.apache.org/)
  - Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.6
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Commons Logging (http://commons.apache.org/logging) commons-logging:commons-logging:jar:1.1.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF API (http://cxf.apache.org) org.apache.cxf:cxf-api:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Common Schemas (http://cxf.apache.org/) org.apache.cxf:cxf-common-schemas:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Common Utilities (http://cxf.apache.org) org.apache.cxf:cxf-common-utilities:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Colocated Binding (http://cxf.apache.org) org.apache.cxf:cxf-rt-bindings-coloc:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime CORBA Binding (http://cxf.apache.org) org.apache.cxf:cxf-rt-bindings-corba:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime HTTP Binding (http://cxf.apache.org) org.apache.cxf:cxf-rt-bindings-http:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Object Binding (http://cxf.apache.org) org.apache.cxf:cxf-rt-bindings-object:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime SOAP Binding (http://cxf.apache.org) org.apache.cxf:cxf-rt-bindings-soap:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime XML Binding (http://cxf.apache.org) org.apache.cxf:cxf-rt-bindings-xml:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Core (http://cxf.apache.org) org.apache.cxf:cxf-rt-core:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Aegis Databinding (http://cxf.apache.org/) org.apache.cxf:cxf-rt-databinding-aegis:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JAXB DataBinding (http://cxf.apache.org) org.apache.cxf:cxf-rt-databinding-jaxb:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime SDO DataBinding (http://cxf.apache.org) org.apache.cxf:cxf-rt-databinding-sdo:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime XmlBeans DataBinding (http://cxf.apache.org) org.apache.cxf:cxf-rt-databinding-xmlbeans:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JAX-RS Frontend (http://cxf.apache.org) org.apache.cxf:cxf-rt-frontend-jaxrs:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JAX-WS Frontend (http://cxf.apache.org) org.apache.cxf:cxf-rt-frontend-jaxws:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JavaScript Frontend (http://cxf.apache.org) org.apache.cxf:cxf-rt-frontend-js:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Simple Frontend (http://cxf.apache.org) org.apache.cxf:cxf-rt-frontend-simple:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JavaScript Client Generator (http://cxf.apache.org/) org.apache.cxf:cxf-rt-javascript:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Management (http://cxf.apache.org) org.apache.cxf:cxf-rt-management:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Transport Common Used Classes (http://cxf.apache.org) org.apache.cxf:cxf-rt-transports-common:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime HTTP Transport (http://cxf.apache.org) org.apache.cxf:cxf-rt-transports-http:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime HTTP Jetty Transport (http://cxf.apache.org) org.apache.cxf:cxf-rt-transports-http-jetty:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF HTTP Transport for OSGi (http://cxf.apache.org) org.apache.cxf:cxf-rt-transports-http-osgi:bundle:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JMS Transport (http://cxf.apache.org) org.apache.cxf:cxf-rt-transports-jms:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime Local Transport (http://cxf.apache.org) org.apache.cxf:cxf-rt-transports-local:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime WS Addressing (http://cxf.apache.org) org.apache.cxf:cxf-rt-ws-addr:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime WS Policy (http://cxf.apache.org) org.apache.cxf:cxf-rt-ws-policy:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime WS Reliable Messaging (http://cxf.apache.org) org.apache.cxf:cxf-rt-ws-rm:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime WS Security (http://cxf.apache.org) org.apache.cxf:cxf-rt-ws-security:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools Common (http://cxf.apache.org) org.apache.cxf:cxf-tools-common:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools CORBA (http://cxf.apache.org) org.apache.cxf:cxf-tools-corba:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools JavaTo WS (http://cxf.apache.org) org.apache.cxf:cxf-tools-java2ws:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools WSDLTo Misctools (http://cxf.apache.org) org.apache.cxf:cxf-tools-misctools:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools Validator (http://cxf.apache.org) org.apache.cxf:cxf-tools-validator:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools WSDLTo Core (http://cxf.apache.org) org.apache.cxf:cxf-tools-wsdlto-core:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools WSDLTo JAXB Databinding (http://cxf.apache.org) org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools WSDL to JavaScript Front End (http://cxf.apache.org) org.apache.cxf:cxf-tools-wsdlto-frontend-javascript:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools WSDLTo JAXWS Frontend (http://cxf.apache.org) org.apache.cxf:cxf-tools-wsdlto-frontend-jaxws:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Woodstox/MSV Schema Validation (http://cxf.apache.org) org.apache.cxf:cxf-wstx-msv-validation:jar:2.3.9
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache Neethi (http://ws.apache.org/commons/neethi/) org.apache.neethi:neethi:bundle:2.0.5
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache Velocity (http://velocity.apache.org/engine/releases/velocity-1.6.2/) org.apache.velocity:velocity:jar:1.6.4
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - XmlSchema (http://ws.apache.org/commons/XmlSchema) org.apache.ws.commons.schema:XmlSchema:bundle:1.4.7
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - WSS4J (http://ws.apache.org/wss4j/) org.apache.ws.security:wss4j:bundle:1.5.12
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Xalan Java Serializer (http://xml.apache.org/xalan-j/) xalan:serializer:jar:2.7.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'XmlBeans' (http://xmlbeans.apache.org/)
  - XmlBeans (http://xmlbeans.apache.org) org.apache.xmlbeans:xmlbeans:jar:2.4.0
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)




