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 2002/11/29 13:25:26 UTC
cvs commit: jakarta-ojb/src/java/org/apache/ojb/broker/singlevm DelegatingPersistenceBroker.java
arminw 2002/11/29 04:25:26
Modified: src/java/org/apache/ojb/broker/singlevm
DelegatingPersistenceBroker.java
Log:
add methods to get the underlying PB instance
Revision Changes Path
1.2 +38 -0 jakarta-ojb/src/java/org/apache/ojb/broker/singlevm/DelegatingPersistenceBroker.java
Index: DelegatingPersistenceBroker.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/broker/singlevm/DelegatingPersistenceBroker.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DelegatingPersistenceBroker.java 28 Nov 2002 22:10:58 -0000 1.1
+++ DelegatingPersistenceBroker.java 29 Nov 2002 12:25:26 -0000 1.2
@@ -38,6 +38,44 @@
this.broker = broker;
}
+ /**
+ * Returns only the wrapped
+ * {@link org.apache.ojb.broker.PersistenceBroker} instance
+ */
+ public PersistenceBroker getDelegate()
+ {
+ return this.broker;
+ }
+
+ /**
+ * If my underlying {@link org.apache.ojb.broker.PersistenceBroker}
+ * is not a {@link DelegatingPersistenceBroker}, returns it,
+ * otherwise recursively invokes this method on my delegate.
+ * <p>
+ * Hence this method will return the first
+ * delegate that is not a {@link DelegatingPersistenceBroker},
+ * or <tt>null</tt> when no non-{@link DelegatingPersistenceBroker}
+ * delegate can be found by transversing this chain.
+ * <p>
+ * This method is useful when you may have nested
+ * {@link DelegatingPersistenceBroker}s, and you want to make
+ * sure to obtain a "genuine" {@link org.apache.ojb.broker.PersistenceBroker}
+ * implementaion instance.
+ */
+ public PersistenceBroker getInnermostDelegate()
+ {
+ PersistenceBroker broker = this.broker;
+ while (broker != null && broker instanceof DelegatingPersistenceBroker)
+ {
+ broker = ((DelegatingPersistenceBroker) broker).getDelegate();
+ if (this == broker)
+ {
+ return null;
+ }
+ }
+ return broker;
+ }
+
public boolean isClosed()
{
return ((PBState) broker).isClosed();