#    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.

# Double exports copied from Geronimo to ensure maximal 
# compatibility with the mess of older implementations out there. 
# The JavaJPA contract is recommended to avoid issues here.

Export-Package: \
    javax.persistence;jpa="2.0";version="1.1",\
    javax.persistence;jpa="2.0";version="2.0",\
    javax.persistence.criteria;jpa="2.0";version="1.1",\
    javax.persistence.criteria;jpa="2.0";version="2.0",\
    javax.persistence.metamodel;jpa="2.0";version="1.1",\
    javax.persistence.metamodel;jpa="2.0";version="2.0",\
    javax.persistence.spi;jpa="2.0";version="1.1",\
    javax.persistence.spi;jpa="2.0";version="2.0"
    
Provide-Capability:\
    osgi.contract;osgi.contract="JavaJPA";version:List<Version>="2,1";\
    uses:="javax.persistence,javax.persistence.criteria,javax.persistence.metamodel,javax.persistence.spi"

# Make the API substitutable with unversioned imports and a contract requirement

Import-Package: \
    !org.apache.geronimo.*,\
    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,\
    *

Require-Capability:\
    osgi.contract;filter:="(&(osgi.contract=JavaJPA)(version=2)(!(version>=2.1)))"

Private-Package: \
    org.apache.aries.jpa.javax.persistence,\
    org.apache.geronimo.osgi.locator 
    
Bundle-Activator: org.apache.aries.jpa.javax.persistence.AriesJPASpecActivator

Bundle-SymbolicName: org.apache.aries.jpa.javax.persistence_2.0
