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();