You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2004/01/28 21:04:50 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/broker/metadata/fieldaccess AnonymousPersistentField.java AbstractPersistentField.java
arminw 2004/01/28 12:04:50
Modified: src/java/org/apache/ojb/broker/metadata/fieldaccess
AnonymousPersistentField.java
AbstractPersistentField.java
Log:
minor improvement
Revision Changes Path
1.11 +6 -10 db-ojb/src/java/org/apache/ojb/broker/metadata/fieldaccess/AnonymousPersistentField.java
Index: AnonymousPersistentField.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/fieldaccess/AnonymousPersistentField.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- AnonymousPersistentField.java 27 Jan 2004 19:42:45 -0000 1.10
+++ AnonymousPersistentField.java 28 Jan 2004 20:04:50 -0000 1.11
@@ -71,8 +71,6 @@
{
private static final long serialVersionUID = 3989863424358352941L;
- private static final String NULL_VALUE = "ojbNullValue";
-
private transient Map fkCache;
private String fieldname;
@@ -124,19 +122,17 @@
if (fkCache == null)
{
fkCache = new ReferenceMap (ReferenceMap.WEAK, ReferenceMap.HARD, 10, 0.75f, true);
- // fkCache = new WeakHashMap();
}
- // thus we can't put 'null' as value, we use a replacement
- if(value == null) value = NULL_VALUE;
- fkCache.put(key, value);
+ if (value != null)
+ fkCache.put(key, value);
+ else
+ fkCache.remove (key);
}
}
protected Object getFromFieldCache(Object key)
{
- Object obj = (key != null && fkCache != null) ? fkCache.get(key) : null;
- if(obj == NULL_VALUE) obj = null;
- return obj;
+ return (key != null && fkCache != null) ? fkCache.get(key) : null;
}
/**
1.12 +18 -13 db-ojb/src/java/org/apache/ojb/broker/metadata/fieldaccess/AbstractPersistentField.java
Index: AbstractPersistentField.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/fieldaccess/AbstractPersistentField.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- AbstractPersistentField.java 23 Jan 2004 23:45:38 -0000 1.11
+++ AbstractPersistentField.java 28 Jan 2004 20:04:50 -0000 1.12
@@ -282,11 +282,14 @@
{
Object result = null;
int index = aFieldName.indexOf(PATH_TOKEN);
+ // make sure not to use a proxy object
+ Object realObj = ProxyHelper.getRealObject(obj);
+ Class realClass = ProxyHelper.getRealClass(obj);
if (index >= 0)
{
String name = aFieldName.substring(0, index);
- PersistentField pField = createInternPersistentField(ProxyHelper.getRealClass(obj), name);
- Object attrib = pField.get(ProxyHelper.getRealObject(obj));
+ PersistentField pField = createInternPersistentField(realClass, name);
+ Object attrib = pField.get(realObj);
if (attrib != null)
{
@@ -296,8 +299,8 @@
}
else
{
- PersistentField pField = createInternPersistentField(ProxyHelper.getRealClass(obj), aFieldName);
- result = pField.get(ProxyHelper.getRealObject(obj));
+ PersistentField pField = createInternPersistentField(realClass, aFieldName);
+ result = pField.get(realObj);
}
return result;
}
@@ -311,11 +314,13 @@
protected void setNestedObject(Object obj, String fieldName, Object value)
{
int index = fieldName.indexOf(PATH_TOKEN);
+ Class realClass = ProxyHelper.getRealClass(obj);
+ Object realObj = ProxyHelper.getRealObject(obj);
if (index >= 0)
{
String name = fieldName.substring(0, index);
- PersistentField pField = createInternPersistentField(ProxyHelper.getRealClass(obj), name);
- Object attrib = pField.get(ProxyHelper.getRealObject(obj));
+ PersistentField pField = createInternPersistentField(realClass, name);
+ Object attrib = pField.get(realObj);
if (attrib != null || value != null)
{
@@ -328,12 +333,12 @@
catch (InstantiationException e)
{
throw new MetadataException("Error instantiate field: "
- + name + " in object:" + obj.getClass().getName(), e);
+ + name + " in object:" + realClass.getName(), e);
}
catch (IllegalAccessException e)
{
throw new MetadataException("Error getting field:"
- + name + " in object:" + obj.getClass().getName(), e);
+ + name + " in object:" + realClass.getName(), e);
}
/*
@@ -342,11 +347,11 @@
*/
if (pField instanceof AbstractPersistentField)
{
- ((AbstractPersistentField) pField).doSet(ProxyHelper.getRealObject(obj), attrib);
+ ((AbstractPersistentField) pField).doSet(realObj, attrib);
}
else
{
- pField.set(ProxyHelper.getRealObject(obj), attrib);
+ pField.set(realObj, attrib);
}
}
String nestedName = fieldName.substring(index + PATH_TOKEN.length());
@@ -355,8 +360,8 @@
}
else
{
- PersistentField pField = createInternPersistentField(ProxyHelper.getRealClass(obj), fieldName);
- pField.set(ProxyHelper.getRealObject(obj), value);
+ PersistentField pField = createInternPersistentField(realClass, fieldName);
+ pField.set(realObj, value);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org