/******************************************************************************* * Copyright (c) 2006, 2011 Oracle. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0, which accompanies this distribution * and is available at http://www.eclipse.org/legal/epl-v10.html. * * Contributors: * Oracle - initial API and implementation ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; /** * Context persistent type. *
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
* stability. It is available at this early stage to solicit feedback from
* pioneering adopters on the understanding that any code that uses this API
* will almost certainly be broken (repeatedly) as the API evolves.
*
* @version 2.3
* @since 2.0
*/
public interface PersistentType
extends JpaContextNode, JpaStructureNode, AccessHolder
{
// ********** name **********
/**
* Return the persistent type's [fully-qualified] name.
* The enclosing type separator is
* Example:
* '.'
,
* as opposed to '$'
.
* @see #getSimpleName()
*/
String getName();
String NAME_PROPERTY = "name"; //$NON-NLS-1$
/**
* Return the persistent type's simple name.
* @see #getName()
*/
String getSimpleName();
// ********** mapping **********
/**
* Return the persistent type's mapping.
* Set the mapping via {@link #setMappingKey(String)}.
*/
TypeMapping getMapping();
String MAPPING_PROPERTY = "mapping"; //$NON-NLS-1$
String getMappingKey();
void setMappingKey(String key);
boolean isMapped();
// ********** attributes **********
/**
* Return the persistent type's persistent attributes.
*/
ListIterable extends ReadOnlyPersistentAttribute> getAttributes();
//TODO remove this compatibility API in the Juno release
null
if the persistent type is the root persistent type.
*
* @Entity
* public abstract class Model {}
*
* public abstract class Animal extends Model {}
*
* @Entity
* public class Cat extends Animal {}
*
* The "super" persistent type of the Cat
persistent type is
* the Model
persistent type. The "super" persistent type can
* be either a Java annotated class or declared in the XML files.
*/
PersistentType getSuperPersistentType();
String SUPER_PERSISTENT_TYPE_PROPERTY = "superPersistentType"; //$NON-NLS-1$
/**
* Return the persistent type's "persistence" inheritance hierarchy,
* including the persistent type itself.
* The returned iterator will return elements infinitely if the hierarchy
* has a loop.
*/
Iterable'.'
.
*/
boolean isFor(String typeName);
/**
* Return whether the persistent type resolves to a Java class in the
* specified package fragment.
*/
boolean isIn(IPackageFragment packageFragment);
/**
* Return the persistent type the persistent type overrides.
* Typically this is the Java persistent type overridden by a
* non-metadata-complete orm.xml
persistent type.
*/
PersistentType getOverriddenPersistentType();
// ********** owner **********
/**
* Return the access type that overrides the client persistent type's
* access type; null
if there is no such access override.
*/
AccessType getOwnerOverrideAccess();
/**
* Return the client persistent type's default access type;
* null
if there is no such access default.
*/
AccessType getOwnerDefaultAccess();
// ********** owner interface **********
interface Owner
extends JpaContextNode
{
/**
* Return the access type that overrides the client persistent type's
* access type; null
if there is no such access override.
*/
AccessType getOverridePersistentTypeAccess();
/**
* Return the client persistent type's default access type;
* null
if there is no such access default.
*/
AccessType getDefaultPersistentTypeAccess();
}
}