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
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 | } |