The following method is take from the Advanced OR tutorial.   Doesn't this risk losing 
a PersistanceBroker?  Shouldn't there be a finally clause to release the broker?

Thanks.
David.

    protected ClassDescriptor selectClassDescriptor(
        Map row,
        ClassDescriptor cld)
        throws PersistenceBrokerException
    {
        // check if there is an attribute which tells us which concrete class 
        // is to be instantiated
        FieldDescriptor concreteClassFD =
            cld.getFieldDescriptorByName(ClassDescriptor.OJB_CONCRETE_CLASS);

        if (concreteClassFD == null)
            return cld;
        else
        {
            PersistenceBroker broker = null;
            try
            {
                String concreteClass =
                    (String) row.get(concreteClassFD.getColumnName());
                broker = PersistenceBrokerFactory.createPersistenceBroker();
                ClassDescriptor result =
                    broker.getClassDescriptor(
                        Class.forName(
                            concreteClass,
                            true,
                            Thread.currentThread().getContextClassLoader()));
                PersistenceBrokerFactory.releaseInstance(broker);
                if (result == null)
                    result = cld;
                return result;
            }
            catch (PersistenceBrokerException e)
            {
                PersistenceBrokerFactory.releaseInstance(broker);
                throw e;
            }
            catch (ClassNotFoundException e)
            {
                PersistenceBrokerFactory.releaseInstance(broker);
                throw new PersistenceBrokerException(e);
            }
        }
    }



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to