<?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/constraint.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/validation.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-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>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>
