// ------------------------------------------------------------------
// 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 
  - Unnamed - org.apache.xmlbeans:xmlbeans:jar:2.5.0  org.apache.xmlbeans:xmlbeans:jar:2.5.0

  - 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)
  - Servlet 2.5 (http://geronimo.apache.org/specs/geronimo-servlet_2.5_spec) org.apache.geronimo.specs:geronimo-servlet_2.5_spec:jar:1.1.2
    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: 'Internet2' (http://www.internet2.edu/)
  - OpenSAML-J (http://opensaml.org/) org.opensaml:opensaml:jar:2.5.1-1
    License: Apache 2  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - OpenWS (http://opensaml.org/) org.opensaml:openws:jar:1.4.2-1
    License: Apache 2  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - XMLTooling-J (http://opensaml.org/) org.opensaml:xmltooling:jar:1.3.2-1
    License: Apache 2  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'Joda.org' (http://www.joda.org)
  - Joda time (http://joda-time.sourceforge.net) joda-time:joda-time:jar:1.6.2
    License: Apache 2  (http://www.apache.org/licenses/LICENSE-2.0.txt)

From: 'Mort Bay Consulting' (http://www.mortbay.com)
  - Jetty :: Continuation (http://www.eclipse.org/jetty/jetty-continuation) org.eclipse.jetty:jetty-continuation:jar:7.5.4.v20111024
    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.5.4.v20111024
    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.5.4.v20111024
    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.5.4.v20111024
    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.5.4.v20111024
    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.5.4.v20111024
    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.2:compile
    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.6.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.6.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.6.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.6.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.6.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.6.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.6.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.6.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.6.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 (http://java.net/saaj-impl/saaj-impl) com.sun.xml.messaging.saaj:saaj-impl:jar:1.3.12: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 (http://java.net/saaj-api/saaj-api) javax.xml.soap:saaj-api:jar:1.3.4:compile
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.sun.com/cddl/cddl.html)

From: 'Sun Microsystems, Inc' (http://www.sun.com/)
  - MIME streaming extension  org.jvnet:mimepull:jar:1.4
    License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0  (http://www.opensource.org/licenses/cddl1.php)    License: GPLv2 with classpath exception  (http://www.gnu.org/software/classpath/license.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 Spec 2.2 (http://geronimo.apache.org/maven/specs/geronimo-jaxws_2.2_spec/1.1) org.apache.geronimo.specs:geronimo-jaxws_2.2_spec:bundle:1.1
    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.6: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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime JiBX DataBinding (http://cxf.apache.org) org.apache.cxf:cxf-rt-databinding-jibx:jar:2.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Runtime WS MetadataExchange (http://cxf.apache.org) org.apache.cxf:cxf-rt-ws-mex:jar:2.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache CXF Command Line Tools WADLTo JAXRS Frontend (http://cxf.apache.org) org.apache.cxf:cxf-tools-wadlto-jaxrs:jar:2.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    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.5.2
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache Neethi (http://ws.apache.org/neethi/) org.apache.neethi:neethi:bundle:3.0.1
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - Apache Velocity (http://velocity.apache.org/engine/devel/) org.apache.velocity:velocity:jar:1.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.6.4
    License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
  - XmlSchema Core (http://ws.apache.org/commons/xmlschema20/xmlschema-core) org.apache.ws.xmlschema:xmlschema-core:bundle:2.0.1
    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)




