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

Fri, 04 Oct 2013 16:21:34 +0100

author
mkos
date
Fri, 04 Oct 2013 16:21:34 +0100
changeset 408
b0610cd08440
parent 384
8f2986ff0235
child 637
9c07ef4934dd
permissions
-rw-r--r--

8025054: Update JAX-WS RI integration to 2.2.9-b130926.1035
Reviewed-by: chegar

alanb@368 1 /*
katleman@374 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
katleman@374 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
alanb@368 4 *
katleman@374 5 * This code is free software; you can redistribute it and/or modify it
katleman@374 6 * under the terms of the GNU General Public License version 2 only, as
katleman@374 7 * published by the Free Software Foundation. Oracle designates this
katleman@374 8 * particular file as subject to the "Classpath" exception as provided
katleman@374 9 * by Oracle in the LICENSE file that accompanied this code.
alanb@368 10 *
katleman@374 11 * This code is distributed in the hope that it will be useful, but WITHOUT
katleman@374 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
katleman@374 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
katleman@374 14 * version 2 for more details (a copy is included in the LICENSE file that
katleman@374 15 * accompanied this code).
alanb@368 16 *
katleman@374 17 * You should have received a copy of the GNU General Public License version
katleman@374 18 * 2 along with this work; if not, write to the Free Software Foundation,
katleman@374 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
alanb@368 20 *
katleman@374 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
katleman@374 22 * or visit www.oracle.com if you need additional information or have any
katleman@374 23 * questions.
alanb@368 24 */
alanb@368 25
alanb@368 26 package com.oracle.webservices.internal.api.databinding;
alanb@368 27
alanb@368 28 import com.sun.xml.internal.ws.api.databinding.MetadataReader;
alanb@368 29 import com.sun.xml.internal.ws.model.ExternalMetadataReader;
alanb@368 30
alanb@368 31 import javax.xml.ws.WebServiceFeature;
alanb@368 32 import java.io.File;
alanb@368 33 import java.util.ArrayList;
alanb@368 34 import java.util.Collections;
alanb@368 35 import java.util.List;
alanb@368 36
alanb@368 37 /**
alanb@368 38 * WebServiceFeature allowing to define either on server or client side external xml descriptors replacing/supplementing
alanb@368 39 * WS metadata provided by class annotations. This can be useful if those annotations are missing (existing non-WS
alanb@368 40 * components) or if it is necessary to override those.
alanb@368 41 *
alanb@368 42 * @author Miroslav Kos (miroslav.kos at oracle.com)
alanb@368 43 */
alanb@368 44 public class ExternalMetadataFeature extends WebServiceFeature {
alanb@368 45
alanb@368 46 private static final String ID = "com.oracle.webservices.internal.api.databinding.ExternalMetadataFeature";
alanb@368 47
alanb@368 48 /**
alanb@368 49 * Enable this feature. Defaults to true.
alanb@368 50 */
alanb@368 51 private boolean enabled = true;
alanb@368 52
alanb@368 53 private List<String> resourceNames;
alanb@368 54 private List<File> files;
mkos@384 55 private MetadataReader reader;
alanb@368 56
alanb@368 57 private ExternalMetadataFeature() {
alanb@368 58 }
alanb@368 59
alanb@368 60 public void addResources(String... resourceNames) {
alanb@368 61 if (this.resourceNames == null) {
alanb@368 62 this.resourceNames = new ArrayList<String>();
alanb@368 63 }
alanb@368 64 Collections.addAll(this.resourceNames, resourceNames);
alanb@368 65 }
alanb@368 66
alanb@368 67 public List<String> getResourceNames() { return resourceNames; }
alanb@368 68
alanb@368 69 public void addFiles(File... files) {
alanb@368 70 if (this.files == null) {
alanb@368 71 this.files = new ArrayList<File>();
alanb@368 72 }
alanb@368 73 Collections.addAll(this.files, files);
alanb@368 74 }
alanb@368 75
alanb@368 76 public List<File> getFiles() { return files; }
alanb@368 77
alanb@368 78 public boolean isEnabled() {
alanb@368 79 return enabled;
alanb@368 80 }
alanb@368 81
alanb@368 82 private void setEnabled(final boolean x) {
alanb@368 83 enabled = x;
alanb@368 84 }
alanb@368 85
alanb@368 86 @Override
alanb@368 87 public String getID() {
alanb@368 88 return ID;
alanb@368 89 }
alanb@368 90
mkos@408 91 public MetadataReader getMetadataReader(ClassLoader classLoader, boolean disableXmlSecurity) {
mkos@384 92 if (reader != null && enabled) return reader;
mkos@408 93 return enabled ? new ExternalMetadataReader(files, resourceNames, classLoader, true, disableXmlSecurity) : null;
alanb@368 94 }
alanb@368 95
alanb@368 96 @Override
alanb@368 97 public boolean equals(Object o) {
alanb@368 98 if (this == o) return true;
alanb@368 99 if (o == null || getClass() != o.getClass()) return false;
alanb@368 100
alanb@368 101 ExternalMetadataFeature that = (ExternalMetadataFeature) o;
alanb@368 102
alanb@368 103 if (enabled != that.enabled) return false;
alanb@368 104 if (files != null ? !files.equals(that.files) : that.files != null) return false;
alanb@368 105 if (resourceNames != null ? !resourceNames.equals(that.resourceNames) : that.resourceNames != null)
alanb@368 106 return false;
alanb@368 107
alanb@368 108 return true;
alanb@368 109 }
alanb@368 110
alanb@368 111 @Override
alanb@368 112 public int hashCode() {
alanb@368 113 int result = (enabled ? 1 : 0);
alanb@368 114 result = 31 * result + (resourceNames != null ? resourceNames.hashCode() : 0);
alanb@368 115 result = 31 * result + (files != null ? files.hashCode() : 0);
alanb@368 116 return result;
alanb@368 117 }
alanb@368 118
alanb@368 119 @Override
alanb@368 120 public String toString() {
alanb@368 121 return "[" + getID() +
alanb@368 122 ", enabled=" + enabled +
alanb@368 123 ", resourceNames=" + resourceNames +
alanb@368 124 ", files=" + files +
alanb@368 125 ']';
alanb@368 126 }
alanb@368 127
alanb@368 128 public static Builder builder() {
alanb@368 129 return new Builder(new ExternalMetadataFeature());
alanb@368 130 }
alanb@368 131
alanb@368 132 public final static class Builder {
alanb@368 133 final private ExternalMetadataFeature o;
alanb@368 134
alanb@368 135 Builder(final ExternalMetadataFeature x) {
alanb@368 136 o = x;
alanb@368 137 }
alanb@368 138
alanb@368 139 public ExternalMetadataFeature build() {
alanb@368 140 return o;
alanb@368 141 }
alanb@368 142
alanb@368 143 public Builder addResources(String... res) {
alanb@368 144 o.addResources(res);
alanb@368 145 return this;
alanb@368 146 }
alanb@368 147
alanb@368 148 public Builder addFiles(File... files) {
alanb@368 149 o.addFiles(files);
alanb@368 150 return this;
alanb@368 151 }
alanb@368 152
alanb@368 153 public Builder setEnabled(boolean enabled) {
alanb@368 154 o.setEnabled(enabled);
alanb@368 155 return this;
alanb@368 156 }
alanb@368 157
mkos@384 158 public Builder setReader( MetadataReader r ) {
mkos@384 159 o.reader = r;
mkos@384 160 return this;
mkos@384 161 }
alanb@368 162 }
alanb@368 163 }

mercurial