Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 201741 Details for
Bug 355093
Add new 'includeCriteria' flag to Multitenant metadata
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Proposed changes - trunk
patch355093.patch (text/plain), 12.44 KB, created by
Guy Pelletier
on 2011-08-18 14:47:39 EDT
(
hide
)
Description:
Proposed changes - trunk
Filename:
MIME Type:
Creator:
Guy Pelletier
Created:
2011-08-18 14:47:39 EDT
Size:
12.44 KB
patch
obsolete
>Index: foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/annotations/Multitenant.java >=================================================================== >--- foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/annotations/Multitenant.java (revision 9906) >+++ foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/annotations/Multitenant.java (working copy) >@@ -9,7 +9,9 @@ > * > * Contributors: > * 03/24/2011-2.3 Guy Pelletier >- * - 337323: Multi-tenant with shared schema support (part 1) >+ * - 337323: Multi-tenant with shared schema support (part 1) >+ * 08/18/2011-2.3.1 Guy Pelletier >+ * - 355093: Add new 'includeCriteria' flag to Multitenant metadata > ******************************************************************************/ > package org.eclipse.persistence.annotations; > >@@ -40,4 +42,13 @@ > * (Optional) Specify the multi-tenant strategy to use. > */ > MultitenantType value() default MultitenantType.SINGLE_TABLE; >+ >+ /** >+ * (Optional) Indicate if the database requires the tenant criteria to >+ * be added to the SELECT, UPDATE, and DELETE queries. By default this is >+ * done but when set to false the queries will not be modified and it will >+ * be up to the application or database to ensure that the correct criteria >+ * is applied to all queries. >+ */ >+ boolean includeCriteria() default true; > } >Index: foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/descriptors/DescriptorQueryManager.java >=================================================================== >--- foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/descriptors/DescriptorQueryManager.java (revision 9906) >+++ foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/descriptors/DescriptorQueryManager.java (working copy) >@@ -15,6 +15,8 @@ > * - 337323: Multi-tenant with shared schema support (part 2) > * 05/24/2011-2.3 Guy Pelletier > * - 345962: Join fetch query when using tenant discriminator column fails. >+ * 08/18/2011-2.3.1 Guy Pelletier >+ * - 355093: Add new 'includeCriteria' flag to Multitenant metadata > ******************************************************************************/ > package org.eclipse.persistence.descriptors; > >@@ -69,6 +71,7 @@ > protected transient DeleteObjectQuery deleteQuery; > protected DoesExistQuery doesExistQuery; > protected ClassDescriptor descriptor; >+ protected boolean includeTenantCriteria; > protected boolean hasCustomMultipleTableJoinExpression; > protected transient String additionalCriteria; > protected transient Expression additionalJoinExpression; >@@ -102,6 +105,7 @@ > * Initialize the state of the descriptor query manager > */ > public DescriptorQueryManager() { >+ this.includeTenantCriteria = true; > this.queries = new LinkedHashMap(5); > this.cachedUpdateCalls = new ConcurrentFixedCache(10); > this.cachedExpressionQueries = new ConcurrentFixedCache(20); >@@ -816,6 +820,13 @@ > > /** > * INTERNAL: >+ */ >+ public boolean includeTenantCriteria() { >+ return includeTenantCriteria; >+ } >+ >+ /** >+ * INTERNAL: > * Post initialize the mappings > */ > public void initialize(AbstractSession session) { >@@ -942,7 +953,7 @@ > additionalJoinExpression = databaseQuery.getSelectionCriteria().and(additionalJoinExpression); > } > >- if (descriptor.hasTenantDiscriminatorFields()) { >+ if (descriptor.hasTenantDiscriminatorFields() && includeTenantCriteria) { > ExpressionBuilder builder = new ExpressionBuilder(); > > for (DatabaseField discriminatorField : descriptor.getTenantDiscriminatorFields().keySet()) { >@@ -1352,6 +1363,18 @@ > > /** > * ADVANCED: >+ * Set this boolean to exlude tenant column criteria in the additional >+ * join expression. This is of particualar use when using Oracle VPD >+ * that handles tenant identifiers. Setting this flag to false will ensure >+ * EclipseLink does not futher filter tenant information (and only populate >+ * it) >+ */ >+ public void setIncludeTenantCriteria(boolean includeTenantCriteria) { >+ this.includeTenantCriteria = includeTenantCriteria; >+ } >+ >+ /** >+ * ADVANCED: > * Set the receiver's insert call. > * This allows the user to override the insert operation. > */ >Index: foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/descriptors/InheritancePolicy.java >=================================================================== >--- foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/descriptors/InheritancePolicy.java (revision 9906) >+++ foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/descriptors/InheritancePolicy.java (working copy) >@@ -11,6 +11,8 @@ > * Oracle - initial API and implementation from Oracle TopLink > * 04/01/2011-2.3 Guy Pelletier > * - 337323: Multi-tenant with shared schema support (part 2) >+ * 08/18/2011-2.3.1 Guy Pelletier >+ * - 355093: Add new 'includeCriteria' flag to Multitenant metadata > ******************************************************************************/ > package org.eclipse.persistence.descriptors; > >@@ -1151,6 +1153,9 @@ > getDescriptor().addTenantDiscriminatorField(property, discriminatorField); > } > >+ // Copy down the include criteria flag. >+ getDescriptor().getQueryManager().setIncludeTenantCriteria(getParentDescriptor().getQueryManager().includeTenantCriteria()); >+ > setClassIndicatorMapping(getParentDescriptor().getInheritancePolicy().getClassIndicatorMapping()); > setShouldUseClassNameAsIndicator(getParentDescriptor().getInheritancePolicy().shouldUseClassNameAsIndicator()); > >Index: jpa/org.eclipse.persistence.jpa/resource/org/eclipse/persistence/jpa/eclipselink_orm_2_4.xsd >=================================================================== >--- jpa/org.eclipse.persistence.jpa/resource/org/eclipse/persistence/jpa/eclipselink_orm_2_4.xsd (revision 9906) >+++ jpa/org.eclipse.persistence.jpa/resource/org/eclipse/persistence/jpa/eclipselink_orm_2_4.xsd (working copy) >@@ -3321,6 +3321,7 @@ > <xsd:element name="tenant-discriminator-column" type="orm:tenant-discriminator-column" minOccurs="0" maxOccurs="unbounded"/> > </xsd:sequence> > <xsd:attribute name="type" type="orm:multitenant-type"/> >+ <xsd:attribute name="include-criteria" type="xsd:boolean"/> > </xsd:complexType> > > <!-- **************************************************** --> >Index: jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/multitenant/MultitenantMetadata.java >=================================================================== >--- jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/multitenant/MultitenantMetadata.java (revision 9906) >+++ jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/multitenant/MultitenantMetadata.java (working copy) >@@ -15,7 +15,9 @@ > * 04/05/2011-2.3 Guy Pelletier > * - 337323: Multi-tenant with shared schema support (part 3) > * 06/30/2011-2.3.1 Guy Pelletier >- * - 341940: Add disable/enable allowing native queries >+ * - 341940: Add disable/enable allowing native queries >+ * 08/18/2011-2.3.1 Guy Pelletier >+ * - 355093: Add new 'includeCriteria' flag to Multitenant metadata > ******************************************************************************/ > package org.eclipse.persistence.internal.jpa.metadata.multitenant; > >@@ -51,6 +53,7 @@ > * @since EclipseLink 2.3 > */ > public class MultitenantMetadata extends ORMetadata { >+ private Boolean m_includeCriteria; > private List<TenantDiscriminatorColumnMetadata> m_tenantDiscriminatorColumns = new ArrayList<TenantDiscriminatorColumnMetadata>(); > private String m_type; > >@@ -70,6 +73,7 @@ > super(multitenant, accessor); > > m_type = (String) multitenant.getAttribute("value"); >+ m_includeCriteria = (Boolean) multitenant.getAttributeBooleanDefaultTrue("includeCriteria"); > > // Look for a @TenantDiscriminators > if (accessor.isAnnotationPresent(TenantDiscriminatorColumns.class)) { >@@ -95,6 +99,10 @@ > if (! valuesMatch(m_type, multitenant.getType())) { > return false; > } >+ >+ if (! valuesMatch(m_includeCriteria, multitenant.getIncludeCriteria())) { >+ return false; >+ } > > return valuesMatch(m_tenantDiscriminatorColumns, multitenant.getTenantDiscriminatorColumns()); > } >@@ -106,6 +114,14 @@ > * INTERNAL: > * Used for OX mapping. > */ >+ public Boolean getIncludeCriteria() { >+ return m_includeCriteria; >+ } >+ >+ /** >+ * INTERNAL: >+ * Used for OX mapping. >+ */ > public List<TenantDiscriminatorColumnMetadata> getTenantDiscriminatorColumns() { > return m_tenantDiscriminatorColumns; > } >@@ -121,6 +137,13 @@ > /** > * INTERNAL: > */ >+ public boolean includeCriteria() { >+ return m_includeCriteria == null || m_includeCriteria.booleanValue(); >+ } >+ >+ /** >+ * INTERNAL: >+ */ > @Override > public void initXMLObject(MetadataAccessibleObject accessibleObject, XMLEntityMappings entityMappings) { > super.initXMLObject(accessibleObject, entityMappings); >@@ -199,12 +222,23 @@ > for (TenantDiscriminatorColumnMetadata tenantDiscriminator : m_tenantDiscriminatorColumns) { > tenantDiscriminator.process(descriptor); > } >+ >+ // Set the include criteria flag on the query manager. >+ descriptor.getClassDescriptor().getDescriptorQueryManager().setIncludeTenantCriteria(includeCriteria()); > } > > /** > * INTERNAL: > * Used for OX mapping. > */ >+ public void setIncludeCriteria(Boolean includeCriteria) { >+ m_includeCriteria = includeCriteria; >+ } >+ >+ /** >+ * INTERNAL: >+ * Used for OX mapping. >+ */ > public void setTenantDiscriminatorColumns(List<TenantDiscriminatorColumnMetadata> tenantDiscriminatorColumns) { > m_tenantDiscriminatorColumns = tenantDiscriminatorColumns; > } >Index: jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/xml/XMLEntityMappingsMappingProject.java >=================================================================== >--- jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/xml/XMLEntityMappingsMappingProject.java (revision 9906) >+++ jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/xml/XMLEntityMappingsMappingProject.java (working copy) >@@ -63,6 +63,8 @@ > * - 337323: Multi-tenant with shared schema support (part 8) > * 07/03/2011-2.3.1 Guy Pelletier > * - 348756: m_cascadeOnDelete boolean should be changed to Boolean >+ * 08/18/2011-2.3.1 Guy Pelletier >+ * - 355093: Add new 'includeCriteria' flag to Multitenant metadata > *******************************************************************************/ > package org.eclipse.persistence.internal.jpa.metadata.xml; > >@@ -2099,6 +2101,7 @@ > > // Attribute mappings. > descriptor.addMapping(getTypeAttributeMapping()); >+ descriptor.addMapping(getIncludeCriteriaAttributeMapping()); > > return descriptor; > } >@@ -4188,6 +4191,18 @@ > /** > * INTERNAL: > */ >+ protected XMLDirectMapping getIncludeCriteriaAttributeMapping() { >+ XMLDirectMapping includeCriteriaMapping = new XMLDirectMapping(); >+ includeCriteriaMapping.setAttributeName("m_includeCriteria"); >+ includeCriteriaMapping.setGetMethodName("getIncludeCriteria"); >+ includeCriteriaMapping.setSetMethodName("setIncludeCriteria"); >+ includeCriteriaMapping.setXPath("@include-criteria"); >+ return includeCriteriaMapping; >+ } >+ >+ /** >+ * INTERNAL: >+ */ > protected XMLCompositeCollectionMapping getIndexesMapping() { > XMLCompositeCollectionMapping indexesMapping = new XMLCompositeCollectionMapping(); > indexesMapping.setAttributeName("m_indexes");
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 355093
: 201741 |
201742