Class TablePerMultitenantPolicy
java.lang.Object
org.eclipse.persistence.descriptors.TablePerMultitenantPolicy
- All Implemented Interfaces:
Serializable
,Cloneable
,MultitenantPolicy
- Direct Known Subclasses:
SchemaPerMultitenantPolicy
A table per tenant multitenant policy. Tables can either be per schema
or augmented with a prefix or suffix per tenant.
- See Also:
- Author:
- Guy Pelletier
-
Field Summary
Modifier and TypeFieldDescriptionprotected String
protected String
protected ClassDescriptor
protected Map<org.eclipse.persistence.internal.helper.DatabaseTable,
org.eclipse.persistence.internal.helper.DatabaseTable> protected TenantTableDiscriminatorType
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addFieldsToRow
(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL:void
addToTableDefinition
(TableDefinition tableDefinition) INTERNAL:clone
(ClassDescriptor descriptor) INTERNAL: Multitenant policies are cloned per inheritance subclass.INTERNAL: Return the context property for this table per tenant policy.org.eclipse.persistence.internal.helper.DatabaseTable
INTERNAL: Return the new database table associated with this tenant.org.eclipse.persistence.internal.helper.DatabaseTable
getTable
(org.eclipse.persistence.internal.helper.DatabaseTable table) INTERNAL: Return the new database table associated with this tenant.protected String
getTableName
(org.eclipse.persistence.internal.helper.DatabaseTable table, String tenant) INTERNAL: Return the tenant table name.boolean
INTERNAL: Return true if the tenant has been set for this policy.void
initialize
(org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL:boolean
PUBLIC: Return true if this descriptor requires a prefix to the table per tenant.boolean
INTERNAL:boolean
PUBLIC: Return true if this descriptor requires a table schema per tenant.boolean
INTERNAL:boolean
PUBLIC: Return true if this descriptor requires a suffix to the table per tenant.boolean
INTERNAL:void
postInitialize
(org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL:void
preInitialize
(org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL:void
setContextProperty
(String contextProperty) PUBLIC: Set the context property used to define the table per tenant.void
setContextTenant
(String contextTenant) INTERNAL:protected void
INTERNAL: This method is used to update the table per tenant descriptor with a table per tenant prefix or suffix on its associated tables.protected void
INTERNAL: This method is used to update the table per tenant descriptor with a table per tenant schema.void
PUBLIC: Set the tenant table discriminator type.boolean
shouldInitialize
(org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: This method is called during regular descriptor initialization.protected org.eclipse.persistence.internal.helper.DatabaseTable
updateTable
(org.eclipse.persistence.internal.helper.DatabaseTable table) INTERNAL: This method will update the table by cloning it and setting a new name on it.boolean
usesContextProperty
(String property) INTERNAL: Return true if this policy accepts the given property.
-
Field Details
-
descriptor
-
tablePerTenantTables
protected Map<org.eclipse.persistence.internal.helper.DatabaseTable,org.eclipse.persistence.internal.helper.DatabaseTable> tablePerTenantTables -
type
-
contextProperty
-
contextTenant
-
-
Constructor Details
-
TablePerMultitenantPolicy
-
-
Method Details
-
addFieldsToRow
public void addFieldsToRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL:- Specified by:
addFieldsToRow
in interfaceMultitenantPolicy
-
addToTableDefinition
INTERNAL:- Specified by:
addToTableDefinition
in interfaceMultitenantPolicy
-
clone
INTERNAL: Multitenant policies are cloned per inheritance subclass.- Specified by:
clone
in interfaceMultitenantPolicy
-
getContextProperty
INTERNAL: Return the context property for this table per tenant policy. -
getTable
INTERNAL: Return the new database table associated with this tenant. -
getTable
public org.eclipse.persistence.internal.helper.DatabaseTable getTable(org.eclipse.persistence.internal.helper.DatabaseTable table) INTERNAL: Return the new database table associated with this tenant. -
getTableName
protected String getTableName(org.eclipse.persistence.internal.helper.DatabaseTable table, String tenant) INTERNAL: Return the tenant table name. -
hasContextTenant
public boolean hasContextTenant()INTERNAL: Return true if the tenant has been set for this policy. -
initialize
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException INTERNAL:- Specified by:
initialize
in interfaceMultitenantPolicy
- Throws:
DescriptorException
-
isPrefixPerTable
public boolean isPrefixPerTable()PUBLIC: Return true if this descriptor requires a prefix to the table per tenant. -
isSchemaPerTable
public boolean isSchemaPerTable()PUBLIC: Return true if this descriptor requires a table schema per tenant. -
isSingleTableMultitenantPolicy
public boolean isSingleTableMultitenantPolicy()INTERNAL:- Specified by:
isSingleTableMultitenantPolicy
in interfaceMultitenantPolicy
-
isSchemaPerMultitenantPolicy
public boolean isSchemaPerMultitenantPolicy()INTERNAL:- Specified by:
isSchemaPerMultitenantPolicy
in interfaceMultitenantPolicy
-
isSuffixPerTable
public boolean isSuffixPerTable()PUBLIC: Return true if this descriptor requires a suffix to the table per tenant. -
isTablePerMultitenantPolicy
public boolean isTablePerMultitenantPolicy()INTERNAL:- Specified by:
isTablePerMultitenantPolicy
in interfaceMultitenantPolicy
-
postInitialize
public void postInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL:- Specified by:
postInitialize
in interfaceMultitenantPolicy
-
preInitialize
public void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException INTERNAL:- Specified by:
preInitialize
in interfaceMultitenantPolicy
- Throws:
DescriptorException
-
setTenantTableDiscriminatorType
PUBLIC: Set the tenant table discriminator type. -
setContextProperty
PUBLIC: Set the context property used to define the table per tenant. If it is not set by the user, the policy defaults it to the multitenant property default of "eclipselink.tenant-id" -
setTablePerTenant
protected void setTablePerTenant()INTERNAL: This method is used to update the table per tenant descriptor with a table per tenant prefix or suffix on its associated tables. This includes any relation tables from mappings. If the given session is a client session than we must clone the tables. Outside of a client session, assume global usage and no cloning is needed. This method should only be called at the start of a client session lifecycle and should only be called once. -
setTableSchemaPerTenant
protected void setTableSchemaPerTenant()INTERNAL: This method is used to update the table per tenant descriptor with a table per tenant schema. This includes any relation tables from mappings. This will be done through the setting of a table qualifier on the tables. This method should only be called at the start of a client session lifecycle and should only be called once. -
setContextTenant
INTERNAL: -
shouldInitialize
public boolean shouldInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: This method is called during regular descriptor initialization. When initializing at that level no cloning should be done on when setting the context tenant. -
updateTable
protected org.eclipse.persistence.internal.helper.DatabaseTable updateTable(org.eclipse.persistence.internal.helper.DatabaseTable table) INTERNAL: This method will update the table by cloning it and setting a new name on it. The table association will be stored here as well for ease of future look up. -
usesContextProperty
INTERNAL: Return true if this policy accepts the given property.
-