001: /*
002: * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package com.sun.xml.internal.xsom;
027:
028: import java.util.List;
029:
030: /**
031: * Identity constraint.
032: *
033: * @author Kohsuke Kawaguchi
034: */
035: public interface XSIdentityConstraint extends XSComponent {
036:
037: /**
038: * Gets the {@link XSElementDecl} that owns this identity constraint.
039: *
040: * @return
041: * never null.
042: */
043: XSElementDecl getParent();
044:
045: /**
046: * Name of the identity constraint.
047: *
048: * A name uniquely identifies this {@link XSIdentityConstraint} within
049: * the namespace.
050: *
051: * @return
052: * never null.
053: */
054: String getName();
055:
056: /**
057: * Target namespace of the identity constraint.
058: *
059: * Just short for <code>getParent().getTargetNamespace()</code>.
060: */
061: String getTargetNamespace();
062:
063: /**
064: * Returns the type of the identity constraint.
065: *
066: * @return
067: * either {@link #KEY},{@link #KEYREF}, or {@link #UNIQUE}.
068: */
069: short getCategory();
070:
071: final short KEY = 0;
072: final short KEYREF = 1;
073: final short UNIQUE = 2;
074:
075: /**
076: * Returns the selector XPath expression as string.
077: *
078: * @return
079: * never null.
080: */
081: XSXPath getSelector();
082:
083: /**
084: * Returns the list of field XPaths.
085: *
086: * @return
087: * a non-empty read-only list of {@link String}s,
088: * each representing the XPath.
089: */
090: List<XSXPath> getFields();
091:
092: /**
093: * If this is {@link #KEYREF}, returns the key {@link XSIdentityConstraint}
094: * being referenced.
095: *
096: * @return
097: * always non-null (when {@link #getCategory()}=={@link #KEYREF}).
098: * @throws IllegalStateException
099: * if {@link #getCategory()}!={@link #KEYREF}
100: */
101: XSIdentityConstraint getReferencedKey();
102: }
|