feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
/**
|
||||
* File holding all encoding constants
|
||||
*
|
||||
* @author Marek Potociar (marek.potociar at sun.com)
|
||||
*/
|
||||
public final class EncodingConstants {
|
||||
/** Prevents creation of new EncodingConstants instance */
|
||||
private EncodingConstants() {
|
||||
}
|
||||
|
||||
public static final String SUN_FI_SERVICE_NS = "http://java.sun.com/xml/ns/wsit/2006/09/policy/fastinfoset/service";
|
||||
public static final QName OPTIMIZED_FI_SERIALIZATION_ASSERTION = new QName(SUN_FI_SERVICE_NS, "OptimizedFastInfosetSerialization");
|
||||
|
||||
public static final String SUN_ENCODING_CLIENT_NS = "http://java.sun.com/xml/ns/wsit/2006/09/policy/encoding/client";
|
||||
public static final QName SELECT_OPTIMAL_ENCODING_ASSERTION = new QName(SUN_ENCODING_CLIENT_NS, "AutomaticallySelectOptimalEncoding");
|
||||
|
||||
public static final String OPTIMIZED_MIME_NS = "http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization";
|
||||
public static final QName OPTIMIZED_MIME_SERIALIZATION_ASSERTION = new QName(OPTIMIZED_MIME_NS, "OptimizedMimeSerialization");
|
||||
|
||||
public static final String ENCODING_NS = "http://schemas.xmlsoap.org/ws/2004/09/policy/encoding";
|
||||
public static final QName UTF816FFFE_CHARACTER_ENCODING_ASSERTION = new QName(ENCODING_NS, "Utf816FFFECharacterEncoding");
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import com.sun.xml.internal.ws.policy. PolicyAssertion;
|
||||
import com.sun.xml.internal.ws.policy.spi.PolicyAssertionValidator;
|
||||
import com.sun.xml.internal.ws.policy.spi.PolicyAssertionValidator.Fitness;
|
||||
import java.util.ArrayList;
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import static com.sun.xml.internal.ws.encoding.policy.EncodingConstants.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jakub Podlesak (jakub.podlesak at sun.com)
|
||||
*/
|
||||
public class EncodingPolicyValidator implements PolicyAssertionValidator {
|
||||
|
||||
private static final ArrayList<QName> serverSideSupportedAssertions = new ArrayList<QName>(3);
|
||||
private static final ArrayList<QName> clientSideSupportedAssertions = new ArrayList<QName>(4);
|
||||
|
||||
static {
|
||||
serverSideSupportedAssertions.add(OPTIMIZED_MIME_SERIALIZATION_ASSERTION);
|
||||
serverSideSupportedAssertions.add(UTF816FFFE_CHARACTER_ENCODING_ASSERTION);
|
||||
serverSideSupportedAssertions.add(OPTIMIZED_FI_SERIALIZATION_ASSERTION);
|
||||
|
||||
clientSideSupportedAssertions.add(SELECT_OPTIMAL_ENCODING_ASSERTION);
|
||||
clientSideSupportedAssertions.addAll(serverSideSupportedAssertions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new instance of EncodingPolicyValidator
|
||||
*/
|
||||
public EncodingPolicyValidator() {
|
||||
}
|
||||
|
||||
public Fitness validateClientSide(PolicyAssertion assertion) {
|
||||
return clientSideSupportedAssertions.contains(assertion.getName()) ? Fitness.SUPPORTED : Fitness.UNKNOWN;
|
||||
}
|
||||
|
||||
public Fitness validateServerSide(PolicyAssertion assertion) {
|
||||
QName assertionName = assertion.getName();
|
||||
if (serverSideSupportedAssertions.contains(assertionName)) {
|
||||
return Fitness.SUPPORTED;
|
||||
} else if (clientSideSupportedAssertions.contains(assertionName)) {
|
||||
return Fitness.UNSUPPORTED;
|
||||
} else {
|
||||
return Fitness.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
public String[] declareSupportedDomains() {
|
||||
return new String[] {OPTIMIZED_MIME_NS, ENCODING_NS, SUN_ENCODING_CLIENT_NS, SUN_FI_SERVICE_NS};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import com.sun.xml.internal.ws.policy.spi.PrefixMapper;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Fabian Ritzmann
|
||||
*/
|
||||
public class EncodingPrefixMapper implements PrefixMapper {
|
||||
|
||||
private static final Map<String, String> prefixMap = new HashMap<String, String>();
|
||||
|
||||
static {
|
||||
prefixMap.put(EncodingConstants.ENCODING_NS, "wspe");
|
||||
prefixMap.put(EncodingConstants.OPTIMIZED_MIME_NS, "wsoma");
|
||||
prefixMap.put(EncodingConstants.SUN_ENCODING_CLIENT_NS, "cenc");
|
||||
prefixMap.put(EncodingConstants.SUN_FI_SERVICE_NS, "fi");
|
||||
}
|
||||
|
||||
public Map<String, String> getPrefixMap() {
|
||||
return prefixMap;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import com.sun.xml.internal.ws.api.fastinfoset.FastInfosetFeature;
|
||||
import com.sun.xml.internal.ws.policy.AssertionSet;
|
||||
import com.sun.xml.internal.ws.policy.Policy;
|
||||
import com.sun.xml.internal.ws.policy.PolicyAssertion;
|
||||
import com.sun.xml.internal.ws.policy.PolicyException;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMap;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMapKey;
|
||||
import com.sun.xml.internal.ws.policy.jaxws.spi.PolicyFeatureConfigurator;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import static com.sun.xml.internal.ws.encoding.policy.EncodingConstants.OPTIMIZED_FI_SERIALIZATION_ASSERTION;
|
||||
import javax.xml.ws.WebServiceFeature;
|
||||
|
||||
/**
|
||||
* A configurator provider for FastInfoset policy assertions.
|
||||
*
|
||||
* @author Paul.Sandoz@Sun.Com
|
||||
* @author Fabian Ritzmann
|
||||
*/
|
||||
public class FastInfosetFeatureConfigurator implements PolicyFeatureConfigurator {
|
||||
|
||||
public static final QName enabled = new QName("enabled");
|
||||
|
||||
/**
|
||||
* Process FastInfoset policy assertions.
|
||||
*
|
||||
* @param key Key to identify the endpoint scope.
|
||||
* @param policyMap the policy map.
|
||||
* @throws PolicyException If retrieving the policy triggered an exception.
|
||||
*/
|
||||
public Collection<WebServiceFeature> getFeatures(final PolicyMapKey key, final PolicyMap policyMap) throws PolicyException {
|
||||
final Collection<WebServiceFeature> features = new LinkedList<WebServiceFeature>();
|
||||
if ((key != null) && (policyMap != null)) {
|
||||
Policy policy = policyMap.getEndpointEffectivePolicy(key);
|
||||
if (null!=policy && policy.contains(OPTIMIZED_FI_SERIALIZATION_ASSERTION)) {
|
||||
Iterator <AssertionSet> assertions = policy.iterator();
|
||||
while(assertions.hasNext()){
|
||||
AssertionSet assertionSet = assertions.next();
|
||||
Iterator<PolicyAssertion> policyAssertion = assertionSet.iterator();
|
||||
while(policyAssertion.hasNext()){
|
||||
PolicyAssertion assertion = policyAssertion.next();
|
||||
if(OPTIMIZED_FI_SERIALIZATION_ASSERTION.equals(assertion.getName())){
|
||||
String value = assertion.getAttributeValue(enabled);
|
||||
boolean isFastInfosetEnabled = Boolean.valueOf(value.trim());
|
||||
features.add(new FastInfosetFeature(isFastInfosetEnabled));
|
||||
} // end-if non optional fast infoset assertion found
|
||||
} // next assertion
|
||||
} // next alternative
|
||||
} // end-if policy contains fast infoset assertion
|
||||
}
|
||||
return features;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import com.sun.xml.internal.ws.api.model.wsdl.WSDLBoundPortType;
|
||||
import com.sun.xml.internal.ws.policy.AssertionSet;
|
||||
import com.sun.xml.internal.ws.policy.Policy;
|
||||
import com.sun.xml.internal.ws.policy.PolicyAssertion;
|
||||
import com.sun.xml.internal.ws.policy.PolicyException;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMap;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMapKey;
|
||||
import com.sun.xml.internal.ws.policy.jaxws.spi.PolicyFeatureConfigurator;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import javax.xml.ws.WebServiceFeature;
|
||||
import javax.xml.ws.soap.MTOMFeature;
|
||||
|
||||
import static com.sun.xml.internal.ws.encoding.policy.EncodingConstants.OPTIMIZED_MIME_SERIALIZATION_ASSERTION;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author japod
|
||||
* @author Fabian Ritzmann
|
||||
*/
|
||||
public class MtomFeatureConfigurator implements PolicyFeatureConfigurator {
|
||||
/**
|
||||
* Creates a new instance of MtomFeatureConfigurator
|
||||
*/
|
||||
public MtomFeatureConfigurator() {
|
||||
}
|
||||
|
||||
/**
|
||||
* process Mtom policy assertions and if found and is not optional then mtom is enabled on the
|
||||
* {@link WSDLBoundPortType}
|
||||
*
|
||||
* @param key Key that identifies the endpoint scope
|
||||
* @param policyMap Must be non-null
|
||||
* @throws PolicyException If retrieving the policy triggered an exception
|
||||
*/
|
||||
public Collection<WebServiceFeature> getFeatures(PolicyMapKey key, PolicyMap policyMap) throws PolicyException {
|
||||
final Collection<WebServiceFeature> features = new LinkedList<WebServiceFeature>();
|
||||
if ((key != null) && (policyMap != null)) {
|
||||
Policy policy = policyMap.getEndpointEffectivePolicy(key);
|
||||
if (null!=policy && policy.contains(OPTIMIZED_MIME_SERIALIZATION_ASSERTION)) {
|
||||
Iterator <AssertionSet> assertions = policy.iterator();
|
||||
while(assertions.hasNext()){
|
||||
AssertionSet assertionSet = assertions.next();
|
||||
Iterator<PolicyAssertion> policyAssertion = assertionSet.iterator();
|
||||
while(policyAssertion.hasNext()){
|
||||
PolicyAssertion assertion = policyAssertion.next();
|
||||
if(OPTIMIZED_MIME_SERIALIZATION_ASSERTION.equals(assertion.getName())){
|
||||
features.add(new MTOMFeature(true));
|
||||
} // end-if non optional mtom assertion found
|
||||
} // next assertion
|
||||
} // next alternative
|
||||
} // end-if policy contains mtom assertion
|
||||
}
|
||||
return features;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import static com.sun.xml.internal.ws.encoding.policy.EncodingConstants.OPTIMIZED_MIME_SERIALIZATION_ASSERTION;
|
||||
import com.sun.xml.internal.ws.api.WSBinding;
|
||||
import com.sun.xml.internal.ws.api.model.SEIModel;
|
||||
import com.sun.xml.internal.ws.policy.AssertionSet;
|
||||
import com.sun.xml.internal.ws.policy.Policy;
|
||||
import com.sun.xml.internal.ws.policy.PolicyAssertion;
|
||||
import com.sun.xml.internal.ws.policy.PolicyException;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMap;
|
||||
import com.sun.xml.internal.ws.policy.PolicySubject;
|
||||
import com.sun.xml.internal.ws.policy.jaxws.spi.PolicyMapConfigurator;
|
||||
import com.sun.xml.internal.ws.policy.privateutil.PolicyLogger;
|
||||
import com.sun.xml.internal.ws.policy.sourcemodel.AssertionData;
|
||||
import com.sun.xml.internal.ws.policy.subject.WsdlBindingSubject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.ws.soap.MTOMFeature;
|
||||
|
||||
/**
|
||||
* Generate an MTOM policy if MTOM was enabled.
|
||||
*
|
||||
* @author Jakub Podlesak (japod at sun.com)
|
||||
* @author Fabian Ritzmann
|
||||
*/
|
||||
public class MtomPolicyMapConfigurator implements PolicyMapConfigurator {
|
||||
|
||||
private static final PolicyLogger LOGGER = PolicyLogger.getLogger(MtomPolicyMapConfigurator.class);
|
||||
|
||||
static class MtomAssertion extends PolicyAssertion {
|
||||
|
||||
private static final AssertionData mtomData;
|
||||
static {
|
||||
mtomData= AssertionData.createAssertionData(OPTIMIZED_MIME_SERIALIZATION_ASSERTION);
|
||||
//JAX-WS MTOMFeature does n't currently capture if MTOM is required/optional.
|
||||
//JAX-WS accepts both normal messages and XOP encoded messages. Using wsp:Optional=true represents that behavior.
|
||||
//Moreover, this allows interoperability with non-MTOM aware clients.
|
||||
//See https://wsit.dev.java.net/issues/show_bug.cgi?id=1062
|
||||
mtomData.setOptionalAttribute(true);
|
||||
}
|
||||
|
||||
MtomAssertion() {
|
||||
super(mtomData, null, null);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an MTOM policy if MTOM is enabled.
|
||||
*
|
||||
* <ol>
|
||||
* <li>If MTOM is enabled
|
||||
* <ol>
|
||||
* <li>If MTOM policy does not already exist, generate
|
||||
* <li>Otherwise do nothing
|
||||
* </ol>
|
||||
* <li>Otherwise, do nothing (that implies that we do not remove any MTOM policies if MTOM is disabled)
|
||||
* </ol>
|
||||
*
|
||||
*/
|
||||
public Collection<PolicySubject> update(PolicyMap policyMap, SEIModel model, WSBinding wsBinding) throws PolicyException {
|
||||
LOGGER.entering(policyMap, model, wsBinding);
|
||||
|
||||
Collection<PolicySubject> subjects = new ArrayList<PolicySubject>();
|
||||
if (policyMap != null) {
|
||||
final MTOMFeature mtomFeature = wsBinding.getFeature(MTOMFeature.class);
|
||||
if (LOGGER.isLoggable(Level.FINEST)) {
|
||||
LOGGER.finest("mtomFeature = " + mtomFeature);
|
||||
}
|
||||
if ((mtomFeature != null) && mtomFeature.isEnabled()) {
|
||||
final QName bindingName = model.getBoundPortTypeName();
|
||||
final WsdlBindingSubject wsdlSubject = WsdlBindingSubject.createBindingSubject(bindingName);
|
||||
final Policy mtomPolicy = createMtomPolicy(bindingName);
|
||||
final PolicySubject mtomPolicySubject = new PolicySubject(wsdlSubject, mtomPolicy);
|
||||
subjects.add(mtomPolicySubject);
|
||||
if (LOGGER.isLoggable(Level.FINEST)) {
|
||||
LOGGER.fine("Added MTOM policy with ID \"" + mtomPolicy.getIdOrName() + "\" to binding element \"" + bindingName + "\"");
|
||||
}
|
||||
}
|
||||
} // endif policy map not null
|
||||
|
||||
LOGGER.exiting(subjects);
|
||||
return subjects;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a policy with an MTOM assertion.
|
||||
*
|
||||
* @param model The binding element name. Used to generate a (locally) unique ID for the policy.
|
||||
* @return The policy.
|
||||
*/
|
||||
private Policy createMtomPolicy(final QName bindingName) {
|
||||
ArrayList<AssertionSet> assertionSets = new ArrayList<AssertionSet>(1);
|
||||
ArrayList<PolicyAssertion> assertions = new ArrayList<PolicyAssertion>(1);
|
||||
assertions.add(new MtomAssertion());
|
||||
assertionSets.add(AssertionSet.createAssertionSet(assertions));
|
||||
return Policy.createPolicy(null, bindingName.getLocalPart() + "_MTOM_Policy", assertionSets);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.ws.encoding.policy;
|
||||
|
||||
import com.sun.xml.internal.ws.api.client.SelectOptimalEncodingFeature;
|
||||
import com.sun.xml.internal.ws.policy.AssertionSet;
|
||||
import com.sun.xml.internal.ws.policy.Policy;
|
||||
import com.sun.xml.internal.ws.policy.PolicyAssertion;
|
||||
import com.sun.xml.internal.ws.policy.PolicyException;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMap;
|
||||
import com.sun.xml.internal.ws.policy.PolicyMapKey;
|
||||
import com.sun.xml.internal.ws.policy.jaxws.spi.PolicyFeatureConfigurator;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import static com.sun.xml.internal.ws.encoding.policy.EncodingConstants.SELECT_OPTIMAL_ENCODING_ASSERTION;
|
||||
import javax.xml.ws.WebServiceFeature;
|
||||
|
||||
/**
|
||||
* A configurator provider for FastInfoset policy assertions.
|
||||
*
|
||||
* @author Paul.Sandoz@Sun.Com
|
||||
* @author Fabian Ritzmann
|
||||
*/
|
||||
public class SelectOptimalEncodingFeatureConfigurator implements PolicyFeatureConfigurator {
|
||||
public static final QName enabled = new QName("enabled");
|
||||
|
||||
/**
|
||||
* Process SelectOptimalEncoding policy assertions.
|
||||
*
|
||||
* @param key Key that identifies the endpoint scope.
|
||||
* @param policyMap The policy map.
|
||||
* @throws PolicyException If retrieving the policy triggered an exception.
|
||||
*/
|
||||
public Collection<WebServiceFeature> getFeatures(PolicyMapKey key, PolicyMap policyMap) throws PolicyException {
|
||||
final Collection<WebServiceFeature> features = new LinkedList<WebServiceFeature>();
|
||||
if ((key != null) && (policyMap != null)) {
|
||||
Policy policy = policyMap.getEndpointEffectivePolicy(key);
|
||||
if (null!=policy && policy.contains(SELECT_OPTIMAL_ENCODING_ASSERTION)) {
|
||||
Iterator <AssertionSet> assertions = policy.iterator();
|
||||
while(assertions.hasNext()){
|
||||
AssertionSet assertionSet = assertions.next();
|
||||
Iterator<PolicyAssertion> policyAssertion = assertionSet.iterator();
|
||||
while(policyAssertion.hasNext()){
|
||||
PolicyAssertion assertion = policyAssertion.next();
|
||||
if(SELECT_OPTIMAL_ENCODING_ASSERTION.equals(assertion.getName())){
|
||||
String value = assertion.getAttributeValue(enabled);
|
||||
boolean isSelectOptimalEncodingEnabled = value == null || Boolean.valueOf(value.trim());
|
||||
features.add(new SelectOptimalEncodingFeature(isSelectOptimalEncodingEnabled));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return features;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user