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

-->

<licenseinfo>
    <fileset>
        <file>doc/dd_api_schema.jpg</file>
        <license ref="Apache-2.0-ASF" />
        <comment type="COMMENT_UNSUPPORTED"/>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_1_4.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_1_4.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_5.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_5.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_6.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_6.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_7.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_7.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_8.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_8.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_1_4.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_1_4.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_5.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_5.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_6.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_6.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_7.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_7.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_8.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/connector_1_5.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/connector_1_7.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_2_1.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_2_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_0.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_1.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_2.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_3_2.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/j2ee_1_4.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/j2ee_web_services_1_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/j2ee_web_services_client_1_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_5.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_6.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_7.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_8.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_1_2.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_1_3.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_1_4.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_1_4_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_client_1_2.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_client_1_3.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/javaee_web_services_client_1_4.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_2_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_2_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_2_2.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_2_3.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/permissions_7.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_2.dtd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_2_1.dtd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_3.dtd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_3_1.dtd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_4.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_4.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_5.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_2_5.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_3_0.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_3_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_3_1.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_3_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_4_0.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_4_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_3_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_3_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_4_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_3_0.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_3_0.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_3_1.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_3_1.xsd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_4_0.mdd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_4_0.xsd</file>
        <license ref="CDDL-1.1" />
        <comment type="CATEGORY_B" />
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/datatypes.dtd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/XMLSchema.dtd</file>
        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/xml.xsd</file>
        <license ref="W3C2" />
        <comment type="CATEGORY_B" />
    </fileset>
</licenseinfo>
