#    Licensed to the Apache Software Foundation (ASF) under one
#    or more contributor license agreements.  See the NOTICE file
#    distributed with this work for additional information
#    regarding copyright ownership.  The ASF licenses this file
#    to you under the Apache License, Version 2.0 (the
#    "License"); you may not use this file except in compliance
#    with the License.  You may obtain a copy of the License at
#    
#     http://www.apache.org/licenses/LICENSE-2.0
#    
#    Unless required by applicable law or agreed to in writing,
#    software distributed under the License is distributed on an
#    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#    KIND, either express or implied.  See the License for the
#    specific language governing permissions and limitations
#    under the License.

Export-Package: \
    org.osgi.service.jpa

Bundle-Activator: org.apache.aries.jpa.container.impl.Activator
Provide-Capability: \
    osgi.extender;osgi.extender=aries.jpa;version:Version="${project.version.clean}",\
    osgi.extender;osgi.extender="osgi.jpa";version:Version="1.1";uses:="org.osgi.service.jpa,javax.persistence",\
    osgi.service;objectClass=javax.persistence.EntityManagerFactory;effective:=active;uses:=javax.persistence,\
    osgi.service;objectClass=org.osgi.service.jpa.EntityManagerFactoryBuilder;effective:=active";uses:=org.osgi.service.jpa

# The Aries JPA container is able to work with JPA 2.0 or 2.1, but may need enhancement
# For future versions, hence we prohibit versions of the contract greater than 2.1.x
# Because of this complexity we can't just use -contract: JavaJPA.
Require-Capability: \
    osgi.contract;filter:="(&(osgi.contract=JavaJPA)(|(version=2)(version=2.1))(!(version>=2.2)))",\
    osgi.service;effective:=active;filter:="(objectClass=javax.persistence.spi.PersistenceProvider)"
    
# To ensure the contract works properly we import without versions
Import-Package:\
    javax.persistence;version=0.0.0,\
    javax.persistence.criteria;version=0.0.0,\
    javax.persistence.metamodel;version=0.0.0,\
    javax.persistence.spi;version=0.0.0,\
    *
