You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/09/12 23:27:50 UTC
svn commit: r1169936 - in /tapestry/tapestry5/trunk/tapestry-hibernate/src:
main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
Author: hlship
Date: Mon Sep 12 21:27:49 2011
New Revision: 1169936
URL: http://svn.apache.org/viewvc?rev=1169936&view=rev
Log:
TAP5-1641: Encode transient instances as null
The ValueEncoder for Hibernate entity types should encode transient instances as null rather than throw an exception
Modified:
tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
Modified: tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java?rev=1169936&r1=1169935&r2=1169936&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java Mon Sep 12 21:27:49 2011
@@ -1,4 +1,4 @@
-// Copyright 2008, 2010 The Apache Software Foundation
+// Copyright 2008, 2010, 2011 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,8 +14,6 @@
package org.apache.tapestry5.internal.hibernate;
-import java.io.Serializable;
-
import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.ioc.internal.util.InternalUtils;
import org.apache.tapestry5.ioc.services.PropertyAccess;
@@ -26,6 +24,8 @@ import org.hibernate.mapping.PersistentC
import org.hibernate.mapping.Property;
import org.slf4j.Logger;
+import java.io.Serializable;
+
public final class HibernateEntityValueEncoder<E> implements ValueEncoder<E>
{
private final Class<E> entityClass;
@@ -41,7 +41,7 @@ public final class HibernateEntityValueE
private final Logger logger;
public HibernateEntityValueEncoder(Class<E> entityClass, PersistentClass persistentClass, Session session,
- PropertyAccess propertyAccess, TypeCoercer typeCoercer, Logger logger)
+ PropertyAccess propertyAccess, TypeCoercer typeCoercer, Logger logger)
{
this.entityClass = entityClass;
this.session = session;
@@ -63,9 +63,9 @@ public final class HibernateEntityValueE
Object id = propertyAdapter.get(value);
if (id == null)
- throw new IllegalStateException(String.format(
- "Entity %s has an %s property of null; this probably means that it has not been persisted yet.",
- value, idPropertyName));
+ {
+ return null;
+ }
return typeCoercer.coerce(id, String.class);
}
@@ -82,8 +82,7 @@ public final class HibernateEntityValueE
{
id = typeCoercer.coerce(clientValue, propertyAdapter.getType());
- }
- catch (Exception ex)
+ } catch (Exception ex)
{
throw new RuntimeException(String.format(
"Exception converting '%s' to instance of %s (id type for entity %s): %s", clientValue,
Modified: tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java?rev=1169936&r1=1169935&r2=1169936&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java Mon Sep 12 21:27:49 2011
@@ -1,4 +1,4 @@
-// Copyright 2008, 2010 The Apache Software Foundation
+// Copyright 2008, 2010, 2011 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -68,17 +68,7 @@ public class HibernateEntityValueEncoder
HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
- try
- {
- encoder.toClient(entity);
- unreachable();
- }
- catch (IllegalStateException ex)
- {
- assertMessageContains(ex,
- "Entity org.apache.tapestry5.internal.hibernate.SampleEntity",
- "has an id property of null");
- }
+ assertNull(encoder.toClient(entity));
verify();
}
@@ -129,8 +119,7 @@ public class HibernateEntityValueEncoder
{
encoder.toValue("xyz");
unreachable();
- }
- catch (RuntimeException ex)
+ } catch (RuntimeException ex)
{
assertMessageContains(
ex,