Return-Path:
+ * How to read/merge metadata
+ * Per default the manager handle one global {@link org.apache.ojb.broker.metadata.DescriptorRepository}
+ * for all calling threads, but it is ditto possible to use different metadata profiles in a per thread
+ * manner - profiles means different copies of {@link org.apache.ojb.broker.metadata.DescriptorRepository}
+ * objects.
+ *
+ *
+ * Enable the per thread mode
+ *
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * This class allows transparent flexible metadata loading/manipulation at runtime.
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Per default OJB loads default {@link org.apache.ojb.broker.metadata.DescriptorRepository}
+ * and {@link org.apache.ojb.broker.metadata.ConnectionRepository} instances, by reading the
+ * specified repository file. This is done first time the MetadataManager
instance
+ * was used.
+ *
+ * To read metadata information at runtime use
+ * {@link #readDescriptorRepository readDescriptorRepository} and
+ * {@link #readConnectionRepository readConnectionRepository}
+ * methods.
+ *
+ * It is also possible to merge different repositories using
+ * {@link #mergeDescriptorRepository mergeDescriptorRepository}
+ * and {@link #mergeConnectionRepository mergeConnectionRepository}
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Per thread handling of metadata
+ *
+ * To enable the 'per thread' mode for {@link org.apache.ojb.broker.metadata.DescriptorRepository}
+ * instances:
+ *
+ * MetadataManager mm = MetadataManager.getInstance();
+ * // tell the manager to use per thread mode
+ * mm.setEnablePerThreadChanges(true);
+ * ...
+ *
+ * This could be done e.g. at start up.
+ * Now it's possible to use dedicated DescriptorRepository
instances
+ * per thread:
+ *
+ * // e.g we get a coppy of the global repository
+ * DescriptorRepository dr = mm.copyOfGlobalRepository();
+ * // now we can manipulate the persistent object metadata of the copy
+ * ......
+ *
+ * // set the changed repository for this thread
+ * mm.setDescriptor(dr);
+ *
+ * // now let this thread lookup a PersistenceBroker instance
+ * // with the modified metadata
+ * // all other threads use the global metadata
+ * PersistenceBroker broker = Persis......
+ *
+ * Note: Change metadata before lookup the {@link org.apache.ojb.broker.PersistenceBroker}
+ * instance for current thread, because the metadata was bound to the PB at lookup.
+ *
+ * How to use different metadata profiles
+ * MetadataManager was shipped with a simple mechanism to
+ * add, remove and load different persistent objects metadata
+ * profiles (different {@link org.apache.ojb.broker.metadata.DescriptorRepository}
+ * instances) in a per thread manner. Use
+ *
ProcedureDescriptor
that was passed to the
* constructor of this class.
- *
+ *
* @see SqlStatement#getStatement()
*/
public String getStatement()
1.6 +8 -8 db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlInsertStatement.java
Index: SqlInsertStatement.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlInsertStatement.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SqlInsertStatement.java 11 Mar 2004 18:16:08 -0000 1.5
+++ SqlInsertStatement.java 26 Mar 2004 08:47:10 -0000 1.6
@@ -24,7 +24,7 @@
/**
* Model an INSERT Statement
- *
+ *
* @author Jakob Braeuchi
* @version $Id$
*/
@@ -42,7 +42,7 @@
}
/**
- * @see org.apache.ojb.broker.accesslayer.SqlStatement#getStatement()
+ * @see org.apache.ojb.broker.accesslayer.sql.SqlStatement#getStatement()
*/
public String getStatement()
{
@@ -55,8 +55,8 @@
appendListOfColumns(cld, stmt);
stmt.append(")");
appendListOfValues(cld, stmt);
-
- return stmt.toString();
+
+ return stmt.toString();
}
private List appendListOfColumns(ClassDescriptor cld, StringBuffer buf)
@@ -76,7 +76,7 @@
}
return columnList;
}
-
+
/**
* generates a values(?,) for a prepared insert statement.
* returns null if there are no fields
@@ -89,7 +89,7 @@
if (fields.length == 0)
{
return;
- }
+ }
stmt.append(" VALUES (");
for (int i = 0; i < fields.length; i++)
@@ -102,6 +102,6 @@
}
stmt.append(") ");
}
-
+
}
1.3 +13 -5 db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlExistStatement.java
Index: SqlExistStatement.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlExistStatement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SqlExistStatement.java 11 Mar 2004 18:16:08 -0000 1.2
+++ SqlExistStatement.java 26 Mar 2004 08:47:10 -0000 1.3
@@ -1,10 +1,5 @@
package org.apache.ojb.broker.accesslayer.sql;
-import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.metadata.ClassDescriptor;
-import org.apache.ojb.broker.metadata.FieldDescriptor;
-import org.apache.ojb.broker.util.logging.Logger;
-
/* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,6 +13,19 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ */
+
+import org.apache.ojb.broker.OJBRuntimeException;
+import org.apache.ojb.broker.metadata.ClassDescriptor;
+import org.apache.ojb.broker.metadata.FieldDescriptor;
+import org.apache.ojb.broker.util.logging.Logger;
+
+/**
+ * Generate a select to check existence of an object.
+ * Something like "SELECT id_1 FROM myTable where id_1 = 123 and id_2 = 'kjngzt'".
+ *
+ * @author Armin Waibel
+ * @version $Id$
*/
public class SqlExistStatement extends SqlPkStatement
{
1.7 +4 -4 db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlDeleteMNStatement.java
Index: SqlDeleteMNStatement.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlDeleteMNStatement.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SqlDeleteMNStatement.java 11 Mar 2004 18:16:08 -0000 1.6
+++ SqlDeleteMNStatement.java 26 Mar 2004 08:47:10 -0000 1.7
@@ -18,8 +18,8 @@
import org.apache.ojb.broker.util.logging.Logger;
/**
- * Model an DELETE Statement for M:N indirection table
- *
+ * Model an DELETE Statement for M:N indirection table
+ *
* @author Jakob Braeuchi
* @version $Id$
*/
@@ -36,7 +36,7 @@
}
/**
- * @see org.apache.ojb.broker.accesslayer.SqlStatement#getStatement()
+ * @see org.apache.ojb.broker.accesslayer.sql.SqlStatement#getStatement()
*/
public String getStatement()
{
1.14 +5 -5 db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlDeleteByQuery.java
Index: SqlDeleteByQuery.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlDeleteByQuery.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- SqlDeleteByQuery.java 11 Mar 2004 18:16:08 -0000 1.13
+++ SqlDeleteByQuery.java 26 Mar 2004 08:47:10 -0000 1.14
@@ -42,7 +42,7 @@
}
/**
- * @see org.apache.ojb.broker.accesslayer.SqlStatement#getStatement()
+ * @see org.apache.ojb.broker.accesslayer.sql.SqlStatement#getStatement()
*/
public String getStatement()
{
@@ -67,10 +67,10 @@
String result;
if (translate)
- {
+ {
fld = getFieldDescriptor(aTableAlias, aPathInfo);
}
-
+
if (fld != null)
{
// BRJ : No alias for delete
@@ -80,7 +80,7 @@
{
result = aPathInfo.column;
}
-
+
return result;
}
1.5 +5 -5 db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlDeleteByPkStatement.java
Index: SqlDeleteByPkStatement.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlDeleteByPkStatement.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SqlDeleteByPkStatement.java 11 Mar 2004 18:16:08 -0000 1.4
+++ SqlDeleteByPkStatement.java 26 Mar 2004 08:47:10 -0000 1.5
@@ -20,7 +20,7 @@
/**
* Model a DELETE Statement
- *
+ *
* @author Jakob Braeuchi
* @version $Id$
*/
@@ -38,17 +38,17 @@
}
/**
- * @see org.apache.ojb.broker.accesslayer.SqlStatement#getStatement()
+ * @see org.apache.ojb.broker.accesslayer.sql.SqlStatement#getStatement()
*/
public String getStatement()
{
StringBuffer stmt = new StringBuffer(1024);
ClassDescriptor cld = getClassDescriptor();
-
+
stmt.append("DELETE FROM ");
appendTable(cld,stmt);
appendWhereClause(cld, true, stmt); //use Locking
-
+
return stmt.toString();
}
1.7 +21 -11 db-ojb/src/java/org/apache/ojb/broker/accesslayer/conversions/Object2Base64StringFieldConversion.java
Index: Object2Base64StringFieldConversion.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/conversions/Object2Base64StringFieldConversion.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Object2Base64StringFieldConversion.java 11 Mar 2004 18:16:08 -0000 1.6
+++ Object2Base64StringFieldConversion.java 26 Mar 2004 08:47:10 -0000 1.7
@@ -1,15 +1,5 @@
package org.apache.ojb.broker.accesslayer.conversions;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.GZIPOutputStream;
-
-import org.apache.ojb.broker.util.Base64;
-
-
/* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,6 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.ojb.broker.util.Base64;
+
+/**
+ * this implementation of the FieldConversion interface converts
+ * between java.lang.Objects values and char[] values in the rdbms.
+ * This conversion is useful to store serialized objects in database
+ * columns. For an example have a look at the mapping of
+ * org.apache.ojb.odmg.collections.DlistEntry.
+ *
+ * @author Thomas Mahler, Scott C. Gray
+ * @version $Id$
+ */
public class Object2Base64StringFieldConversion implements FieldConversion
{
private ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
@@ -48,7 +58,7 @@
}
/*
- ** Clear out the byte array
+ ** Clear out the byte array
*/
byteOut.reset();
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org