com.oracle.webservices.api.databinding.ExternalMetadataFeature Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rt Show documentation
Show all versions of rt Show documentation
JAX-WS Reference Implementation Runtime
The newest version!
/*
* Copyright (c) 1997, 2022 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package com.oracle.webservices.api.databinding;
import com.sun.xml.ws.api.databinding.MetadataReader;
import com.sun.xml.ws.model.ExternalMetadataReader;
import jakarta.xml.ws.WebServiceFeature;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* WebServiceFeature allowing to define either on server or client side external xml descriptors replacing/supplementing
* WS metadata provided by class annotations. This can be useful if those annotations are missing (existing non-WS
* components) or if it is necessary to override those.
*
* @author Miroslav Kos (miroslav.kos at oracle.com)
*/
public class ExternalMetadataFeature extends WebServiceFeature {
private static final String ID = "com.oracle.webservices.api.databinding.ExternalMetadataFeature";
/**
* Enable this feature. Defaults to true.
*/
private boolean enabled = true;
private List resourceNames;
private List files;
private MetadataReader reader;
private ExternalMetadataFeature() {
}
public void addResources(String... resourceNames) {
if (this.resourceNames == null) {
this.resourceNames = new ArrayList<>();
}
Collections.addAll(this.resourceNames, resourceNames);
}
public List getResourceNames() { return resourceNames; }
public void addFiles(File... files) {
if (this.files == null) {
this.files = new ArrayList<>();
}
Collections.addAll(this.files, files);
}
public List getFiles() { return files; }
@Override
public boolean isEnabled() {
return enabled;
}
private void setEnabled(final boolean x) {
enabled = x;
}
@Override
public String getID() {
return ID;
}
public MetadataReader getMetadataReader(ClassLoader classLoader, boolean disableXmlSecurity) {
if (reader != null && enabled) return reader;
return enabled ? new ExternalMetadataReader(files, resourceNames, classLoader, true, disableXmlSecurity) : null;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ExternalMetadataFeature that = (ExternalMetadataFeature) o;
if (enabled != that.enabled) return false;
if (files != null ? !files.equals(that.files) : that.files != null) return false;
return resourceNames != null ? resourceNames.equals(that.resourceNames) : that.resourceNames == null;
}
@Override
public int hashCode() {
int result = (enabled ? 1 : 0);
result = 31 * result + (resourceNames != null ? resourceNames.hashCode() : 0);
result = 31 * result + (files != null ? files.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "[" + getID() +
", enabled=" + enabled +
", resourceNames=" + resourceNames +
", files=" + files +
']';
}
public static Builder builder() {
return new Builder(new ExternalMetadataFeature());
}
public final static class Builder {
final private ExternalMetadataFeature o;
Builder(final ExternalMetadataFeature x) {
o = x;
}
public ExternalMetadataFeature build() {
return o;
}
public Builder addResources(String... res) {
o.addResources(res);
return this;
}
public Builder addFiles(File... files) {
o.addFiles(files);
return this;
}
public Builder setEnabled(boolean enabled) {
o.setEnabled(enabled);
return this;
}
public Builder setReader( MetadataReader r ) {
o.reader = r;
return this;
}
}
}