<?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/websvc/editor/completion/resources/fileProtocol.gif</file>
        <file>src/org/netbeans/modules/websvc/editor/completion/resources/fileProtocol32.gif</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/error-badge.gif</file>
        <file>src/org/netbeans/modules/websvc/core/wseditor/support/Context.gif</file>
        <file>src/org/netbeans/modules/websvc/core/client/resources/webServiceBadge.gif</file>
        <file>src/org/netbeans/modules/websvc/editor/completion/resources/field_static_16.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/XMLServiceDataIcon.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/clientgroup.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/folder.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/folderOpen.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/waiting.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/webservice.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/webservicegroup.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/wsoperation.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/wsport.png</file>
        <file>src/org/netbeans/modules/websvc/core/webservices/ui/resources/wsportOpen.png</file>
        <file>src/org/netbeans/modules/websvc/core/resources/WSSchemaCatalog.png</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/XMLServiceDataIcon.png</file>
        <file>src/org/netbeans/modules/websvc/core/client/resources/ws_client_16.png</file>
        <license ref="Apache-2.0-ASF" />
        <comment type="COMMENT_UNSUPPORTED" />
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/EjbWebService.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/EjbWebServiceNoOp.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/EjbWebServiceProvider.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/LogicalHandler.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/MessageHandler.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/WebService.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/WebServiceFromWSDL.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/WebServiceNoOp.template</file>
        <file>src/org/netbeans/modules/websvc/core/dev/resources/WebServiceProvider.template</file>
        <license ref="Apache-2.0-ASF" />
        <comment type="TEMPLATE_MINIMAL_IP"/>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/websvc/core/resources/sun-jaxws.xsd</file>
        <license ref="CDDL-1.0" />
        <comment type="CATEGORY_B"/>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/websvc/core/resources/javaee_web_services_metadata_handler_2_0.xsd</file>
        <file>src/org/netbeans/modules/websvc/core/resources/wsdl_customizationschema_2_0.xsd</file>
        <license ref="CDDL-1.1" />
        <comment type="CATEGORY_B"/>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/websvc/core/resources/jakartaee_web_services_metadata_handler_3_0.xsd</file>
        <file>src/org/netbeans/modules/websvc/core/resources/wsdl_customizationschema_3_0.xsd</file>
        <license ref="EDL-1.0" >
            Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
        </license>
        <comment type="CATEGORY_B"/>
    </fileset>
</licenseinfo>

