[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-5688) Migrate BytecodeProvider to be a Service
Steve Ebersole (JIRA)
noreply at atlassian.com
Sun Jan 1 23:46:19 EST 2012
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44808#comment-44808 ]
Steve Ebersole commented on HHH-5688:
-------------------------------------
Be a good opportunity to clean up the contracts a bit too. Some current thoughts:
1) Rename {{org.hibernate.bytecode.spi.BasicProxyFactory}} to {{org.hibernate.bytecode.spi.BasicProxyInstantiator}} and {{org.hibernate.proxy.ProxyFactory}} to {{org.hibernate.bytecode.spi.EntityProxyInstantiator}}, since really these contracts are about instantiating proxy instances.
2) Using a builder-style approach to both {{org.hibernate.bytecode.spi.BasicProxyInstantiator}} and {{org.hibernate.bytecode.spi.EntityProxyInstantiator}}
3) Replace {{BytecodeProvider#getProxyFactoryFactory}} with access to these builders.
Some illustrative code...
{code:title=BytecodeProvider.java|borderStyle=solid}
public interface BytecodeProvider {
...
public BasicProxyInstantiatorBuilder basicProxyInstantiatorBuilder();
public EntityProxyInstantiatorBuilder entityProxyInstantiatorBuilder();
}
{code}
{code:title=BasicProxyInstantiatorBuilder.java|borderStyle=solid}
public interface BasicProxyInstantiatorBuilder {
public BasicProxyInstantiator build();
public BasicProxyInstantiatorBuilder withSuperClass(Class proxySuperClass);
public BasicProxyInstantiatorBuilder withInterface(Class proxyInterface);
public BasicProxyInstantiatorBuilder withBaseName(String baseName);
public BasicProxyInstantiatorBuilder withSuffix(String suffix);
}
{code}
{code:title=BasicProxyInstantiator.java|borderStyle=solid}
public interface BasicProxyInstantiator {
public Object createInstance();
}
{code}
{code:title=EntityProxyInstantiatorBuilder.java|borderStyle=solid}
public interface EntityProxyInstantiatorBuilder {
public EntityProxyInstantiator build();
public EntityProxyInstantiatorBuilder withEntityName(String entityName);
public EntityProxyInstantiatorBuilder withEntityClass(Class entityClass);
public EntityProxyInstantiatorBuilder withInterface(Class entityInterface);
public EntityProxyInstantiatorBuilder withIdentifierGetterMethod(Method identifierGetterMethod);
public EntityProxyInstantiatorBuilder withIdentifierSetterMethod(Method identifierSetterMethod);
public EntityProxyInstantiatorBuilder withCompositeIdentifierType(CompositeType compositeIdentifierType);
}
{code}
{code:title=EntityProxyInstantiator.java|borderStyle=solid}
public interface EntityProxyInstantiator {
public HibernateProxy createInstance(Serializable id, SessionImplementor session);
}
{code}
> Migrate BytecodeProvider to be a Service
> ----------------------------------------
>
> Key: HHH-5688
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5688
> Project: Hibernate Core
> Issue Type: Task
> Components: core
> Reporter: Steve Ebersole
> Assignee: Steve Ebersole
> Labels: bytecode
> Fix For: 5.0.0
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> This is deeply dependent upon the metamodel redesign ( HHH-5661 ) completion. The {{BytecodeProvider}} selection is currently classloader-scoped (static) because of current metamodel design.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list