Tue, 09 Apr 2013 14:51:13 +0100
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 }