src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/core/ClassInfo.java

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

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

merge

     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 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.bind.v2.model.core;
    28 import java.util.List;
    30 import javax.xml.bind.annotation.XmlTransient;
    31 import javax.xml.bind.annotation.XmlValue;
    33 /**
    34  * Information about JAXB-bound class.
    35  *
    36  * <p>
    37  * All the JAXB annotations are already reflected to the model so that
    38  * the caller doesn't have to worry about them. For this reason, you
    39  * cannot access annotations on properties.
    40  *
    41  * <h2>XML representation</h2>
    42  * <p>
    43  * A JAXB-bound class always have at least one representation
    44  * (called "type representation"),but it can optionally have another
    45  * representation ("element representation").
    46  *
    47  * <p>
    48  * In the type representaion, a class
    49  * is represented as a set of attributes and (elements or values).
    50  * You can inspect the details of those attributes/elements/values by {@link #getProperties()}.
    51  * This representation corresponds to a complex/simple type in XML Schema.
    52  * You can obtain the schema type name by {@link #getTypeName()}.
    53  *
    54  * <p>
    55  * If a class has an element representation, {@link #isElement()} returns true.
    56  * This representation is mostly similar to the type representation
    57  * except that the whoe attributes/elements/values are wrapped into
    58  * one element. You can obtain the name of this element through {@link #asElement()}.
    59  *
    60  * @author Kohsuke Kawaguchi (kk@kohsuke.org)
    61  */
    62 public interface ClassInfo<T,C> extends MaybeElement<T,C> {
    64     /**
    65      * Obtains the information about the base class.
    66      *
    67      * @return null
    68      *      if this info extends from {@link Object}.
    69      */
    70     ClassInfo<T,C> getBaseClass();
    72     /**
    73      * Gets the declaration this object is wrapping.
    74      */
    75     C getClazz();
    77     /**
    78      * Gets the fully-qualified name of the class.
    79      */
    80     String getName();
    82     /**
    83      * Returns all the properties newly declared in this class.
    84      *
    85      * <p>
    86      * This excludes properties defined in the super class.
    87      *
    88      * <p>
    89      * If the properties are {@link #isOrdered() ordered},
    90      * it will be returned in the order that appear in XML.
    91      * Otherwise it will be returned in no particular order.
    92      *
    93      * <p>
    94      * Properties marked with {@link XmlTransient} will not show up
    95      * in this list. As far as JAXB is concerned, they are considered
    96      * non-existent.
    97      *
    98      * @return
    99      *      always non-null, but can be empty.
   100      */
   101     List<? extends PropertyInfo<T,C>> getProperties();
   103     /**
   104      * Returns true if this class or its ancestor has {@link XmlValue}
   105      * property.
   106      */
   107     boolean hasValueProperty();
   109     /**
   110      * Gets the property that has the specified name.
   111      *
   112      * <p>
   113      * This is just a convenience method for:
   114      * <pre>
   115      * for( PropertyInfo p : getProperties() ) {
   116      *   if(p.getName().equals(name))
   117      *     return p;
   118      * }
   119      * return null;
   120      * </pre>
   121      *
   122      * @return null
   123      *      if the property was not found.
   124      *
   125      * @see PropertyInfo#getName()
   126      */
   127     PropertyInfo<T,C> getProperty(String name);
   129     /**
   130      * If the class has properties, return true.  This is only
   131      * true if the Collection object returned by {@link #getProperties()}
   132      * is not empty.
   133      */
   134     boolean hasProperties();
   136     /**
   137      * If this class is abstract and thus shall never be directly instanciated.
   138      */
   139     boolean isAbstract();
   141     /**
   142      * Returns true if the properties of this class is ordered in XML.
   143      * False if it't not.
   144      *
   145      * <p>
   146      * In RELAX NG context, ordered properties mean &lt;group> and
   147      * unordered properties mean &lt;interleave>.
   148      */
   149     boolean isOrdered();
   151     /**
   152      * If this class is marked as final and no further extension/restriction is allowed.
   153      */
   154     boolean isFinal();
   156     /**
   157      * True if there's a known sub-type of this class in {@link TypeInfoSet}.
   158      */
   159     boolean hasSubClasses();
   161     /**
   162      * Returns true if this bean class has an attribute wildcard.
   163      *
   164      * <p>
   165      * This is true if the class declares an attribute wildcard,
   166      * or it is inherited from its super classes.
   167      *
   168      * @see #inheritsAttributeWildcard()
   169      */
   170     boolean hasAttributeWildcard();
   172     /**
   173      * Returns true iff this class inherits a wildcard attribute
   174      * from its ancestor classes.
   175      */
   176     boolean inheritsAttributeWildcard();
   178     /**
   179      * Returns true iff this class declares a wildcard attribute.
   180      */
   181     boolean declaresAttributeWildcard();
   182 }

mercurial