[hibernate-commits] Hibernate SVN: r18159 - in core/trunk: annotations/src/main/java/org/hibernate/cfg/annotations/reflection and 2 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Dec 8 09:20:57 EST 2009


Author: epbernard
Date: 2009-12-08 09:20:56 -0500 (Tue, 08 Dec 2009)
New Revision: 18159

Modified:
   core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationConfiguration.java
   core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/JPAMetadataProvider.java
   core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/XMLContext.java
   core/trunk/core/src/main/java/org/hibernate/cfg/Configuration.java
   core/trunk/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java
Log:
HHH-4649 Properly bind Environment#GLOBALLY_QUOTED_IDENTIFIERS to orm.xml <delimited-identifier/>

Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationConfiguration.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationConfiguration.java	2009-12-08 13:14:47 UTC (rev 18158)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationConfiguration.java	2009-12-08 14:20:56 UTC (rev 18159)
@@ -288,6 +288,12 @@
 
 		//process default values first
 		if ( !isDefaultProcessed ) {
+			//use global delimiters if orm.xml declare it
+			final Object isDelimited = reflectionManager.getDefaults().get( "delimited-identifier" );
+			if (isDelimited != null && isDelimited == Boolean.TRUE) {
+				getProperties().put( Environment.GLOBALLY_QUOTED_IDENTIFIERS, "true" );
+			}
+
 			AnnotationBinder.bindDefaults( createExtendedMappings() );
 			isDefaultProcessed = true;
 		}

Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/JPAMetadataProvider.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/JPAMetadataProvider.java	2009-12-08 13:14:47 UTC (rev 18158)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/JPAMetadataProvider.java	2009-12-08 14:20:56 UTC (rev 18159)
@@ -48,6 +48,8 @@
 		if ( defaults == null ) {
 			defaults = new HashMap<Object, Object>();
 			XMLContext.Default xmlDefaults = xmlContext.getDefault( null );
+
+			defaults.put( "delimited-identifier", xmlDefaults.getDelimitedIdentifier() );
 			List<Class> entityListeners = new ArrayList<Class>();
 			for ( String className : xmlContext.getDefaultEntityListeners() ) {
 				try {

Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/XMLContext.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/XMLContext.java	2009-12-08 13:14:47 UTC (rev 18158)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/annotations/reflection/XMLContext.java	2009-12-08 14:20:56 UTC (rev 18159)
@@ -73,6 +73,8 @@
 					globalDefaults.setAccess( unitElement != null ? unitElement.getTextTrim() : null );
 					unitElement = defaultElement.element( "cascade-persist" );
 					globalDefaults.setCascadePersist( unitElement != null ? Boolean.TRUE : null );
+					unitElement = defaultElement.element( "delimited-identifiers" );
+					globalDefaults.setDelimitedIdentifiers( unitElement != null ? Boolean.TRUE : null );
 					defaultEntityListeners.addAll( addEntityListenerClasses( defaultElement, null, addedClasses ) );
 				}
 			}
@@ -198,6 +200,7 @@
 		private String catalog;
 		private Boolean metadataComplete;
 		private Boolean cascadePersist;
+		private Boolean delimitedIdentifier;
 
 		public String getAccess() {
 			return access;
@@ -262,6 +265,7 @@
 				if ( globalDefault.getPackageName() != null ) packageName = globalDefault.getPackageName();
 				if ( globalDefault.getSchema() != null ) schema = globalDefault.getSchema();
 				if ( globalDefault.getCatalog() != null ) catalog = globalDefault.getCatalog();
+				if ( globalDefault.getDelimitedIdentifier() != null ) delimitedIdentifier = globalDefault.getDelimitedIdentifier();
 				if ( globalDefault.getMetadataComplete() != null ) {
 					metadataComplete = globalDefault.getMetadataComplete();
 				}
@@ -269,6 +273,14 @@
 				if ( globalDefault.getCascadePersist() != null ) cascadePersist = globalDefault.getCascadePersist();
 			}
 		}
+
+		public void setDelimitedIdentifiers(Boolean delimitedIdentifier) {
+			this.delimitedIdentifier = delimitedIdentifier;
+		}
+
+		public Boolean getDelimitedIdentifier() {
+			return delimitedIdentifier;
+		}
 	}
 
 	public List<String> getDefaultEntityListeners() {

Modified: core/trunk/core/src/main/java/org/hibernate/cfg/Configuration.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/Configuration.java	2009-12-08 13:14:47 UTC (rev 18158)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/Configuration.java	2009-12-08 14:20:56 UTC (rev 18159)
@@ -2803,6 +2803,8 @@
 
 	final class ObjectNameNormalizerImpl extends ObjectNameNormalizer implements Serializable {
 		public boolean isUseQuotedIdentifiersGlobally() {
+			//Do not cache this value as we lazily set it in Hibernate Annotation (AnnotationConfiguration)
+			//TODO use a dedicated protected useQuotedIdentifier flag in Configuration (overriden by AnnotationConfiguration)
 			String setting = (String) properties.get( Environment.GLOBALLY_QUOTED_IDENTIFIERS );
 			return setting != null && Boolean.valueOf( setting ).booleanValue();
 		}

Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java	2009-12-08 13:14:47 UTC (rev 18158)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java	2009-12-08 14:20:56 UTC (rev 18159)
@@ -188,9 +188,6 @@
 			this.setProperty( Environment.DATASOURCE, metadata.getNonJtaDatasource() );
 		}
 		defineTransactionType( metadata.getTransactionType(), workingVars );
-		if ( metadata.isUseQuotedIdentifiers() ) {
-			this.setProperty( Environment.GLOBALLY_QUOTED_IDENTIFIERS, "true" );
-		}
 		if ( metadata.getClasses().size() > 0 ) {
 			workingVars.put( HibernatePersistence.CLASS_NAMES, metadata.getClasses() );
 		}



More information about the hibernate-commits mailing list