<?xml version="1.0" encoding="UTF-8"?>
<!--
 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.
-->
<repository lastmodified="20140130073223" name="AnotherRepository">

    <resource id="test_file_1/1.0.0.SNAPSHOT"
        symbolicname="test_file_1"
        uri="repo_files/test_file_1.jar"
        version="1.0.0.SNAPSHOT">
        <size>1</size>
        <capability name="bundle">
            <p n="manifestversion" v="2" />
            <p n="presentationname"
                v="Unnamed - dummy" />
            <p n="symbolicname" v="dummy" />
            <p n="version" t="version" v="1.0.0.SNAPSHOT" />
        </capability>
        <capability name="package">
            <p n="package" v="javax.naming" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="javax.naming.event" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="javax.naming.spi" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="javax.sql" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="org.xml.sax" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="org.xml.sax.ext" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="org.xml.sax.helpers" />
            <p n="version" t="version" v="0.0.0" />
        </capability>
        <capability name="package">
            <p n="package" v="org.apache.commons.logging" />
            <p n="version" t="version" v="1.0.4" />
        </capability>        
        <capability name="foo">
            <p n="someKey" v="someVal"/>
        </capability>
    </resource>

    <resource id="test_file_2/1.0.0"
        symbolicname="test_file_2"
        uri="repo_files/test_file_2.jar"
        version="1.0.0">
        <size>2</size>

        <capability name="foo">
            <p n="someKey" v="someOtherVal"/>
        </capability>
    </resource>
</repository>
