Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * http://glassfish.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.tools.ws.wsdl.parser;
 
 import org.xml.sax.*;
 
 import java.util.Set;

Checks the jaxb:version attribute on a XML Schema document. jaxws:version is optional, if absent its value is assumed to be "2.0" and if present its value must be "2.0" or more.

Author(s):
Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) Vivek Pandey
 
 public class VersionChecker extends XMLFilterImpl {

    
We store the value of the version attribute in this variable when we hit the root element.
 
     private String version = null ;

    
Will be set to true once we hit the root element.
 
     private boolean seenRoot = false;

    
Will be set to true once we hit a binding declaration.
 
     private boolean seenBindings = false;
 
     private Locator locator;

    
Stores the location of the start tag of the root tag.
 
     private Locator rootTagStart;
 
     public VersionCheckerXMLReader parent ) {
         setParent(parent);
     }
 
     public VersionCheckerContentHandler handlerErrorHandler ehEntityResolver er ) {
         setContentHandler(handler);
         if(eh!=null)    setErrorHandler(eh);
         if(er!=null)    setEntityResolver(er);
     }
 
     public void startElement(String namespaceURIString localNameString qNameAttributes atts)
         throws SAXException {
 
         super.startElement(namespaceURIlocalNameqNameatts);
 
         if(!) {
            // if this is the root element
             = true;
             = new LocatorImpl();
             = atts.getValue(.,"version");
            ifnamespaceURI.equals(.) ) {
                String version2 = atts.getValue("","version");
                if!=null && version2!=null ) {
                    // we have both @version and @jaxb:version. error.
                    SAXParseException e = new SAXParseException(
                        WsdlMessages.INTERNALIZER_TWO_VERSION_ATTRIBUTES(), );
                    getErrorHandler().error(e);
                }
                //According to JAXWS 2.0 spec, if version attribute is missing its assumed to be "2.0"
                if==null)
                     = (version2!=null)?version2:"2.0";
            }
        }
        if..equals(namespaceURI)){
             = true;
            if( == null)
                 = "2.0";            
        }
    }
    public void endDocument() throws SAXException {
        super.endDocument();
        if && ==null ) {
            // if we see a binding declaration but not version attribute
            SAXParseException e = new SAXParseException(WsdlMessages.INTERNALIZER_VERSION_NOT_PRESENT(), );
            getErrorHandler().error(e);
        }
        // if present, the value must be >= 2.0
        if!=null && !.contains() ) {
            SAXParseException e = new SAXParseException(WsdlMessages.INTERNALIZER_INCORRECT_VERSION(), );
            getErrorHandler().error(e);
        }
    }
    public void setDocumentLocator(Locator locator) {
        super.setDocumentLocator(locator);
        this. = locator;
    }
    private static final Set<StringVERSIONS = new HashSet<String>(Arrays.asList("2.0","2.1"));
New to GrepCode? Check out our FAQ X