/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: Apache License, Version 2.0
* See the LICENSE file in the root directory or visit http://www.apache.org/licenses/LICENSE-2.0
*/
package org.hibernate.test.sqm.parser.criteria.tree.expression;
import java.io.Serializable;
import javax.persistence.TupleElement;
import org.hibernate.test.sqm.parser.criteria.tree.AbstractNode;
import org.hibernate.test.sqm.parser.criteria.tree.CriteriaBuilderImpl;
/**
* TODO : javadoc
*
* @author Steve Ebersole
*/
public abstract class AbstractTupleElement<X>
extends AbstractNode
implements TupleElement<X>, Serializable {
private final Class originalJavaType;
private Class<X> javaType;
private String alias;
protected AbstractTupleElement(CriteriaBuilderImpl criteriaBuilder, Class<X> javaType) {
super( criteriaBuilder );
this.originalJavaType = javaType;
this.javaType = javaType;
}
@Override
public Class<X> getJavaType() {
return javaType;
}
@SuppressWarnings({ "unchecked" })
protected void resetJavaType(Class targetType) {
this.javaType = targetType;
}
@Override
public String getAlias() {
return alias;
}
/**
* Protected access to define the alias.
*
* @param alias The alias to use.
*/
protected void setAlias(String alias) {
this.alias = alias;
}
}