src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/ExternalMetadataFeature.java

Tue, 09 Apr 2013 14:51:13 +0100

author
alanb
date
Tue, 09 Apr 2013 14:51:13 +0100
changeset 368
0989ad8c0860
child 374
72e03566f0a6
permissions
-rw-r--r--

8010393: Update JAX-WS RI to 2.2.9-b12941
Reviewed-by: alanb, erikj
Contributed-by: miroslav.kos@oracle.com, martin.grebac@oracle.com

     1 /*
     2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     3  *
     4  * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
     5  *
     6  * The contents of this file are subject to the terms of either the GNU
     7  * General Public License Version 2 only ("GPL") or the Common Development
     8  * and Distribution License("CDDL") (collectively, the "License").  You
     9  * may not use this file except in compliance with the License.  You can
    10  * obtain a copy of the License at
    11  * http://glassfish.java.net/public/CDDL+GPL_1_1.html
    12  * or packager/legal/LICENSE.txt.  See the License for the specific
    13  * language governing permissions and limitations under the License.
    14  *
    15  * When distributing the software, include this License Header Notice in each
    16  * file and include the License file at packager/legal/LICENSE.txt.
    17  *
    18  * GPL Classpath Exception:
    19  * Oracle designates this particular file as subject to the "Classpath"
    20  * exception as provided by Oracle in the GPL Version 2 section of the License
    21  * file that accompanied this code.
    22  *
    23  * Modifications:
    24  * If applicable, add the following below the License Header, with the fields
    25  * enclosed by brackets [] replaced by your own identifying information:
    26  * "Portions Copyright [year] [name of copyright owner]"
    27  *
    28  * Contributor(s):
    29  * If you wish your version of this file to be governed by only the CDDL or
    30  * only the GPL Version 2, indicate your decision by adding "[Contributor]
    31  * elects to include this software in this distribution under the [CDDL or GPL
    32  * Version 2] license."  If you don't indicate a single choice of license, a
    33  * recipient has the option to distribute your version of this file under
    34  * either the CDDL, the GPL Version 2 or to extend the choice of license to
    35  * its licensees as provided above.  However, if you add GPL Version 2 code
    36  * and therefore, elected the GPL Version 2 license, then the option applies
    37  * only if the new code is made subject to such option by the copyright
    38  * holder.
    39  */
    41 package com.oracle.webservices.internal.api.databinding;
    43 import com.sun.xml.internal.ws.api.databinding.MetadataReader;
    44 import com.sun.xml.internal.ws.model.ExternalMetadataReader;
    46 import javax.xml.ws.WebServiceFeature;
    47 import java.io.File;
    48 import java.util.ArrayList;
    49 import java.util.Collections;
    50 import java.util.List;
    52 /**
    53  * WebServiceFeature allowing to define either on server or client side external xml descriptors replacing/supplementing
    54  * WS metadata provided by class annotations. This can be useful if those annotations are missing (existing non-WS
    55  * components) or if it is necessary to override those.
    56  *
    57  * @author Miroslav Kos (miroslav.kos at oracle.com)
    58  */
    59 public class ExternalMetadataFeature extends WebServiceFeature {
    61     private static final String ID = "com.oracle.webservices.internal.api.databinding.ExternalMetadataFeature";
    63     /**
    64      * Enable this feature.  Defaults to true.
    65      */
    66     private boolean enabled = true;
    68     private List<String> resourceNames;
    69     private List<File> files;
    71     private ExternalMetadataFeature() {
    72     }
    74     public void addResources(String... resourceNames) {
    75         if (this.resourceNames == null) {
    76             this.resourceNames = new ArrayList<String>();
    77         }
    78         Collections.addAll(this.resourceNames, resourceNames);
    79     }
    81     public List<String> getResourceNames() { return resourceNames; }
    83     public void addFiles(File... files) {
    84         if (this.files == null) {
    85             this.files = new ArrayList<File>();
    86         }
    87         Collections.addAll(this.files, files);
    88     }
    90     public List<File> getFiles() { return files; }
    92     public boolean isEnabled() {
    93         return enabled;
    94     }
    96     private void setEnabled(final boolean x) {
    97         enabled = x;
    98     }
   100     @Override
   101     public String getID() {
   102         return ID;
   103     }
   105     public MetadataReader getMetadataReader(ClassLoader classLoader, boolean disableSecureXmlProcessing) {
   106         return enabled ? new ExternalMetadataReader(files, resourceNames, classLoader, true, disableSecureXmlProcessing) : null;
   107     }
   109     @Override
   110     public boolean equals(Object o) {
   111         if (this == o) return true;
   112         if (o == null || getClass() != o.getClass()) return false;
   114         ExternalMetadataFeature that = (ExternalMetadataFeature) o;
   116         if (enabled != that.enabled) return false;
   117         if (files != null ? !files.equals(that.files) : that.files != null) return false;
   118         if (resourceNames != null ? !resourceNames.equals(that.resourceNames) : that.resourceNames != null)
   119             return false;
   121         return true;
   122     }
   124     @Override
   125     public int hashCode() {
   126         int result = (enabled ? 1 : 0);
   127         result = 31 * result + (resourceNames != null ? resourceNames.hashCode() : 0);
   128         result = 31 * result + (files != null ? files.hashCode() : 0);
   129         return result;
   130     }
   132     @Override
   133     public String toString() {
   134         return "[" + getID() +
   135                 ", enabled=" + enabled +
   136                 ", resourceNames=" + resourceNames +
   137                 ", files=" + files +
   138                 ']';
   139     }
   141     public static Builder builder() {
   142         return new Builder(new ExternalMetadataFeature());
   143     }
   145     public final static class Builder {
   146         final private ExternalMetadataFeature o;
   148         Builder(final ExternalMetadataFeature x) {
   149             o = x;
   150         }
   152         public ExternalMetadataFeature build() {
   153             return o;
   154         }
   156         public Builder addResources(String... res) {
   157             o.addResources(res);
   158             return this;
   159         }
   161         public Builder addFiles(File... files) {
   162             o.addFiles(files);
   163             return this;
   164         }
   166         public Builder setEnabled(boolean enabled) {
   167             o.setEnabled(enabled);
   168             return this;
   169         }
   171     }
   172 }

mercurial