blob: c2ff8f7ac84b834ff4c0b2765ad1379c8c561ace [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* dclarke, mnorman - Dynamic Persistence
* http://wiki.eclipse.org/EclipseLink/Development/Dynamic
* (https://bugs.eclipse.org/bugs/show_bug.cgi?id=200045)
*
******************************************************************************/
package org.eclipse.persistence.dynamic;
//javase imports
import java.util.List;
//EclipseLink imports
import org.eclipse.persistence.descriptors.ClassDescriptor;
/**
* An EntityType provides a metadata facade into the EclipseLink
* object-relational metadata (descriptors & mappings) with specific knowledge
* of the entity types being dynamic.
*
* @author dclarke, mnorman
* @since EclipseLink 1.2
*/
public interface DynamicType {
/**
* Return the entity type's name. This is the short name of the class or the
* {@link ClassDescriptor#getAlias()}
*/
public String getName();
/**
* @return Fully qualified name of mapped class.
*/
public String getClassName();
/**
* @return The parent type or null if this type does not have a persistent
* superclass
*/
public DynamicType getParentType();
/**
* The current number of properties.
* <p>
* Note: Some implementations support adding mapped attributes at runtime so
* it is best to avoid caching the result.
*/
public int getNumberOfProperties();
/**
* The current names of properties.
* <p>
* Note: Some implementations support adding mapped attributes at runtime so
* it is best to avoid caching the result.
*/
public List<String> getPropertiesNames();
public boolean containsProperty(String propertyName);
public int getPropertyIndex(String propertyName);
public Class<? extends DynamicEntity> getJavaClass();
public DynamicEntity newDynamicEntity();
public Class<?> getPropertyType(int propertyIndex);
public Class<?> getPropertyType(String propertyName);
/**
* @return the underlying {@link ClassDescriptor} for the mapped type
*/
public ClassDescriptor getDescriptor();
/**
* Property name used to store the EntityTypeImpl on each descriptor in its
* {@link ClassDescriptor#properties}. The EntityType instance is generally
* populated by the {@link DynamicTypeBuilder} and should only be done when
* properly initialized.
*/
public static final String DESCRIPTOR_PROPERTY = "ENTITY_TYPE";
}