Apache Lens

Copyright 2014-2015 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


This product includes javax.mail library. The details on how to obtain the library is available at
https://glassfish.java.net/javaee5/mail/

This product includes jersey libraries : jersey-server, jersey-client, jersey-media-multipart, jersey-media-json-jackson,
jersey-media-moxy, jersey-container-grizzly2-servlet, jersey-container-grizzly2-http, jersey-container-servlet,
jersey-container-servlet-core, jersey-entity-filtering, jersey-media-jaxb and jersey-common. The details on how to
obtain those modules are available at https://jersey.java.net/.

This product includes grizzly libraries : grizzly-http-server, grizzly-framework, grizzly-http, grizzly-http-servlet.
The details on how to obtain those libraries is available at https://grizzly.java.net/.

This product includes javax.ws.rs-api library. The details on how to obtain the library is available at
http://jax-rs-spec.java.net.

This product includes jaxb-api library. The details on how to obtain the library is available at https://jaxb.java.net/.

This product includes javax.servlet library. The details on how to obtain the library is available at
http://servlet-spec.java.net/.

This product includes HK2 libraries : hk2-locator, asm-all-repackaged, cglib, hk2-utils, hk2-api, javax.inject
and osgi-resource-locator. The details on how to obtain those libraries is available at https://hk2.java.net/.

This product includes mimepull library. The details on how to obtain the library is available at
http://mimepull.java.net.

This product includes javax.annotation API. The details on how to obtain the library is available at
http://jcp.org/en/jsr/detail?id=250.

This product includes EclipseLink libraries : org.eclipse.persistence.moxy, org.eclipse.persistence.core,
org.eclipse.persistence.asm and org.eclipse.persistence.antlr. The details on how to obtain those libraries is
available at http://www.eclipse.org/eclipselink.

This product includes JavaBeans Activation Framework(javax.activation:activation). The details on how to obtain the
library is available at http://java.sun.com/products/javabeans/jaf/index.jsp.

This product includes c3p0 library. The details on how to obtain the library is available at
http://www.mchange.com/projects/c3p0/.

This product includes mchange-commons-java. The details on how to obtain the library is available at
https://github.com/swaldman/mchange-commons-java.

This product includes Logback Core Module and Logback Classic Module. The details on how to obtain the library is
available at http://www.qos.ch.
