Skip to content

Commit

Permalink
Get rid of LiteralType
Browse files Browse the repository at this point in the history
  • Loading branch information
beikov committed Oct 7, 2021
1 parent bfe2da9 commit 81e66fa
Show file tree
Hide file tree
Showing 49 changed files with 117 additions and 255 deletions.
Expand Up @@ -13,7 +13,6 @@
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.AbstractSingleColumnStandardBasicType;
import org.hibernate.type.LiteralType;
import org.hibernate.type.VersionType;
import org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.BigIntTypeDescriptor;
Expand All @@ -25,7 +24,7 @@

public class TimestampEpochType
extends AbstractSingleColumnStandardBasicType<Date>
implements VersionType<Date>, LiteralType<Date> {
implements VersionType<Date> {

public static final TimestampEpochType INSTANCE = new TimestampEpochType();

Expand Down
Expand Up @@ -2,7 +2,6 @@

import java.util.BitSet;

import org.hibernate.dialect.Dialect;
import org.hibernate.type.AbstractSingleColumnStandardBasicType;
import org.hibernate.type.DiscriminatorType;
import org.hibernate.type.descriptor.jdbc.VarcharTypeDescriptor;
Expand All @@ -26,12 +25,7 @@ public BitSet stringToObject(CharSequence sequence) throws Exception {
return fromString( sequence );
}

@Override
public String objectToSQLString(BitSet value, Dialect dialect) throws Exception {
return toString( value );
}

@Override
@Override
public String getName() {
return "bitset";
}
Expand Down
Expand Up @@ -45,6 +45,7 @@
import org.hibernate.service.spi.ServiceRegistryImplementor;
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
import org.hibernate.stat.spi.StatisticsImplementor;
import org.hibernate.type.descriptor.WrapperOptions;
import org.hibernate.type.spi.TypeConfiguration;

/**
Expand Down Expand Up @@ -161,6 +162,8 @@ default Iterable<EntityNameResolver> iterateEntityNameResolvers() {
*/
FastSessionServices getFastSessionServices();

WrapperOptions getWrapperOptions();

/**
* Contract for resolving this SessionFactory on deserialization
*/
Expand Down
Expand Up @@ -103,6 +103,7 @@
import org.hibernate.metamodel.spi.MetamodelImplementor;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.persister.entity.Loadable;
import org.hibernate.persister.entity.SessionFactoryBasedWrapperOptions;
import org.hibernate.procedure.spi.ProcedureCallImplementor;
import org.hibernate.proxy.EntityNotFoundDelegate;
import org.hibernate.proxy.HibernateProxyHelper;
Expand All @@ -126,6 +127,7 @@
import org.hibernate.tool.schema.spi.DelayedDropAction;
import org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator;
import org.hibernate.type.Type;
import org.hibernate.type.descriptor.WrapperOptions;
import org.hibernate.type.spi.TypeConfiguration;

import org.jboss.logging.Logger;
Expand Down Expand Up @@ -186,6 +188,7 @@ public class SessionFactoryImpl implements SessionFactoryImplementor {
private final transient Map<String, FetchProfile> fetchProfiles;

private final transient FastSessionServices fastSessionServices;
private final transient WrapperOptions wrapperOptions;
private final transient SessionBuilder defaultSessionOpenOptions;
private final transient SessionBuilder temporarySessionOpenOptions;
private final transient StatelessSessionBuilder defaultStatelessOptions;
Expand Down Expand Up @@ -372,6 +375,7 @@ public void sessionFactoryClosed(SessionFactory factory) {
this.temporarySessionOpenOptions = this.defaultSessionOpenOptions == null ? null : buildTemporarySessionOpenOptions();
this.defaultStatelessOptions = this.defaultSessionOpenOptions == null ? null : withStatelessOptions();
this.fastSessionServices = new FastSessionServices( this );
this.wrapperOptions = new SessionFactoryBasedWrapperOptions( this );

this.observer.sessionFactoryCreated( this );

Expand Down Expand Up @@ -1643,6 +1647,11 @@ public FastSessionServices getFastSessionServices() {
return this.fastSessionServices;
}

@Override
public WrapperOptions getWrapperOptions() {
return wrapperOptions;
}

private enum Status {
OPEN,
CLOSING,
Expand Down
Expand Up @@ -16,7 +16,6 @@
import org.hibernate.EntityMode;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.jdbc.Size;
import org.hibernate.engine.spi.Mapping;
import org.hibernate.engine.spi.SessionFactoryImplementor;
Expand Down Expand Up @@ -226,11 +225,6 @@ public int getColumnSpan(Mapping mapping) throws MappingException {
return underlyingType.getColumnSpan( mapping );
}

@Override
public String objectToSQLString(T value, Dialect dialect) throws Exception {
return ( (org.hibernate.type.DiscriminatorType<T>) underlyingType ).objectToSQLString( value, dialect );
}

@Override
public T stringToObject(CharSequence sequence) throws Exception {
return ( (org.hibernate.type.DiscriminatorType<T>) underlyingType ).stringToObject( sequence );
Expand Down
Expand Up @@ -69,6 +69,7 @@
import org.hibernate.type.DiscriminatorType;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;
import org.hibernate.type.descriptor.java.JavaTypeDescriptor;

import org.jboss.logging.Logger;

Expand Down Expand Up @@ -194,10 +195,12 @@ else if ( persistentClass.isDiscriminatorValueNotNull() ) {
else {
try {
discriminatorValue = discriminatorType.stringToObject( persistentClass.getDiscriminatorValue() );
discriminatorSQLString = ((DiscriminatorType) discriminatorType).objectToSQLString(
discriminatorValue,
factory.getJdbcServices().getDialect()
);
discriminatorSQLString = discriminatorType.getJdbcTypeDescriptor().getJdbcLiteralFormatter( (JavaTypeDescriptor) discriminatorType.getJavaTypeDescriptor() )
.toJdbcLiteral(
discriminatorValue,
factory.getJdbcServices().getDialect(),
factory.getWrapperOptions()
);
}
catch (ClassCastException cce) {
throw new MappingException("Illegal discriminator type: " + discriminatorType.getName() );
Expand Down
@@ -0,0 +1,58 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.persister.entity;

import java.util.TimeZone;

import org.hibernate.engine.jdbc.LobCreator;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.descriptor.WrapperOptions;
import org.hibernate.type.descriptor.jdbc.JdbcTypeDescriptor;

/**
*
* @author Christian Beikov
*/
public class SessionFactoryBasedWrapperOptions implements WrapperOptions {

private final SessionFactoryImplementor factory;

public SessionFactoryBasedWrapperOptions(SessionFactoryImplementor factory) {
this.factory = factory;
}

@Override
public SharedSessionContractImplementor getSession() {
throw new UnsupportedOperationException();
}

@Override
public boolean useStreamForLobBinding() {
return factory.getFastSessionServices().useStreamForLobBinding();
}

@Override
public int getPreferredSqlTypeCodeForBoolean() {
return factory.getFastSessionServices().getPreferredSqlTypeCodeForBoolean();
}

@Override
public LobCreator getLobCreator() {
return factory.getJdbcServices().getLobCreator( getSession() );
}

@Override
public JdbcTypeDescriptor remapSqlTypeDescriptor(JdbcTypeDescriptor jdbcTypeDescriptor) {
return jdbcTypeDescriptor;
}

@Override
public TimeZone getJdbcTimeZone() {
return factory.getSessionFactoryOptions().getJdbcTimeZone();
}
}
Expand Up @@ -63,6 +63,7 @@
import org.hibernate.type.BasicType;
import org.hibernate.type.DiscriminatorType;
import org.hibernate.type.Type;
import org.hibernate.type.descriptor.java.JavaTypeDescriptor;

/**
* The default implementation of the <tt>EntityPersister</tt> interface.
Expand Down Expand Up @@ -340,8 +341,12 @@ else if ( persistentClass.isDiscriminatorValueNotNull() ) {
discriminatorInsertable = persistentClass.isDiscriminatorInsertable() && !discrimValue.hasFormula();
try {
discriminatorValue = discriminatorType.stringToObject( persistentClass.getDiscriminatorValue() );
discriminatorSQLValue = ((DiscriminatorType) discriminatorType)
.objectToSQLString( discriminatorValue, dialect );
discriminatorSQLValue = discriminatorType.getJdbcTypeDescriptor().getJdbcLiteralFormatter( (JavaTypeDescriptor) discriminatorType.getJavaTypeDescriptor() )
.toJdbcLiteral(
discriminatorValue,
factory.getJdbcServices().getDialect(),
factory.getWrapperOptions()
);
}
catch (ClassCastException cce) {
throw new MappingException( "Illegal discriminator type: " + discriminatorType.getName() );
Expand Down
5 changes: 0 additions & 5 deletions hibernate-core/src/main/java/org/hibernate/sql/Insert.java
Expand Up @@ -11,7 +11,6 @@

import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.type.LiteralType;

/**
* An SQL <tt>INSERT</tt> statement
Expand Down Expand Up @@ -74,10 +73,6 @@ public Insert addColumn(String columnName, String valueExpression) {
return this;
}

public Insert addColumn(String columnName, Object value, LiteralType type) throws Exception {
return addColumn( columnName, type.objectToSQLString( value, dialect ) );
}

public Insert addIdentityColumn(String columnName) {
String value = dialect.getIdentityColumnSupport().getIdentityInsertString();
if ( value != null ) {
Expand Down
5 changes: 0 additions & 5 deletions hibernate-core/src/main/java/org/hibernate/sql/Update.java
Expand Up @@ -10,7 +10,6 @@
import java.util.Map;

import org.hibernate.dialect.Dialect;
import org.hibernate.type.LiteralType;

/**
* An SQL <tt>UPDATE</tt> statement
Expand Down Expand Up @@ -131,10 +130,6 @@ public Update addColumn(String columnName, String valueExpression) {
return this;
}

public Update addColumn(String columnName, Object value, LiteralType type) throws Exception {
return addColumn( columnName, type.objectToSQLString(value, dialect) );
}

public Update addWhereColumns(String[] columnNames) {
for ( String columnName : columnNames ) {
addWhereColumn( columnName );
Expand Down
Expand Up @@ -8,7 +8,6 @@

import java.math.BigInteger;

import org.hibernate.dialect.Dialect;
import org.hibernate.type.descriptor.java.BigIntegerTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.NumericTypeDescriptor;

Expand Down Expand Up @@ -38,11 +37,6 @@ protected boolean registerUnderJavaType() {
return true;
}

@Override
public String objectToSQLString(BigInteger value, Dialect dialect) {
return BigIntegerTypeDescriptor.INSTANCE.toString( value );
}

@Override
public BigInteger stringToObject(CharSequence string) {
return BigIntegerTypeDescriptor.INSTANCE.fromString( string );
Expand Down
Expand Up @@ -10,11 +10,9 @@
import java.sql.Types;

import org.hibernate.Incubating;
import org.hibernate.dialect.Dialect;
import org.hibernate.type.descriptor.java.BooleanTypeDescriptor;
import org.hibernate.type.descriptor.java.JavaTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.JdbcTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.JdbcTypeDescriptorIndicators;

/**
* A type that maps between {@link Types#BOOLEAN BOOLEAN} and {@link Boolean}
Expand Down Expand Up @@ -62,9 +60,4 @@ public Boolean stringToObject(CharSequence string) {
return fromString( string );
}

@Override
public String objectToSQLString(Boolean value, Dialect dialect) {
return dialect.toBooleanValueString( value );
}

}
6 changes: 0 additions & 6 deletions hibernate-core/src/main/java/org/hibernate/type/ByteType.java
Expand Up @@ -9,7 +9,6 @@
import java.io.Serializable;
import java.util.Comparator;

import org.hibernate.dialect.Dialect;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.descriptor.java.ByteTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.TinyIntTypeDescriptor;
Expand Down Expand Up @@ -52,11 +51,6 @@ public Class getPrimitiveClass() {
return byte.class;
}

@Override
public String objectToSQLString(Byte value, Dialect dialect) {
return toString( value );
}

@Override
public Byte stringToObject(CharSequence sequence) {
return fromString( sequence );
Expand Down
Expand Up @@ -8,7 +8,6 @@

import java.io.Serializable;

import org.hibernate.dialect.Dialect;
import org.hibernate.type.descriptor.java.CharacterTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.NCharTypeDescriptor;

Expand Down Expand Up @@ -40,16 +39,6 @@ public Class getPrimitiveClass() {
return char.class;
}

public String objectToSQLString(Character value, Dialect dialect) {
if ( value == '\'' ) {
return "''''";
}
final char[] chars = new char[3];
chars[0] = chars[2] = '\'';
chars[1] = value;
return new String( chars );
}

public Character stringToObject(CharSequence sequence) {
return fromString( sequence );
}
Expand Down
11 changes: 0 additions & 11 deletions hibernate-core/src/main/java/org/hibernate/type/CharacterType.java
Expand Up @@ -9,7 +9,6 @@
import java.io.Serializable;
import java.sql.Types;

import org.hibernate.dialect.Dialect;
import org.hibernate.type.descriptor.java.CharacterTypeDescriptor;
import org.hibernate.type.descriptor.jdbc.CharTypeDescriptor;

Expand Down Expand Up @@ -46,16 +45,6 @@ public Class getPrimitiveClass() {
return char.class;
}

public String objectToSQLString(Character value, Dialect dialect) {
if ( value == '\'' ) {
return "''''";
}
final char[] chars = new char[3];
chars[0] = chars[2] = '\'';
chars[1] = value;
return new String( chars );
}

public Character stringToObject(CharSequence sequence) {
return fromString( sequence );
}
Expand Down

0 comments on commit 81e66fa

Please sign in to comment.