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 2006/07/15 16:22:36 UTC
svn commit: r422233 [4/4] - in /db/ojb/trunk/src/java/org/apache/ojb/broker:
./ metadata/ metadata/torque/ platforms/ query/ util/ util/dbhandling/
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java Sat Jul 15 07:22:34 2006
@@ -42,8 +42,6 @@
* PersistenceBroker broker = PersistenceBrokerFactory.createPersistenceBroker();
* Collection col = broker.getCollectionByQuery(qry);
*
- * Creation date: (24.01.2001 21:45:46)
- * @author Thomas Mahler
* @version $Id$
*/
public class QueryByCriteriaImpl extends AbstractQueryImpl implements QueryByCriteria
@@ -248,12 +246,11 @@
public String toString()
{
StringBuffer buf = new StringBuffer("QueryByCriteria from ");
- buf.append(getSearchClass() + " ");
+ buf.append(getSearchClass()).append(" ");
if (getCriteria() != null && !getCriteria().isEmpty())
{
- buf.append(" where " + getCriteria());
+ buf.append(" where ").append(getCriteria());
}
-
return buf.toString();
}
@@ -338,9 +335,6 @@
}
}
- /* (non-Javadoc)
- * @see org.apache.ojb.broker.query.Query#getGroupBy()
- */
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#getGroupBy()
*/
@@ -460,9 +454,6 @@
m_prefetchedRelationships.add(aName);
}
- /* (non-Javadoc)
- * @see org.apache.ojb.broker.query.Query#getPrefetchedRelationships()
- */
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#getPrefetchedRelationships()
*/
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/query/ReportQuery.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/ReportQuery.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/ReportQuery.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/ReportQuery.java Sat Jul 15 07:22:34 2006
@@ -43,8 +43,8 @@
* @return Returns an int[] of Jdbc-Types
* @see java.sql.Types
*/
- int[] getJdbcTypes();
-
+ int[] getJdbcTypes();
+
/**
* Sets the Jdbc-Types of the columns used for the Report.
* If null the Jdbc-Type is taken from the ResultSet
@@ -58,13 +58,12 @@
* @return Returns a String[]
*/
String[] getJoinAttributes();
-
+
/**
* Sets the additional attributes used for building the Join.
* These Attributes are not appended to the select-clause.
* @param joinAttributes The joinAttributes to set.
*/
void setJoinAttributes(String[] joinAttributes);
-
}
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/util/BrokerHelper.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/util/BrokerHelper.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/util/BrokerHelper.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/util/BrokerHelper.java Sat Jul 15 07:22:34 2006
@@ -177,6 +177,54 @@
}
/**
+ * Get the values of the fk-target-fields for an obj.
+ * @param rds
+ * @param objOrProxy
+ * @throws PersistenceBrokerException
+ */
+ public ValueContainer[] getFkTargetValuesForObject(ObjectReferenceDescriptor rds, Object objOrProxy, boolean convertToSql) throws PersistenceBrokerException
+ {
+ Class refClass = m_broker.getProxyFactory().getRealClass(objOrProxy);
+ ClassDescriptor refCld = m_broker.getClassDescriptor(refClass);
+ FieldDescriptor pkFd[] = refCld.getPkFields();
+ FieldDescriptor targetFd[] = rds.getForeignKeyTargetFieldDescriptors(refCld);
+
+ // use the values of the key-fields
+ if (targetFd.length == 0 || Arrays.equals(pkFd, targetFd))
+ {
+ return getKeyValues(refCld, objOrProxy, convertToSql);
+ }
+
+ // use the values of the target-fields
+ Object obj = m_broker.getProxyFactory().getRealObject(objOrProxy);
+ return getValuesForObject(targetFd, obj, convertToSql);
+ }
+
+ /**
+ * Get the values of the fk-fields for an obj.
+ * @param rds
+ * @param objOrProxy
+ * @throws PersistenceBrokerException
+ */
+ public ValueContainer[] getFkValuesForObject(ObjectReferenceDescriptor rds, Object objOrProxy, boolean convertToSql) throws PersistenceBrokerException
+ {
+ Class refClass = m_broker.getProxyFactory().getRealClass(objOrProxy);
+ ClassDescriptor refCld = m_broker.getClassDescriptor(refClass);
+ FieldDescriptor pkFd[] = refCld.getPkFields();
+ FieldDescriptor targetFd[] = rds.getForeignKeyFieldDescriptors(refCld);
+
+ // use the values of the key-fields
+ if (targetFd.length == 0 || Arrays.equals(pkFd, targetFd))
+ {
+ return getKeyValues(refCld, objOrProxy, convertToSql);
+ }
+
+ // use the values of the target-fields
+ Object obj = m_broker.getProxyFactory().getRealObject(objOrProxy);
+ return getValuesForObject(targetFd, obj, convertToSql);
+ }
+
+ /**
* Return primary key values of given Identity object.
*
* @param cld
@@ -239,42 +287,11 @@
}
/**
- * Decide if the given object value represents 'null'.<br/>
- *
- * - If given value is 'null' itself, true will be returned<br/>
- *
- * - If given value is instance of Number with value 0 and the field-descriptor
- * represents a primitive field, true will be returned<br/>
- *
- * - If given value is instance of String with length 0 and the field-descriptor
- * is a primary key, true will be returned<br/>
+ * Decide if the given object value represents 'null'.
*/
public boolean representsNull(FieldDescriptor fld, Object aValue)
{
- if(aValue == null) return true;
-
- boolean result = false;
- if(((aValue instanceof Number) && (((Number) aValue).longValue() == 0)))
- {
- Class type = fld.getPersistentField().getType();
- /*
- AnonymousPersistentFields will *always* have a null type according to the
- javadoc comments in AnonymousPersistentField.getType() and never represents
- a primitve java field with value 0, thus we return always 'false' in this case.
- (If the value object is null, the first check above return true)
- */
- if(type != null)
- {
- result = type.isPrimitive();
- }
- }
- // TODO: Do we need this check?? String could be nullified, why should we assume
- // it's 'null' on empty string?
- else if((aValue instanceof String) && (((String) aValue).length() == 0))
- {
- result = fld.isPrimaryKey();
- }
- return result;
+ return fld.getNullCheck().representsNull(fld, aValue);
}
/**
@@ -335,58 +352,6 @@
throw new PersistenceBrokerException("Could not get key value", e);
}
}
-
- /**
- * Get the values of the fk-target-fields for an obj.
- * @param rds
- * @param objOrProxy
- * @throws PersistenceBrokerException
- */
- public ValueContainer[] getFkTargetValuesForObject(ObjectReferenceDescriptor rds, Object objOrProxy, boolean convertToSql) throws PersistenceBrokerException
- {
- Class refClass = m_broker.getProxyFactory().getRealClass(objOrProxy);
- ClassDescriptor refCld = m_broker.getClassDescriptor(refClass);
- FieldDescriptor pkFd[] = refCld.getPkFields();
- FieldDescriptor targetFd[] = rds.getForeignKeyTargetFieldDescriptors(refCld);
-
- // use the values of the key-fields
- if (targetFd.length == 0 || Arrays.equals(pkFd,targetFd))
- {
- return getKeyValues(refCld, objOrProxy, convertToSql);
- }
- // use the values of the target-fields
- else
- {
- Object obj = m_broker.getProxyFactory().getRealObject(objOrProxy);
- return getValuesForObject(targetFd, obj, convertToSql);
- }
- }
-
- /**
- * Get the values of the fk-fields for an obj.
- * @param rds
- * @param objOrProxy
- * @throws PersistenceBrokerException
- */
- public ValueContainer[] getFkValuesForObject(ObjectReferenceDescriptor rds, Object objOrProxy, boolean convertToSql) throws PersistenceBrokerException
- {
- Class refClass = m_broker.getProxyFactory().getRealClass(objOrProxy);
- ClassDescriptor refCld = m_broker.getClassDescriptor(refClass);
- FieldDescriptor pkFd[] = refCld.getPkFields();
- FieldDescriptor targetFd[] = rds.getForeignKeyFieldDescriptors(refCld);
-
- // use the values of the key-fields
- if (targetFd.length == 0 || Arrays.equals(pkFd,targetFd))
- {
- return getKeyValues(refCld, objOrProxy, convertToSql);
- }
- // use the values of the target-fields
- else
- {
- Object obj = m_broker.getProxyFactory().getRealObject(objOrProxy);
- return getValuesForObject(targetFd, obj, convertToSql);
- }
- }
/**
* Get the values of the fields for an obj.
@@ -395,7 +360,7 @@
* @param obj
* @throws PersistenceBrokerException
*/
- public ValueContainer[] getValuesForObject(FieldDescriptor[] fields, Object obj, boolean convertToSql) throws PersistenceBrokerException
+ public ValueContainer[] getValuesForObject(FieldDescriptor[] fields, Object obj, boolean convertToSql, boolean assignAutoincrement) throws PersistenceBrokerException
{
ValueContainer[] result = new ValueContainer[fields.length];
@@ -412,7 +377,7 @@
- field represents a 'null' value, is nullified
and generate a new value
*/
- if(fd.isAutoIncrement() && representsNull(fd, cv))
+ if(assignAutoincrement && fd.isAutoIncrement() && representsNull(fd, cv))
{
/*
setAutoIncrementValue returns a value that is
@@ -434,6 +399,11 @@
return result;
}
+ public ValueContainer[] getValuesForObject(FieldDescriptor[] fields, Object obj, boolean convertToSql) throws PersistenceBrokerException
+ {
+ return getValuesForObject(fields, obj, convertToSql, false);
+ }
+
/**
* Returns an array containing values for all non PK field READ/WRITE attributes of the object
* based on the specified {@link org.apache.ojb.broker.metadata.ClassDescriptor}.
@@ -468,15 +438,13 @@
/**
* Extract an value array of the given {@link ValueContainer} array.
- *
- * @param containers The array of {@link org.apache.ojb.broker.core.ValueContainer}.
- * @return The extracted object array.
+ * @param containers
+ * @return An object array
*/
public Object[] extractValueArray(ValueContainer[] containers)
{
- int length = containers.length;
- Object[] result = new Object[length];
- for(int i = 0; i < length; i++)
+ Object[] result = new Object[containers.length];
+ for(int i = 0; i < containers.length; i++)
{
result[i] = containers[i].getValue();
}
@@ -562,7 +530,10 @@
}
/**
- * Create a Count-Query for QueryBySQL.
+ * Create a Count-Query for QueryBySQL
+ *
+ * @param aQuery
+ * @return The count query
*/
private Query getQueryBySqlCount(QueryBySQL aQuery)
{
@@ -614,6 +585,7 @@
// SELECT count(distinct (row1 + row2 + row3)) ms sql-server
//
FieldDescriptor[] pkFields = m_broker.getClassDescriptor(searchClass).getPkFields();
+
String[] keyColumns = new String[pkFields.length];
if(pkFields.length > 1)
@@ -789,14 +761,63 @@
}
/**
- * Unlink the specified reference from this object.
+ * This method concatenate the main object and the specified reference
+ * object (1:1 reference a referenced object, 1:n and m:n reference a
+ * collection of referenced objects) by hand. This method is needed when
+ * in the reference metadata definitions the auto-xxx setting was disabled.
* More info see OJB doc.
+ *
* @param obj Object with reference
* @param attributeName field name of the reference
+ * @param reference The referenced object
+ * @param insert flag signals insert operation
+ * @return true if the specified reference was found and linking was successful
*/
- public boolean unlink(Object obj, String attributeName)
+ public boolean link(Object obj, String attributeName, Object reference, boolean insert)
{
- return linkOrUnlink(false, obj, attributeName, false);
+ ClassDescriptor cld = m_broker.getDescriptorRepository().getDescriptorFor(m_broker.getProxyFactory().getRealClass(obj));
+ ObjectReferenceDescriptor ord;
+ boolean match = false;
+ // first look for reference then for collection
+ ord = cld.getObjectReferenceDescriptorByName(attributeName);
+ if (ord != null)
+ {
+ linkOrUnlinkOneToOne(true, obj, ord, insert);
+ match = true;
+ }
+ else
+ {
+ CollectionDescriptor cod = cld.getCollectionDescriptorByName(attributeName);
+ if (cod != null)
+ {
+ linkOrUnlinkXToMany(true, obj, cod, insert);
+ match = true;
+ }
+ }
+ return match;
+ }
+
+ /**
+ * Unlink the specified reference object.
+ * More info see OJB doc.
+ * @param source The source object with the specified reference field.
+ * @param attributeName The field name of the reference to unlink.
+ * @param target The referenced object to unlink.
+ */
+ public boolean unlink(Object source, String attributeName, Object target)
+ {
+ return linkOrUnlink(false, source, attributeName, false);
+ }
+
+ /**
+ * Unlink all referenced objects of the specified field.
+ * More info see OJB doc.
+ * @param source The source object with the specified reference.
+ * @param attributeName The field name of the reference to unlink.
+ */
+ public boolean unlink(Object source, String attributeName)
+ {
+ return linkOrUnlink(false, source, attributeName, false);
}
/**
@@ -877,7 +898,11 @@
object. If the reference was declared within an interface (should never happen) we
only can use the descriptor of the real class.
*/
- ClassDescriptor cld = m_broker.getDescriptorRepository().getDescriptorFor(m_broker.getProxyFactory().getRealClass(obj));
+ ClassDescriptor cld = ord.getClassDescriptor();
+ if(!cld.isMappedToTable())
+ {
+ cld = m_broker.getDescriptorRepository().getDescriptorFor(m_broker.getProxyFactory().getRealClass(obj));
+ }
if (doLink)
{
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/util/ClassHelper.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/util/ClassHelper.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/util/ClassHelper.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/util/ClassHelper.java Sat Jul 15 07:22:34 2006
@@ -16,12 +16,12 @@
*/
import java.io.InputStream;
-import java.io.Reader;
import java.io.InputStreamReader;
+import java.io.Reader;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.lang.reflect.Field;
-import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.net.URL;
@@ -30,7 +30,6 @@
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException;
import org.apache.ojb.broker.metadata.CreationDescriptor;
-import org.apache.commons.lang.ClassUtils;
/**
* Helper class with static methods for java class, method, and field handling.
@@ -47,7 +46,7 @@
/** The class loader currently used by OJB */
private static ClassLoader _classLoader = null;
/** A mutex for changing the class loader */
- private static Object _mutex = new Object();
+ private static final Object _mutex = new Object();
/**
* Prevents instatiation.
@@ -259,7 +258,7 @@
if (makeAccessible)
{
con = target.getDeclaredConstructor(types);
- if (makeAccessible && !con.isAccessible())
+ if (!con.isAccessible())
{
con.setAccessible(true);
}
@@ -438,7 +437,7 @@
*/
public static Object buildNewObjectInstance(ClassDescriptor cld, Object[] args, Object enclosingObj)
{
- Object result = null;
+ Object result;
// If either the factory class and/or factory method is null,
// just follow the normal code path and create via constructor
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/util/ExceptionHelper.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/util/ExceptionHelper.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/util/ExceptionHelper.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/util/ExceptionHelper.java Sat Jul 15 07:22:34 2006
@@ -40,17 +40,77 @@
* Method which support the conversion of {@link java.sql.SQLException} to
* OJB's runtime exception (with additional message details).
*
+ * @param message The error message to use, if <em>null</em> a standard message is used.
+ * @param ex The exception to convert (mandatory).
+ * @param sql The used sql-statement or <em>null</em>.
+ * @param logger The {@link org.apache.ojb.broker.util.logging.Logger} to log an detailed message
+ * to the specified {@link org.apache.ojb.broker.util.logging.Logger} or <em>null</em> to skip logging message.
+ * @return A new created {@link org.apache.ojb.broker.PersistenceBrokerSQLException} based on the specified
+ * arguments.
+ */
+ public static PersistenceBrokerSQLException generateException(String message, SQLException ex,
+ String sql, Logger logger)
+ {
+ return generateException(message, ex, sql, null, null, logger, null);
+ }
+
+ /**
+ * Method which support the conversion of {@link java.sql.SQLException} to
+ * OJB's runtime exception (with additional message details).
+ *
+ * @param ex The exception to convert (mandatory).
+ * @param sql The used sql-statement or <em>null</em>.
+ * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target object or <em>null</em>.
+ * @param logger The {@link org.apache.ojb.broker.util.logging.Logger} to log an detailed message
+ * to the specified {@link org.apache.ojb.broker.util.logging.Logger} or <em>null</em> to skip logging message.
+ * @param obj The target object or <em>null</em>.
+ * @return A new created {@link org.apache.ojb.broker.PersistenceBrokerSQLException} based on the specified
+ * arguments.
+ */
+ public static PersistenceBrokerSQLException generateException(SQLException ex, String sql,
+ ClassDescriptor cld, Object obj, Logger logger)
+ {
+ return generateException(ex, sql, cld, null, obj, logger);
+ }
+
+ /**
+ * Method which support the conversion of {@link java.sql.SQLException} to
+ * OJB's runtime exception (with additional message details).
+ *
* @param ex The exception to convert (mandatory).
* @param sql The used sql-statement or <em>null</em>.
* @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target object or <em>null</em>.
* @param values The values set in prepared statement or <em>null</em>.
+ * @param logger The {@link org.apache.ojb.broker.util.logging.Logger} to log an detailed message
+ * to the specified {@link org.apache.ojb.broker.util.logging.Logger} or <em>null</em> to skip logging message.
* @param obj The target object or <em>null</em>.
+ * @return A new created {@link org.apache.ojb.broker.PersistenceBrokerSQLException} based on the specified
+ * arguments.
+ */
+ public static PersistenceBrokerSQLException generateException(SQLException ex, String sql, ClassDescriptor cld,
+ ValueContainer[] values, Object obj, Logger logger)
+ {
+ return generateException(null, ex, sql, cld, values, obj, logger);
+ }
+
+ /**
+ * Method which support the conversion of {@link java.sql.SQLException} to
+ * OJB's runtime exception (with additional message details).
+ *
+ * @param message The error message to use, if <em>null</em> a standard message is used.
+ * @param ex The exception to convert (mandatory).
+ * @param sql The used sql-statement or <em>null</em>.
+ * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target object or <em>null</em>.
+ * @param values The values set in prepared statement or <em>null</em>.
* @param logger The {@link org.apache.ojb.broker.util.logging.Logger} to log an detailed message
* to the specified {@link org.apache.ojb.broker.util.logging.Logger} or <em>null</em> to skip logging message.
+ * @param obj The target object or <em>null</em>.
* @return A new created {@link org.apache.ojb.broker.PersistenceBrokerSQLException} based on the specified
* arguments.
*/
- public static PersistenceBrokerSQLException generateException(SQLException ex, String sql, ClassDescriptor cld, ValueContainer[] values, Object obj, Logger logger)
+ public static PersistenceBrokerSQLException generateException(String message, SQLException ex,
+ String sql, ClassDescriptor cld,
+ ValueContainer[] values, Object obj, Logger logger)
{
/*
X/OPEN codes within class 23:
@@ -68,35 +128,60 @@
if(ex instanceof BatchUpdateException)
{
BatchUpdateException tmp = (BatchUpdateException) ex;
- msg.append("* BatchUpdateException during execution of sql-statement:");
+ if(message != null)
+ {
+ msg.append("* ").append(message);
+ }
+ else
+ {
+ msg.append("* BatchUpdateException during execution of sql-statement:");
+ }
msg.append(eol).append("Batch update count is '").append(tmp.getUpdateCounts()).append("'");
}
else if(ex instanceof SQLWarning)
{
- msg.append("* SQLWarning during execution of sql-statement:");
+ if(message != null)
+ {
+ msg.append("* ").append(message);
+ }
+ else
+ {
+ msg.append("* SQLWarning during execution of sql-statement:");
+ }
}
else
{
- msg.append("* SQLException during execution of sql-statement:");
+ if(message != null)
+ {
+ msg.append("* ").append(message);
+ }
+ else
+ {
+ msg.append("* SQLException during execution of sql-statement:");
+ }
}
if(sql != null)
{
msg.append(eol).append("sql statement was '").append(sql).append("'");
}
- msg.append(eol).append("Exception message is [").append(ex.getMessage()).append("]");
- msg.append(eol).append("Vendor error code [").append(ex.getErrorCode()).append("]");
- msg.append(eol).append("SQL state code [");
-
- String stateCode = ex.getSQLState();
- if("23000".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=INTEGRITY CONSTRAINT VIOLATION");
- else if("23001".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=RESTRICT VIOLATION");
- else if("23502".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=NOT NULL VIOLATION");
- else if("23503".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=FOREIGN KEY VIOLATION");
- else if("23505".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=UNIQUE VIOLATION");
- else if("23514".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=CHECK VIOLATION");
- else msg.append(stateCode);
- msg.append("]");
+ String stateCode = null;
+ if(ex != null)
+ {
+ msg.append(eol).append("Exception message is [").append(ex.getMessage()).append("]");
+ msg.append(eol).append("Vendor error code [").append(ex.getErrorCode()).append("]");
+ msg.append(eol).append("SQL state code [");
+
+ stateCode = ex.getSQLState();
+ if("23000".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=INTEGRITY CONSTRAINT VIOLATION");
+ else if("23001".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=RESTRICT VIOLATION");
+ else if("23502".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=NOT NULL VIOLATION");
+ else if("23503".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=FOREIGN KEY VIOLATION");
+ else if("23505".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=UNIQUE VIOLATION");
+ else if("23514".equalsIgnoreCase(stateCode)) msg.append(stateCode).append("=CHECK VIOLATION");
+ else msg.append(stateCode);
+ msg.append("]");
+ }
if(cld != null)
{
@@ -152,12 +237,15 @@
// message string for PB exception
String shortMsg = msg.toString();
- // add causing stack trace
- Throwable rootCause = ExceptionUtils.getRootCause(ex);
- if(rootCause == null) rootCause = ex;
- msg.append(eol).append("The root stack trace is --> ");
- String rootStack = ExceptionUtils.getStackTrace(rootCause);
- msg.append(eol).append(rootStack);
+ if(ex != null)
+ {
+ // add causing stack trace
+ Throwable rootCause = ExceptionUtils.getRootCause(ex);
+ if(rootCause == null) rootCause = ex;
+ msg.append(eol).append("The root stack trace is --> ");
+ String rootStack = ExceptionUtils.getStackTrace(rootCause);
+ msg.append(eol).append(rootStack);
+ }
msg.append(SystemUtils.LINE_SEPARATOR).append("**");
// log error message
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/util/GUID.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/util/GUID.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/util/GUID.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/util/GUID.java Sat Jul 15 07:22:34 2006
@@ -26,12 +26,14 @@
* 1. The IP-Address of the local machine.
* 2. A java.rmi.server.UID
*
- * @author Thomas Mahler
+ * @deprecated will be replaced by {@link GUIDFactory}.
* @version $Id$
*/
public class GUID implements Serializable
{
- static final long serialVersionUID = -6163239155380515945L; /**
+ static final long serialVersionUID = -6163239155380515945L;
+
+ /**
* holds the hostname of the local machine.
*/
private static String localIPAddress;
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/util/IdentityArrayList.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/util/IdentityArrayList.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/util/IdentityArrayList.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/util/IdentityArrayList.java Sat Jul 15 07:22:34 2006
@@ -1,8 +1,6 @@
package org.apache.ojb.broker.util;
-import java.util.ArrayList;
-
-/* Copyright 2004-2004 The Apache Software Foundation
+/* Copyright 2004-2006 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.
@@ -16,8 +14,34 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Collection;
+
+/**
+ * Object identity based {@link java.util.List}, use <tt>"=="</tt> instead of
+ * <tt>element_1.equals(element_2)</tt> to compare objects.
+ *
+ * @version $Id$
+ */
public class IdentityArrayList extends ArrayList
{
+
+ public IdentityArrayList()
+ {
+ }
+
+ public IdentityArrayList(int initialCapacity)
+ {
+ super(initialCapacity);
+ }
+
+ public IdentityArrayList(Collection c)
+ {
+ super(c);
+ }
+
public boolean contains(Object elem)
{
return indexOf(elem) >= 0;
@@ -37,5 +61,19 @@
if(elem == get(i))
return i;
return -1;
+ }
+
+ public boolean remove(Object o)
+ {
+ Iterator e = iterator();
+ while(e.hasNext())
+ {
+ if(o == e.next())
+ {
+ e.remove();
+ return true;
+ }
+ }
+ return false;
}
}
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/util/dbhandling/DatabaseHandlingTask.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/util/dbhandling/DatabaseHandlingTask.java?rev=422233&r1=422232&r2=422233&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/util/dbhandling/DatabaseHandlingTask.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/util/dbhandling/DatabaseHandlingTask.java Sat Jul 15 07:22:34 2006
@@ -776,7 +776,7 @@
_ojb = new OJB();
MetadataManager metadataManager = _ojb.getMetadataManager();
- RepositoryPersistor persistor = metadataManager.getRepositoryPersistor();
+ RepositoryPersistor persistor = metadataManager.createRepositoryPersistor();
if (_repositoryFile != null)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org