0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder/*
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
e6d40133bc9f858308654afb1262b8b483ec5922Till Mossakowski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder *
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * This code is free software; you can redistribute it and/or modify it
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * under the terms of the GNU General Public License version 2 only, as
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * published by the Free Software Foundation. Oracle designates this
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * particular file as subject to the "Classpath" exception as provided
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * by Oracle in the LICENSE file that accompanied this code.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * This code is distributed in the hope that it will be useful, but WITHOUT
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * version 2 for more details (a copy is included in the LICENSE file that
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * accompanied this code).
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * You should have received a copy of the GNU General Public License version
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * 2 along with this work; if not, write to the Free Software Foundation,
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * or visit www.oracle.com if you need additional information or have any
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * questions.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder */
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederpackage com.sun.tools.internal.xjc.outline;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederimport java.util.Set;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederimport javax.xml.bind.annotation.XmlNsForm;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederimport javax.xml.bind.annotation.XmlSchema;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederimport com.sun.codemodel.internal.JDefinedClass;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederimport com.sun.codemodel.internal.JPackage;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederimport com.sun.tools.internal.xjc.generator.bean.ObjectFactoryGenerator;
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder/**
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * Outline object that provides per-package information.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
980c2505814d75dc689de1412f4de30b4d96314fRazvan Pascanu * This interface is accessible from {@link Outline}.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * @author
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder */
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maederpublic interface PackageOutline {
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder /**
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * The exposed package this context is representing.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * <p>
a1058b6caa394964f2c33b1a52af205a144abd38Razvan Pascanu * An exposed package is a package visible to users, a package
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * supposed to be used by client applications. Sometime
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder * we have another parallel package that's not visible to users.
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski */
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski JPackage _package();
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder /**
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * Generated ObjectFactory from package.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * This method allows a caller to obtain a reference to such
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * ObjectFactory from its package.
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu *
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * Must not be null.
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu */
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu JDefinedClass objectFactory();
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu /**
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * Generates an ObjectFactory class for this package.
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu */
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski ObjectFactoryGenerator objectFactoryGenerator();
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder
04d04d19fdd5320953c78ad5b6d2d11f85bc4bcfChristian Maeder /**
04d04d19fdd5320953c78ad5b6d2d11f85bc4bcfChristian Maeder * Gets {@link ClassOutline}s whose {@link ClassOutline#_package()}
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder * points to this object.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder *
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * @return can be empty but never null.
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu */
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu Set<? extends ClassOutline> getClasses();
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu /**
a1058b6caa394964f2c33b1a52af205a144abd38Razvan Pascanu * The namespace URI most commonly used in classes in this package.
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * This should be used as the namespace URI for {@link XmlSchema#namespace()}.
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu *
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * <p>
58aa0caa9f05787b4bffc2e32d1494cc1766b8cfRazvan Pascanu * Null if no default
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski */
04d04d19fdd5320953c78ad5b6d2d11f85bc4bcfChristian Maeder public String getMostUsedNamespaceURI();
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder
a1058b6caa394964f2c33b1a52af205a144abd38Razvan Pascanu /**
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski * The element form default for this package.
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * <p>
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder * The value is computed by examining what would yield the smallest generated code.
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder */
0206ab93ef846e4e0885996d052b9b73b9dc66b0Christian Maeder public XmlNsForm getElementFormDefault();
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski
04d04d19fdd5320953c78ad5b6d2d11f85bc4bcfChristian Maeder /**
04d04d19fdd5320953c78ad5b6d2d11f85bc4bcfChristian Maeder * The attribute form default for this package.
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder * <p>
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder * The value is computed by examining what would yield the smallest generated code.
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder */
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder public XmlNsForm getAttributeFormDefault();
57d320fc4d0fe1a1c08cfe6cd9ebec09b86c2cbfTill Mossakowski}
333780eae2be9f20fe46dedbf5eb46ffa0cbfd02Christian Maeder