
Apache Olingo
Copyright 2013-2014 The Apache Software Foundation

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

This distribution includes the Jax-Rs API.
Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 
Oracle and Java are registered trademarks of Oracle and/or its affiliates. 
Other names may be trademarks of their respective owners. 
The Jax-Rs API is dually licensed under the CDDL 1.1 and GPL2 w/ CPE license,
and is included in this software distribution under the CDDL 1.1 license.
For details, see the Jax-Rs API web site: http://jax-rs-spec.java.net

This distribution includes the Javax Persistence API.
Copyright(c) 2014 The Eclipse Foundation. All Rights Reserved.
The Javax Persistence API is dually licensed under the Eclipse Public License v1.0 
and Eclipse Distribution License v. 1.0, and is included in this software 
distribution under the Eclipse Public License v1.0. For details, see the 
Javax Persistence API web site: http://www.eclipse.org/eclipselink