#    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: !*
Bundle-Activator: org.apache.aries.jpa.eclipselink.adapter.Activator

# This plugin can work with JPA 2.0 or 2.1, but not future versions (which
# May change the PersistenceProvider interface), so we have a custom contract.
Require-Capability: \
    osgi.contract; filter:="(&(osgi.contract=JavaJPA)(|(version=2)(version=2.1))(!(version>=2.2)))",\
    osgi.identity; effective:=active; filter:="(osgi.identity=org.eclipse.persistence.jpa)"
Provide-Capability: \
    osgi.service; effective:=active; 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,\
    *
