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 2005/10/07 16:54:49 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/broker Identity.java
arminw 2005/10/07 07:54:49
Modified: src/java/org/apache/ojb/broker/cache
CachingStrategyTwoLevelImpl.java
ObjectCacheDefaultImpl.java
src/java/org/apache/ojb/broker/metadata ClassDescriptor.java
src/java/org/apache/ojb/broker/util/logging
LoggerFactoryImpl.java
src/java/org/apache/ojb/broker/util BrokerHelper.java
src/java/org/apache/ojb/broker Identity.java
Log:
code optimization
Revision Changes Path
1.5 +11 -7 db-ojb/src/java/org/apache/ojb/broker/cache/CachingStrategyTwoLevelImpl.java
Index: CachingStrategyTwoLevelImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/cache/CachingStrategyTwoLevelImpl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- CachingStrategyTwoLevelImpl.java 30 Sep 2005 21:45:15 -0000 1.4
+++ CachingStrategyTwoLevelImpl.java 7 Oct 2005 14:54:48 -0000 1.5
@@ -127,16 +127,19 @@
// perform main object values
FieldDescriptor[] flds = cld.getFieldDescriptor(true);
FieldDescriptor fld;
- for(int i = 0; i < flds.length; i++)
+ Object source = entry.getObject();
+ int length = flds.length;
+ for(int i = 0; i < length; i++)
{
fld = flds[i];
// get the value
- Object value = fld.getPersistentField().get(entry.getObject());
+ Object value = fld.getPersistentField().get(source);
// convert value to a supported sql type
value = fld.getFieldConversion().javaToSql(value);
// copy the sql type
value = fld.getJdbcType().getFieldType().copy(value);
- target.put(fld.getPersistentField().getName(), value);
+ // only need to cache non-null values
+ if(value != null) target.put(fld.getPersistentField().getName(), value);
}
target.put(CLASS_NAME_STR, entry.getObject().getClass().getName());
return new ObjectEntryImpl(target);
@@ -181,14 +184,15 @@
{
Object[] result = new Object[fields.length];
- for (int idx = 0; idx < fields.length; idx++)
+ int length = fields.length;
+ for (int idx = 0; idx < length; idx++)
{
FieldDescriptor field = fields[idx];
// read the field value
Object value = source.get(field.getPersistentField().getName());
// copy the field value
- value = field.getJdbcType().getFieldType().copy(value);
+ if(value != null) value = field.getJdbcType().getFieldType().copy(value);
// now make a field-conversion to java-type, because we only
// the sql type of the field
result[idx] = field.getFieldConversion().sqlToJava(value);
@@ -224,7 +228,7 @@
static final class ObjectEntryImpl implements ObjectEntry
{
- Object obj;
+ final Object obj;
public ObjectEntryImpl(Object obj)
{
1.32 +10 -10 db-ojb/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java
Index: ObjectCacheDefaultImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- ObjectCacheDefaultImpl.java 25 Sep 2005 01:45:06 -0000 1.31
+++ ObjectCacheDefaultImpl.java 7 Oct 2005 14:54:48 -0000 1.32
@@ -149,13 +149,13 @@
*/
public void clear()
{
- processQueue();
objectTable.clear();
}
public boolean cacheIfNew(Identity oid, Object obj)
{
boolean result = false;
+ // perform queue before check for key in objectTable
processQueue();
synchronized(dummy)
{
@@ -176,7 +176,7 @@
*/
public void cache(Identity oid, Object obj)
{
- processQueue();
+ //processQueue();
if ((obj != null))
{
CacheEntry entry = buildEntry(obj, oid);
@@ -218,7 +218,7 @@
*/
public void remove(Identity oid)
{
- processQueue();
+ //processQueue();
if (oid != null)
{
synchronized (dummy)
@@ -247,11 +247,11 @@
{
if(useSoftReferences)
{
- return new CacheEntrySoft(obj, oid, queue);
+ return new CacheEntrySoft(obj, oid, timeout, queue);
}
else
{
- return new CacheEntryHard(obj, oid);
+ return new CacheEntryHard(obj, oid, timeout);
}
}
@@ -277,12 +277,12 @@
long getLifetime();
}
- class CacheEntrySoft extends SoftReference implements CacheEntry
+ final static class CacheEntrySoft extends SoftReference implements CacheEntry
{
private final long lifetime;
private final Identity oid;
- public CacheEntrySoft(Object object, final Identity k, final ReferenceQueue q)
+ public CacheEntrySoft(Object object, final Identity k, long timeout, final ReferenceQueue q)
{
super(object, q);
oid = k;
@@ -318,13 +318,13 @@
}
}
- class CacheEntryHard implements CacheEntry
+ final static class CacheEntryHard implements CacheEntry
{
private final long lifetime;
private final Identity oid;
private Object obj;
- public CacheEntryHard(Object object, final Identity k)
+ public CacheEntryHard(Object object, final Identity k, long timeout)
{
obj = object;
oid = k;
1.115 +36 -23 db-ojb/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java
Index: ClassDescriptor.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -r1.114 -r1.115
--- ClassDescriptor.java 3 Oct 2005 19:23:25 -0000 1.114
+++ ClassDescriptor.java 7 Oct 2005 14:54:48 -0000 1.115
@@ -61,13 +61,16 @@
public final class ClassDescriptor extends DescriptorBase
implements Serializable, XmlCapable
{
- private String persistentFieldClassName;
-
- private static final long serialVersionUID = -5212253607374173965L;
+ private static final long serialVersionUID = -5212253607374173965L;
public static final String DYNAMIC_STR = "dynamic";
public static final String OJB_CONCRETE_CLASS = "ojbConcreteClass";
private static final Class[] NO_PARAMS = {};
+ private static final FieldDescriptor[] EMPTY_FIELDDESCRIPTOR = {};
+
+ private boolean useObjectFactory;
+
+ private String persistentFieldClassName;
//---------------------------------------------------------------
/**
@@ -139,7 +142,7 @@
*/
private String m_TableName = null;
// private Vector superPersistentFieldDescriptors = null;
- /** The class name of the row reader specifically configured for this class */
+ /** The class name of the row reader specifically configured for this class */
private String rowReaderClassName = null;
/**
* the class that this class extends
@@ -447,8 +450,8 @@
{
ObjectReferenceDescriptor ord = (ObjectReferenceDescriptor)
getObjectReferenceDescriptorsNameMap().get(name);
-
- //
+
+ //
// BRJ: if the ReferenceDescriptor is not found
// look in the ClassDescriptor referenced by 'super' for it
//
@@ -483,7 +486,7 @@
/**
* Returns the reference to the enclosing persistent class if any.
- *
+ *
* @return The reference or <code>null</code> if there is no such reference
*/
public EnclosingClassReferenceDescriptor getEnclosingClassReferenceDescriptor()
@@ -496,7 +499,7 @@
}
});
}
-
+
/**
* Get an CollectionDescriptor by name BRJ
* @param name
@@ -511,7 +514,7 @@
CollectionDescriptor cod = (CollectionDescriptor) getCollectionDescriptorNameMap().get(name);
- //
+ //
// BRJ: if the CollectionDescriptor is not found
// look in the ClassDescriptor referenced by 'super' for it
//
@@ -541,7 +544,7 @@
}
m_collectionDescriptorNameMap = nameMap;
}
-
+
return m_collectionDescriptorNameMap;
}
@@ -690,7 +693,7 @@
}
return proxyClass;
}
-
+
public boolean isDynamicProxy()
{
return DYNAMIC_STR.equalsIgnoreCase(proxyClassName);
@@ -968,7 +971,7 @@
/**
* Returns the fields used as arguments for creating instances for this
* class descriptor.
- *
+ *
* @return The fields
*/
public FieldDescriptor[] getCreationArgumentFields()
@@ -976,11 +979,11 @@
if (getCreationDescriptor().hasFieldParameters())
{
ArrayList result = new ArrayList();
-
+
for (Iterator it = getCreationDescriptor().getParameters().iterator(); it.hasNext();)
{
CreationParameter param = (CreationParameter)it.next();
-
+
if (!param.isConstantValue())
{
result.add(getFieldDescriptorByName(param.getFieldName()));
@@ -990,7 +993,7 @@
}
else
{
- return new FieldDescriptor[0];
+ return EMPTY_FIELDDESCRIPTOR;
}
}
@@ -1012,7 +1015,7 @@
for (Iterator it = getCreationDescriptor().getParameters().iterator(); it.hasNext();)
{
CreationParameter param = (CreationParameter)it.next();
-
+
if (!param.isConstantValue())
{
result.remove(getFieldDescriptorByName(param.getFieldName()));
@@ -1182,9 +1185,9 @@
if (processedSegment.length() > 0)
{
processedSegment.append(".");
- }
- processedSegment.append(segment);
-
+ }
+ processedSegment.append(segment);
+
// look for 1:1 or n:1 Relationship
ord = cld.getObjectReferenceDescriptorByName(segment);
if (ord == null)
@@ -1196,7 +1199,7 @@
if (ord != null)
{
// BRJ : look for hints for the processed segment
- // ie: ref pointng to ClassA and ref.ref pointing to ClassC
+ // ie: ref pointng to ClassA and ref.ref pointing to ClassC
List hintClasses = (List) pathHints.get(processedSegment.toString());
if (hintClasses != null && hintClasses.get(0) != null)
{
@@ -1519,7 +1522,7 @@
/**
* Returns the creation descriptor for this class.
- *
+ *
* @return The creation descriptor
*/
public synchronized CreationDescriptor getCreationDescriptor()
@@ -1533,7 +1536,7 @@
/**
* Sets the creation descriptor for this class.
- *
+ *
* @param creationDescriptor The creation descriptor
*/
public synchronized void setCreationDescriptor(CreationDescriptor creationDescriptor)
@@ -1541,6 +1544,16 @@
this.creationDescriptor = creationDescriptor;
}
+ public boolean useObjectFactory()
+ {
+ return useObjectFactory;
+ }
+
+ public void setUseObjectFactory(boolean value)
+ {
+ this.useObjectFactory = value;
+ }
+
//---------------------------------------------------------------
/**
* Change the descriptor for the insert procedure/function.
@@ -2117,4 +2130,4 @@
return getIsolationLevel().getName();
}
-}
+}
\ No newline at end of file
1.22 +25 -28 db-ojb/src/java/org/apache/ojb/broker/util/logging/LoggerFactoryImpl.java
Index: LoggerFactoryImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/logging/LoggerFactoryImpl.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- LoggerFactoryImpl.java 18 Dec 2004 13:42:52 -0000 1.21
+++ LoggerFactoryImpl.java 7 Oct 2005 14:54:48 -0000 1.22
@@ -122,36 +122,33 @@
*/
public Logger getLogger(String loggerName)
{
+ Logger logger;
//lookup in the cache first
- if (cache.containsKey(loggerName))
- {
- //getBootLogger().debug("Returning cached version of Logger[" + loggerName + "]");
- return (Logger) cache.get(loggerName);
- }
- //getBootLogger().debug("Logger[" + loggerName + "] not cached");
-
- Logger logger = null;
- Class loggerClass = null;
+ logger = (Logger) cache.get(loggerName);
- try
+ if(logger == null)
{
- // get the configuration (not from the configurator because this is independent)
- LoggingConfiguration conf = getConfiguration();
+ Class loggerClass = null;
+ try
+ {
+ // get the configuration (not from the configurator because this is independent)
+ LoggingConfiguration conf = getConfiguration();
- loggerClass = conf.getLoggerClass();
- getBootLogger().debug("Using logger class " + loggerClass + " for " + loggerName);
- logger = (Logger) ClassHelper.newInstance(loggerClass,
- new Class[] { String.class, LoggingConfiguration.class },
- new Object[] { loggerName, conf });
+ loggerClass = conf.getLoggerClass();
+ getBootLogger().debug("Using logger class " + loggerClass + " for " + loggerName);
+ logger = (Logger) ClassHelper.newInstance(loggerClass,
+ new Class[] { String.class, LoggingConfiguration.class },
+ new Object[] { loggerName, conf });
- //cache it so we can get it faster the next time
- cache.put(loggerName, logger);
- }
- catch (Throwable t)
- {
- logger = getBootLogger();
- logger.error("[" + this.getClass().getName()
- + "] Could not set logger for class " + (loggerClass != null ? loggerClass.getName() : "'null'"), t);
+ //cache it so we can get it faster the next time
+ cache.put(loggerName, logger);
+ }
+ catch (Throwable t)
+ {
+ logger = getBootLogger();
+ logger.error("[" + this.getClass().getName()
+ + "] Could not set logger for class " + (loggerClass != null ? loggerClass.getName() : "'null'"), t);
+ }
}
return logger;
}
1.85 +4 -3 db-ojb/src/java/org/apache/ojb/broker/util/BrokerHelper.java
Index: BrokerHelper.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/BrokerHelper.java,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- BrokerHelper.java 1 Oct 2005 13:48:50 -0000 1.84
+++ BrokerHelper.java 7 Oct 2005 14:54:49 -0000 1.85
@@ -474,8 +474,9 @@
*/
public Object[] extractValueArray(ValueContainer[] containers)
{
- Object[] result = new Object[containers.length];
- for(int i = 0; i < containers.length; i++)
+ int length = containers.length;
+ Object[] result = new Object[length];
+ for(int i = 0; i < length; i++)
{
result[i] = containers[i].getValue();
}
1.46 +2 -2 db-ojb/src/java/org/apache/ojb/broker/Identity.java
Index: Identity.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/Identity.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- Identity.java 30 Sep 2005 21:45:14 -0000 1.45
+++ Identity.java 7 Oct 2005 14:54:49 -0000 1.46
@@ -399,7 +399,7 @@
iTotal = iTotal * iConstant + (obj != null ? obj.hashCode() : 0);
}
}
- iTotal = iTotal * iConstant + getObjectsTopLevelClass().hashCode();
+ iTotal = iTotal * iConstant + m_objectsTopLevelClass.hashCode();
m_hashCode = new Integer(iTotal);
}
return m_hashCode.intValue();
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org