1 /* 2 * Copyright (c) 1997, 2015, 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 26 package com.sun.tools.internal.xjc.reader.dtd.bindinfo; 27 28 import java.util.StringTokenizer; 29 30 import org.w3c.dom.Element; 31 import org.xml.sax.Locator; 32 33 /** 34 * {@code <interface>} declaration in the binding file. 35 */ 36 public final class BIInterface 37 { 38 BIInterface( Element e ) { 39 this.dom = e; 40 name = DOMUtil.getAttribute(e,"name"); 41 members = parseTokens(DOMUtil.getAttribute(e,"members")); 42 43 if(DOMUtil.getAttribute(e,"properties")!=null) { 44 fields = parseTokens(DOMUtil.getAttribute(e,"properties")); 45 throw new AssertionError("//interface/@properties is not supported"); 46 } else // no property was specified 47 fields = new String[0]; 48 } 49 50 /** {@code <interface>} element in the binding file. */ 51 private final Element dom; 52 53 /** Name of the generated Java interface. */ 54 private final String name; 55 56 /** 57 * Gets the name of this interface. 58 * This name should also used as the class name. 59 */ 60 public String name() { return name; } 61 62 63 private final String[] members; 64 65 /** 66 * Gets the names of interfaces/classes that implement 67 * this interface. 68 */ 69 public String[] members() { return members; } 70 71 72 private final String[] fields; 73 74 /** Gets the names of fields in this interface. */ 75 public String[] fields() { return fields; } 76 77 78 /** Gets the location where this declaration is declared. */ 79 public Locator getSourceLocation() { 80 return DOMLocator.getLocationInfo(dom); 81 } 82 83 84 85 /** splits a list into an array of strings. */ 86 private static String[] parseTokens( String value ) { 87 StringTokenizer tokens = new StringTokenizer(value); 88 89 String[] r = new String[tokens.countTokens()]; 90 int i=0; 91 while(tokens.hasMoreTokens()) 92 r[i++] = tokens.nextToken(); 93 94 return r; 95 } 96 }