<?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>src/org/netbeans/modules/j2ee/common/dd/resources/beans-1.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-1.1.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-2.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-3.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint-1.1.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint-2.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint-3.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-1.3.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-1.4.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-5.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-6.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-7.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-8.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-9.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation-1.1.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation-2.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation-3.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-2.3.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-2.4.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-2.5.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-3.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-3.1.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-4.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-5.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-3.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-3.1.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-4.0.xml</file>
        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-5.0.xml</file>
        <file>test/unit/src/templates/Class.template</file>
        <file>test/unit/src/templates/Interface.template</file>
        <license ref="Apache-2.0-ASF" />
        <comment type="TEMPLATE_MINIMAL_IP"/>
    </fileset>
</licenseinfo>
