HHH-4649 Properly bind Environment#GLOBALLY_QUOTED_IDENTIFIERS to orm.xml <delimited-identifier/>

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@18159 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
Emmanuel Bernard 2009-12-08 14:20:56 +00:00
parent 6b9e796074
commit 8eb02db44c
5 changed files with 22 additions and 3 deletions

View File

@ -288,6 +288,12 @@ public class AnnotationConfiguration extends Configuration {
//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;
}

View File

@ -48,6 +48,8 @@ public class JPAMetadataProvider implements MetadataProvider {
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 {

View File

@ -73,6 +73,8 @@ public class XMLContext {
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 @@ public class XMLContext {
private String catalog;
private Boolean metadataComplete;
private Boolean cascadePersist;
private Boolean delimitedIdentifier;
public String getAccess() {
return access;
@ -262,6 +265,7 @@ public class XMLContext {
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 @@ public class XMLContext {
if ( globalDefault.getCascadePersist() != null ) cascadePersist = globalDefault.getCascadePersist();
}
}
public void setDelimitedIdentifiers(Boolean delimitedIdentifier) {
this.delimitedIdentifier = delimitedIdentifier;
}
public Boolean getDelimitedIdentifier() {
return delimitedIdentifier;
}
}
public List<String> getDefaultEntityListeners() {

View File

@ -2803,6 +2803,8 @@ public class Configuration implements Serializable {
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();
}

View File

@ -188,9 +188,6 @@ public class Ejb3Configuration implements Serializable, Referenceable {
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() );
}