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

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

mercurial