1/* 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26package com.sun.xml.internal.ws.encoding.policy; 27 28import com.sun.xml.internal.ws.api.fastinfoset.FastInfosetFeature; 29import com.sun.xml.internal.ws.policy.AssertionSet; 30import com.sun.xml.internal.ws.policy.Policy; 31import com.sun.xml.internal.ws.policy.PolicyAssertion; 32import com.sun.xml.internal.ws.policy.PolicyException; 33import com.sun.xml.internal.ws.policy.PolicyMap; 34import com.sun.xml.internal.ws.policy.PolicyMapKey; 35import com.sun.xml.internal.ws.policy.jaxws.spi.PolicyFeatureConfigurator; 36 37import java.util.Collection; 38import java.util.Iterator; 39import java.util.LinkedList; 40import javax.xml.namespace.QName; 41 42import static com.sun.xml.internal.ws.encoding.policy.EncodingConstants.OPTIMIZED_FI_SERIALIZATION_ASSERTION; 43import javax.xml.ws.WebServiceFeature; 44 45/** 46 * A configurator provider for FastInfoset policy assertions. 47 * 48 * @author Paul.Sandoz@Sun.Com 49 * @author Fabian Ritzmann 50 */ 51public class FastInfosetFeatureConfigurator implements PolicyFeatureConfigurator { 52 53 public static final QName enabled = new QName("enabled"); 54 55 /** 56 * Process FastInfoset policy assertions. 57 * 58 * @param key Key to identify the endpoint scope. 59 * @param policyMap the policy map. 60 * @throws PolicyException If retrieving the policy triggered an exception. 61 */ 62 public Collection<WebServiceFeature> getFeatures(final PolicyMapKey key, final PolicyMap policyMap) throws PolicyException { 63 final Collection<WebServiceFeature> features = new LinkedList<WebServiceFeature>(); 64 if ((key != null) && (policyMap != null)) { 65 Policy policy = policyMap.getEndpointEffectivePolicy(key); 66 if (null!=policy && policy.contains(OPTIMIZED_FI_SERIALIZATION_ASSERTION)) { 67 Iterator <AssertionSet> assertions = policy.iterator(); 68 while(assertions.hasNext()){ 69 AssertionSet assertionSet = assertions.next(); 70 Iterator<PolicyAssertion> policyAssertion = assertionSet.iterator(); 71 while(policyAssertion.hasNext()){ 72 PolicyAssertion assertion = policyAssertion.next(); 73 if(OPTIMIZED_FI_SERIALIZATION_ASSERTION.equals(assertion.getName())){ 74 String value = assertion.getAttributeValue(enabled); 75 boolean isFastInfosetEnabled = Boolean.valueOf(value.trim()); 76 features.add(new FastInfosetFeature(isFastInfosetEnabled)); 77 } // end-if non optional fast infoset assertion found 78 } // next assertion 79 } // next alternative 80 } // end-if policy contains fast infoset assertion 81 } 82 return features; 83 } 84 85} 86