1/*2 * Copyright (c) 1997, 2011, 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 it6 * under the terms of the GNU General Public License version 2 only, as7 * published by the Free Software Foundation. Oracle designates this8 * particular file as subject to the "Classpath" exception as provided9 * 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 WITHOUT12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License14 * version 2 for more details (a copy is included in the LICENSE file that15 * accompanied this code).16 *17 * You should have received a copy of the GNU General Public License version18 * 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 USA22 * or visit www.oracle.com if you need additional information or have any23 * questions.24 */2526package com.sun.tools.internal.xjc.model;
2728import com.sun.codemodel.internal.JCodeModel;
29import com.sun.codemodel.internal.JType;
3031/**32 * Symbol space for ID/IDREF.33 *34 * In XJC, the whole ID space is considered to be splitted into35 * one or more "symbol space". For an IDREF to match an ID, we impose36 * additional restriction to the one stated in the XML rec.37 *38 * <p>39 * That is, XJC'll require that the IDREF belongs to the same symbol40 * space as the ID. Having this concept allows us to assign more41 * specific type to IDREF.42 *43 * <p>44 * See the design document for detail.45 *46 * @author47 * <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a>48 */49publicclassSymbolSpace50 {
51privateJType type;
52privatefinalJCodeModel codeModel;
5354publicSymbolSpace( JCodeModel _codeModel ) {
55this.codeModel = _codeModel;
56 }
5758/**59 * Gets the Java type of this symbol space.60 *61 * <p>62 * A symbol space is said to have a Java type X if all classes63 * pointed by IDs belonging to this symbol space are assignable64 * to X.65 */66publicJType getType() {
67if(type==null) return codeModel.ref(Object.class);
68return type;
69 }
7071publicvoid setType( JType _type ) {
72if( this.type==null )
73this.type = _type;
74 }
7576publicString toString() {
77if(type==null) return"undetermined";
78elsereturn type.name();
79 }
80 }