<?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.
-->
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
    <body>
        <h1>Bundle details</h1>

        <wicket:extend>
            Details of <span wicket:id="name">symbolic name</span>

            <h3>Imports</h3>
            <ul>
                <li wicket:id="imports">
                    <span wicket:id="importPackage">org.osgi.framework</span>
                </li>
            </ul>

            <h3>Exports</h3>
            <ul>
                <li wicket:id="exports">
                    <span wicket:id="exportPackage">org.osgi.framework</span>
                </li>
            </ul>

            <h3>Services in use</h3>
            <ul>
                <li wicket:id="servicesInUse">
                    <span wicket:id="serviceInUse">org.osgi.framework</span>
                    <!--
                    <table>
                        <tr>
                            <th>Property Name</th>
                            <th>Property Value</th>
                        </tr>
                        <tr wicket:id="serviceInUseProperty">
                            <td wicket:id="propertyName">Property Name</td>
                            <td wicket:id="propertyValue">Property Value</td>
                        </tr>
                    </table>
                    -->
                </li>
            </ul>

            <h3>Services provided by bundle</h3>
            <ul>
                <li wicket:id="servicesExported">
                    <span wicket:id="serviceExported">org.osgi.framework</span>
                </li>
            </ul>
        </wicket:extend>
    </body>
</html>
