src/share/jaxws_classes/com/sun/xml/internal/stream/buffer/stax/StreamBufferCreator.java

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 397
b99d7e355d4b
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 2005, 2012, 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  */
    26 package com.sun.xml.internal.stream.buffer.stax;
    28 import com.sun.xml.internal.stream.buffer.AbstractCreator;
    29 import java.util.ArrayList;
    30 import java.util.List;
    32 /**
    33  * {@link AbstractCreator} with additional convenience code.
    34  *
    35  * @author Paul Sandoz
    36  * @author Venu
    37  * @author Kohsuke Kawaguchi
    38  */
    39 abstract class StreamBufferCreator extends AbstractCreator {
    41     private boolean checkAttributeValue = false;
    43     protected List<String> attributeValuePrefixes = new ArrayList<String>();
    45     protected void storeQualifiedName(int item, String prefix, String uri, String localName) {
    46         if (uri != null && uri.length() > 0) {
    47             if (prefix != null && prefix.length() > 0) {
    48                 item |= FLAG_PREFIX;
    49                 storeStructureString(prefix);
    50             }
    52             item |= FLAG_URI;
    53             storeStructureString(uri);
    54         }
    56         storeStructureString(localName);
    58         storeStructure(item);
    59     }
    61     protected final void storeNamespaceAttribute(String prefix, String uri) {
    62         int item = T_NAMESPACE_ATTRIBUTE;
    64         if (prefix != null && prefix.length() > 0) {
    65             item |= FLAG_PREFIX;
    66             storeStructureString(prefix);
    67         }
    69         if (uri != null && uri.length() > 0) {
    70             item |= FLAG_URI;
    71             storeStructureString(uri);
    72         }
    74         storeStructure(item);
    75     }
    77     protected final void storeAttribute(String prefix, String uri, String localName, String type, String value) {
    78         storeQualifiedName(T_ATTRIBUTE_LN, prefix, uri, localName);
    80         storeStructureString(type);
    81         storeContentString(value);
    82         if(checkAttributeValue && value.indexOf("://") == -1){  // the condition after && avoids looking inside URIs
    83             int firstIndex = value.indexOf(":");
    84             int lastIndex = value.lastIndexOf(":");  // Check last index of : as some SAML namespace have multiple ":"s
    85             if(firstIndex != -1 && lastIndex == firstIndex){
    86                 String valuePrefix = value.substring(0, firstIndex);
    87                 if(!attributeValuePrefixes.contains(valuePrefix)){
    88                     attributeValuePrefixes.add(valuePrefix);
    89                 }
    90             }
    91         }
    92     }
    94     public final List getAttributeValuePrefixes(){
    95         return attributeValuePrefixes;
    96     }
    98     protected final void storeProcessingInstruction(String target, String data) {
    99         storeStructure(T_PROCESSING_INSTRUCTION);
   100         storeStructureString(target);
   101         storeStructureString(data);
   102     }
   104     public final boolean isCheckAttributeValue(){
   105         return checkAttributeValue;
   106     }
   108     public final void setCheckAttributeValue(boolean value){
   109         this.checkAttributeValue = value;
   110     }
   111 }

mercurial