Great!

Thanks Armin and Jakob.

Happy user again,
Chris :)

-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED] 
Sent: Sunday, March 05, 2006 6:08 AM
To: OJB Users List
Subject: Re: OJB and the X-Files... :)

Hi Chris,

it was fixed (by Jakob) in OJB_1_0_RELEASE branch and will be included 
in OJB 1.0.5.

regards,
Armin


Armin Waibel wrote:
> Hi Chris,
> 
> Christopher Lowe wrote:
>> Thanks Armin,
>>
>> Please let us know when it is fixed. When is OJB 1.0.5 scheduled to be
>> released?
> 
> Hope we can fix it in a few days and start with the vote for 1.0.5 next 
> week.
> 
> regards,
> Armin
> 
> 
>>
>> Regards,
>> Chris
>>
>> -----Original Message-----
>> From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Thursday, March 
>> 02, 2006 9:48 PM
>> To: OJB Users List
>> Subject: Re: OJB and the X-Files... :)
>>
>> Hi Chris,
>>
>> thanks much for detailed description. Yes, I can reproduce this issue 
>> with latest from OJB_1_0_RELEASE branch too (I checked in a test case: 
>> InheritanceMultipleTableTest#testLookupByIdentity_2()).
>> You are right it's a bug. We will fix this ASAP.
>>
>> regards,
>> Armin
>>
>> Christopher Lowe wrote:
>>> Hi Armin,
>>>
>>> I've been able to successfully recreate this error with the
>>> InheritanceMultipleTableTest Test cases. Again I'm using the broker API
>> and
>>> the latest code from SVN OJB_1_0_RELEASE.
>>>
>>> I added the code below to the test and like I described with my project
>> when
>>> org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel 
>>> is
>>> set to WARN it does not return the right class and when I set
>>> org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel 
>>> to
>>> DEBUG it returns the right class.
>>>
>>> Employee employee = new Employee();
>>> employee.setId(newEx1.getId());
>>> employee.setId_2(newEx1.getId_2());
>>>             Identity employee_oid = 
>>> broker.serviceIdentity().buildIdentity(employee);
>>> Employee employee1 = (Employee) 
>>> broker.getObjectByIdentity(employee_oid);
>>>             log.debug("Employee: " + employee1);
>>>             assertEquals(Executive.class.getName(), 
>>> employee1.getClass().getName());
>>> Please note that when I test this with the latest release of OJB,
>>> db-ojb-1.0.4.jar, this works fine. This indicates one of two things.
>> Either
>>> I'm downloading and building the code from OJB_1_0_RELEASE 
>>> incorrectly or
>> a
>>> bug was introduced into the OJB_1_0_RELEASE code. Please look into this
>> and
>>> advise me further, thank you.
>>>
>>> Regards,
>>> Chris
>>>
>>> -----Original Message-----
>>> From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Tuesday, February 
>>> 28, 2006 12:39 PM
>>> To: OJB Users List
>>> Subject: Re: OJB and the X-Files... :)
>>>
>>> Hi Chris,
>>>
>>> Christopher Lowe wrote:
>>>> Hi Armin,
>>>>     
>>>>     I'm not using p6spy, but I removed all p6spy *.jars and 
>>>> *.properties
>>>> files and still the same result. 
>>> Now I'm stumped. If it is reproducible in a separate test, please add 
>>> a issue in JIRA (with detailed pseudo code or a test case).
>>>
>>>
>>>> I'm going to have to dissect this portion
>>>> of my project and see if it can figure it out, this is really 
>>>> nagging me.
>>> I
>>>> will let you know.
>>>>
>>> It would be really helpful if you can reproduce this behavior with a 
>>> simple test case.
>>>
>>> regards,
>>> Armin
>>>
>>>
>>>> Regards,
>>>> Chris.
>>>>
>>>> -----Original Message-----
>>>> From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Monday, February 
>>>> 27, 2006 10:55 PM
>>>> To: OJB Users List
>>>> Subject: Re: OJB and the X-Files... :)
>>>>
>>>> Hi Christopher,
>>>>
>>>> Christopher Lowe wrote:
>>>>> Hi Armin,
>>>>>
>>>>> Thanks for the tip about building the identity objects. I do agree 
>>>>> that
>>> my
>>>>> problem sounds similar to OJB-63. I'm using code downloaded from 
>>>>> the SVN
>>>>> OJB_1_0_RELEASE branch as of 23rd of this month. Like what is 
>>>>> described
>>> in
>>>>> OJB-63 when I have
>>>>>
>>
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG

>>
>>>>> I can see the correct sql being generated with the "clazz_" column in
>> the
>>>>> ResultSet and hence the correct class is created. However when I turn
>>>>> debugging off for this class, i.e I set it to
>>>>>
>>
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN,

>>
>>>>> the super class is generated. I tried changing the loglevel for the
>> other
>>>>> jdbc access querying and object materialization class entries in the
>>>>> OJB-logging.properties file and only setting the loglevel to DEBUG for
>>>>> SqlGeneratorDefaultImpl works. This is rather strange to me.
>>>> This is strange for me too. Did you enable p6spy while executing the 
>>>> Query? If yes, please run your test again without p6spy.
>>>>
>>>> regards,
>>>> Armin
>>>>
>>>>> Please advice,
>>>>> thank you.
>>>>>
>>>>> Regards,
>>>>> Chris
>>>>>
>>>>> -----Original Message-----
>>>>> From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Friday, 
>>>>> February 24, 2006 10:20 PM
>>>>> To: OJB Users List
>>>>> Subject: Re: OJB and the X-Files... :)
>>>>>
>>>>> Hi Chris,
>>>>>
>>>>> Christopher Lowe wrote:
>>>>>> Dear All,
>>>>>>  
>>>>>> I have a simple inheritance relationship between a Special and
>>>>>> ActivitySpecial. I'm using proxies throughout my project with the 
>>>>>> cglib
>>>>>> proxy factory and indirection handler (I'm also using the broker 
>>>>>> API).
>>>> I'm
>>>>>> performing a simple query to find an activity special as follows:
>>>>>>  
>>>>>> Special special = (Special) broker.getObjectByIdentity(new 
>>>>>> Identity(new
>>>>>> Special(24), broker));
>>>>>> log.debug("Special: " + special);
>>>>>>  
>>>>> It's recommended to use the service class IdentityFactory to build 
>>>>> the Identity and lookup persistent objects.
>>>>>
>>
http://db.apache.org/ojb/docu/tutorials/pb-tutorial.html#Find+object+by+prim

>>
>>>>> ary+key
>>>>>
>>>>>
>>>>>> Now here is the catch. When I set
>>>>>>
>>
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG

>>
>>>>>> in the OJB-logging.properties file everything works fine. The correct
>>>>> object
>>>>>> is materialized and when the debug statement is printed out the 
>>>>>> correct
>>>>>> class ActivitySpecial is present. However when I set
>>>>>>
>>
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN 
>>
>>>>>> the object that is materialized is Special. This is really weird
>>>> behavior.
>>>>>> Does anyone have an idea why this would occur? 
>>>>> this sounds like OJB-63
>>>>> https://issues.apache.org/jira/browse/OJB-63
>>>>>
>>>>> and was fixed for OJB 1.0.4. Do you use the latest version of OJB?
>>>>>
>>>>> regards,
>>>>> Armin
>>>>>
>>>>>
>>>>>> I've included the mappings
>>>>>> for the classes mentioned above as well as the entries I have for my
>>>>>> database repository.  
>>>>>> Mappings:
>>>>>>  
>>>>>> <class-descriptor class="com.dm.beans.Special" table="special">
>>>>>>     <field-descriptor name="id" column="ID" jdbc-type="INTEGER"
>>>>>> primarykey="true" nullable="false" autoincrement="true"/>
>>>>>>     <field-descriptor name="supplierId" column="SUPPLIER_ID"
>>>>>> jdbc-type="INTEGER" />        <field-descriptor name="name" 
>>>>>> column="NAME" jdbc-type="VARCHAR" />
>>>>>>     <field-descriptor name="ackOptLock" column="ACK_OPT_LOCK"
>>>>>> jdbc-type="BIGINT" locking="true"/>
>>>>>>     <reference-descriptor         name="supplier"         
>>>>>> class-ref="com.dm.beans.suppliers.Supplier"         proxy="true" 
>>>>>>         auto-update="link"         auto-delete="none"
>>>>>>     >
>>>>>>         <foreignkey field-ref="supplierId"/>
>>>>>>     </reference-descriptor>            <collection-descriptor
>>>>>>          name="products"
>>>>>>  
>>>>>>
>>
collection-class="org.apache.ojb.broker.util.collections.RemovalAwareList" 
>>
>>>>>>          element-class-ref="com.dm.beans.Product"
>>>>>>          auto-update="link"
>>>>>>          auto-delete="link"
>>>>>>          proxy="true"
>>>>>>          indirection-table="product_special"
>>>>>>     >
>>>>>>          <fk-pointing-to-this-class column="SPECIAL_ID"/>
>>>>>>          <fk-pointing-to-element-class column="PRODUCT_ID"/>
>>>>>>     </collection-descriptor>    </class-descriptor>
>>>>>>  
>>>>>> <class-descriptor class="com.dm.beans.activity.ActivitySpecial"
>>>>>> table="activity_special">
>>>>>>     <field-descriptor name="id" column="ID" jdbc-type="INTEGER"
>>>>>> primarykey="true" nullable="false"/>
>>>>>>     <field-descriptor name="minPersons" column="MIN_PERSONS"
>>>>>> jdbc-type="INTEGER" />
>>>>>>     <field-descriptor name="maxPersons" column="MAX_PERSONS"
>>>>>> jdbc-type="INTEGER" />
>>>>>>     <field-descriptor name="discount" column="DISCOUNT"
>>>>> jdbc-type="VARCHAR"
>>>>>> />
>>>>>>     <reference-descriptor         name="super"
>>>>>>         class-ref="com.dm.beans.Special"
>>>>>>     >
>>>>>>         <foreignkey field-ref="id"/>
>>>>>>     </reference-descriptor>
>>>>>> </class-descriptor>
>>>>>>  
>>>>>> Database Repository Settings:
>>>>>>  
>>>>>>         <jdbc-connection-descriptor              
>>>>>> jcd-alias="dataSource"              default-connection="true" 
>>>>>>              platform="MySQL"              jdbc-level="3.0" 
>>>>>>              useAutoCommit="1"
>>>>>>              eager-release="false"
>>>>>>              batch-mode="false"
>>>>>>              jndi-datasource-name="java:comp/env/jdbc/DestinationDB"
>>>>>>              ignoreAutoCommitExceptions="false">
>>>>>>                 <!-- alternative cache implementations, see docs 
>>>>>> section
>>>> "Caching"
>>>>>> -->
>>>>>>         <object-cache
>>>>>> class="org.apache.ojb.broker.cache.ObjectCacheTwoLevelImpl">
>>>>>>             <!-- meaning of attributes, please see docs section
>>> "Caching"
>>>>>> -->
>>>>>>             <!-- common attributes -->
>>>>>>             <attribute attribute-name="cacheExcludes"
>>>> attribute-value=""/>
>>>>>>  
>>>>>>             <!-- ObjectCacheTwoLevelImpl attributes -->
>>>>>>             <attribute attribute-name="applicationCache"
>>>>>>
attribute-value="org.apache.ojb.broker.cache.ObjectCacheOSCacheImpl"/> 
>>>>>>
>>>>>>             <attribute attribute-name="copyStrategy"
>>>>>>
>>
attribute-value="org.apache.ojb.broker.cache.ObjectCacheTwoLevelImpl$CopyStr

>>
>>>>>> ategyImpl"/>
>>>>>>             <attribute attribute-name="forceProxies"
>>>>>> attribute-value="false"/>
>>>>>>                         <!-- ObjectCacheDefaultImpl attributes -->
>>>>>>             <attribute attribute-name="timeout" 
>>>>>> attribute-value="900"/>
>>>>>>             <attribute attribute-name="autoSync"
>>> attribute-value="true"/>
>>>>>>             <attribute attribute-name="cachingKeyType"
>>>>> attribute-value="0"/>
>>>>>>             <attribute attribute-name="useSoftReferences"
>>>>>> attribute-value="true"/>
>>>>>>         </object-cache>
>>>>>>  
>>>>>>         <!-- For more info, see section "Connection Handling" in docs
>>> -->
>>>>>>         <connection-pool
>>>>>>             maxActive="30"
>>>>>>             validationQuery="select 1 from supplier_type;"
>>>>>>             testOnBorrow="true"
>>>>>>             testOnReturn="false"
>>>>>>             whenExhaustedAction="0"
>>>>>>             maxWait="10000">
>>>>>>  
>>>>>>             <!-- Set fetchSize to 0 to use driver's default. -->
>>>>>>             <attribute attribute-name="fetchSize" 
>>>>>> attribute-value="0"/>
>>>>>>  
>>>>>>             <!-- Attributes with name prefix "jdbc." are passed
>> directly
>>>>> to
>>>>>> the JDBC driver. -->
>>>>>>             <!-- Example setting (used by Oracle driver when 
>>>>>> Statement
>>>>>> batching is enabled) -->
>>>>>>             <attribute attribute-name="jdbc.defaultBatchValue"
>>>>>> attribute-value="5"/>
>>>>>>  
>>>>>>             <!-- Attributes determining if ConnectionFactoryDBCPImpl
>>>>>>                  should also pool PreparedStatement. This is
>>>>>> programmatically disabled
>>>>>>                  when using platform=Oracle9i since Oracle statement
>>>>> caching
>>>>>> will conflict
>>>>>>                  with DBCP ObjectPool-based PreparepdStatement 
>>>>>> caching
>>>> (ie
>>>>>> setting true
>>>>>>                  here has no effect for Oracle9i platform). -->
>>>>>>             <attribute attribute-name="dbcp.poolPreparedStatements"
>>>>>> attribute-value="false"/>
>>>>>>             <attribute 
>>>>>> attribute-name="dbcp.maxOpenPreparedStatements"
>>>>>> attribute-value="10"/>
>>>>>>             <!-- Attribute determining if the Commons DBCP connection
>>>>>> wrapper will allow
>>>>>>                  access to the underlying concrete Connection 
>>>>>> instance
>>>>> from
>>>>>> the JDBC-driver
>>>>>>                  (normally this is not allowed, like in 
>>>>>> J2EE-containers
>>>>>> using wrappers). -->
>>>>>>             <attribute
>>>>>> attribute-name="dbcp.accessToUnderlyingConnectionAllowed"
>>>>>> attribute-value="false"/>
>>>>>>         </connection-pool>
>>>>>>  
>>>>>>         <!-- alternative sequence manager implementations, see
>> "Sequence
>>>>>> Manager" guide -->
>>>>>>         <sequence-manager
>>>>>>
>>
className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl"> 
>>
>>>>>>             <!-- attributes supported by SequenceManagerHighLowImpl,
>>>>>>             SequenceManagerInMemoryImpl, SequenceManagerNextValImpl
>>>>>>             please see "Sequence Manager" guide or/and javadoc of 
>>>>>> class
>>>>> for
>>>>>> more information -->
>>>>>>             <attribute attribute-name="seq.start" 
>>>>>> attribute-value="1"/>
>>>>>>             <attribute attribute-name="autoNaming"
>>>>> attribute-value="true"/>
>>>>>>  
>>>>>>             <!-- attributes supported by SequenceManagerHighLowImpl
>>>>>>             please see "Sequence Manager" guide or/and javadoc of
>>> classes
>>>>>> for more information -->
>>>>>>             <attribute attribute-name="grabSize" 
>>>>>> attribute-value="1"/>
>>>>>>  
>>>>>>             <!-- optional attributes supported by
>>>>> SequenceManagerNextValImpl
>>>>>> (support depends
>>>>>>             on the used database), please see "Sequence Manager" 
>>>>>> guide
>>>>>> or/and javadoc of
>>>>>>             classes for more information -->
>>>>>>             <!-- attribute attribute-name="seq.as"
>>>>>> attribute-value="INTEGER"/ -->
>>>>>>             <!-- attribute attribute-name="seq.incrementBy"
>>>>>> attribute-value="1"/ -->
>>>>>>             <!-- attribute attribute-name="seq.maxValue"
>>>>>> attribute-value="999999999999999999999999999"/ -->
>>>>>>             <!-- attribute attribute-name="seq.minValue"
>>>>>> attribute-value="1"/ -->
>>>>>>             <!-- attribute attribute-name="seq.cycle"
>>>>>> attribute-value="false"/ -->
>>>>>>             <!-- attribute attribute-name="seq.cache"
>>>>> attribute-value="20"/
>>>>>> -->
>>>>>>             <!-- attribute attribute-name="seq.order"
>>>>>> attribute-value="false"/ -->
>>>>>>  
>>>>>>         </sequence-manager>
>>>>>>  
>>>>>> Regards,
>>>>>> Chris
>>>>>>  
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

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


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

Reply via email to