You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by 蔡博至 <Do...@dsc.com.tw> on 2003/03/31 05:33:55 UTC
DMapImpl how to implement ManageableCollection ?
Hi Armin:
I try to implement ManageableCollection via DMapImpl,but it can't work.
I don't know what's worng with it. I design a PersonMap class that extends DMapImpl and implement ManageableCollection, as like:
package com.dsc.nana.domain.organization;
import org.apache.ojb.odmg.collections.DMapImpl;
import org.apache.ojb.broker.ManageableCollection;
import java.util.Iterator;
import com.dsc.nana.persistence.PersistentObject;
public class PersonMap extends DMapImpl implements ManageableCollection{
public PersonMap() {
super();
}
public void ojbAdd(Object anObject)
{
super.getEntries().add(anObject);
}
public void ojbAddAll(ManageableCollection otherCollection)
{
super.putAll((PersonMap) otherCollection);
}
public Iterator ojbIterator()
{
return super.values().iterator();
}
}
And I declare the PersonMap class in repository as :
<class-descriptor
class="com.dsc.nana.domain.organization.PersonMap"
table="OJB_DMAP"
>
<field-descriptor
name="id"
column="ID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="size"
column="SIZE_"
jdbc-type="INTEGER"
/>
<collection-descriptor
name="entries"
element-class-ref="org.apache.ojb.odmg.collections.DMapEntry"
collection-class="org.apache.ojb.broker.util.collections.ManageableHashSet"
>
<inverse-foreignkey field-ref="dmapId"/>
</collection-descriptor>
</class-descriptor>
Then I get error messages as :
11:21:57,906 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator] INFO:
11:21:57,921 INFO [STDOUT] Init NamingLocator
11:21:57,921 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator] INFO:
11:21:57,937 INFO [STDOUT] Properties for creating the initial context: null
11:21:58,453 INFO [STDOUT] [org.apache.ojb.odmg.TransactionImpl] ERROR:
11:21:58,453 INFO [STDOUT] Locking obj com.dsc.nana.domain.organization.Project@b2e752 with lock mode 1 failed
11:21:58,484 INFO [STDOUT] com.dsc.nana.domain.organization.Person
11:21:58,484 ERROR [STDERR] java.lang.ClassCastException: com.dsc.nana.domain.organization.Person
11:21:58,500 ERROR [STDERR] at java.util.AbstractMap$4.next(AbstractMap.java:435)
11:21:58,515 ERROR [STDERR] at org.apache.ojb.odmg.TransactionImpl.lockCollections(Unknown Source)
11:21:58,531 ERROR [STDERR] at org.apache.ojb.odmg.TransactionImpl.register(Unknown Source)
11:21:58,546 ERROR [STDERR] at org.apache.ojb.odmg.TransactionImpl.lock(Unknown Source)
11:21:58,578 ERROR [STDERR] at org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(Unknown Source)
11:21:58,593 ERROR [STDERR] at org.apache.ojb.odmg.oql.OQLQueryImpl.execute(Unknown Source)
11:21:58,609 ERROR [STDERR] at com.dsc.nana.persistence.JakartaOJBHelper.findByPrimaryKey(JakartaOJBHelper.java:102)
11:21:58,625 ERROR [STDERR] at com.dsc.nana.persistence.PersistentObjectHelper.findByPrimaryKey(PersistentObjectHelper.java:67)
11:21:58,640 ERROR [STDERR] at com.dsc.nana.control.TestObjectBean.createPer
Could you help me ?
Thanks advance.
Dogie Tsai
Re: DMapImpl how to implement ManageableCollection ?
Posted by Armin Waibel <ar...@code-au-lait.de>.
Hi Dougie,
I think it's a good thing to run your PersonMap
implementation in a two tier test case first. This
is easy to debug and the test case is easy to write.
regards,
Armin
----- Original Message -----
From: "蔡博至" <Do...@dsc.com.tw>
To: "Armin Waibel" <ar...@code-au-lait.de>
Cc: "OJB Users List" <oj...@db.apache.org>
Sent: Tuesday, April 01, 2003 3:00 AM
Subject: Re: DMapImpl how to implement ManageableCollection ?
> Hi Armin:
> Because I deploy OJB to JBoss, my application must run on JBoss.
Its
> test case must also deployed to JBoss.
> I can post the two simple class ,Person and Project calss, if these
are
> useless to debug. It doesn't matter. I will give this solution.
>
> <!-------------------------------------------------------------Person
> class----------------------------------------------------->
> package com.dsc.nana.domain.organization;
>
> import java.util.*;
>
> public class Person{
> private String OID;
> public String getOID(){
> this.OID;
> }
> public void setOID(String pNewValue){
> this.OID= pNewValue;
> }
> /** name of person*/
> private String name = null;
>
> /** name's getter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public String getName() {
> return this.name;
> }
>
> /** name's setter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public void setName(String pNewValue) {
> this.name = pNewValue;
> }
>
> /** OID of the project that person join */
> private String containerOID = null;
>
> /** containOID's getter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public String getContainerOID() {
> return this.containerOID;
> }
>
> /** containOID's setter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public void setContainerOID(String pNewValue) {
> this.containerOID = pNewValue;
> }
>
> /** the project that person join */
> private Project container = null;
>
> /** container's getter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public Project getContainer() {
> return this.container;
> }
>
> /** container's setter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public void setContainer(Project pNewValue) {
> this.container = pNewValue;
> pNewValue.addPerson(this);
> }
>
> public Person() {
> }
> }
>
<!-----------------------------------------Project----------------------
----
> ------------------------->
> package com.dsc.nana.domain.organization;
>
> import com.dsc.nana.persistence.PersistentObject;
> import java.util.*;
> import org.odmg.DMap;
> import org.apache.ojb.odmg.collections.DMapImpl;
>
> public class Project{
>
> private String OID;
> public String getOID(){
> this.OID;
> }
> public void setOID(String pNewValue){
> this.OID= pNewValue;
> }
>
> private String name = null;
>
> /** name's getter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public String getName() {
> return this.name;
> }
>
> /** name's setter
> * @author Dogie Tsai
> * @since 2002/10/22
> */
> public void setName(String pNewValue) {
> this.name = pNewValue;
> }
> private DMap persons;
>
> public DMap getPersons(){
> if (this.persons == null){
> this.persons = new PersonMap ();
> }
> return this.persons ;
> }
> public void setPersons(DMap pNewValue){
> this.persons = pNewValue;
> }
> public void addPerson(Person pMember){
> if (this.getPersons().containsValue(pMember)){
>
> } else {
> this.getPersons().put(pMember.getOID() ,pMember);
> pMember.setContainer(this);
> }
> }
> public Project() {
> }
> }
>
> I just new a project and a person.The Person add in the project. Then
store
> project.
> > Hi Dougie,
> >
> > sorry I don't have a clue what's going wrong.
> > Could you post a test case?
> >
> > regards,
> > Armin
> >
> > ----- Original Message -----
> > From: "蔡博至" <Do...@dsc.com.tw>
> > To: "OJB Users List" <oj...@db.apache.org>
> > Sent: Monday, March 31, 2003 5:33 AM
> > Subject: DMapImpl how to implement ManageableCollection ?
> >
> >
> > Hi Armin:
> > I try to implement ManageableCollection via DMapImpl,but it
can't
> > work.
> > I don't know what's worng with it. I design a PersonMap class that
> > extends DMapImpl and implement ManageableCollection, as like:
> > package com.dsc.nana.domain.organization;
> >
> > import org.apache.ojb.odmg.collections.DMapImpl;
> > import org.apache.ojb.broker.ManageableCollection;
> > import java.util.Iterator;
> > import com.dsc.nana.persistence.PersistentObject;
> >
> > public class PersonMap extends DMapImpl implements
ManageableCollection{
> >
> > public PersonMap() {
> > super();
> > }
> >
> > public void ojbAdd(Object anObject)
> > {
> > super.getEntries().add(anObject);
> > }
> >
> > public void ojbAddAll(ManageableCollection otherCollection)
> > {
> > super.putAll((PersonMap) otherCollection);
> > }
> >
> > public Iterator ojbIterator()
> > {
> > return super.values().iterator();
> > }
> > }
> >
> > And I declare the PersonMap class in repository as :
> >
> > <class-descriptor
> > class="com.dsc.nana.domain.organization.PersonMap"
> > table="OJB_DMAP"
> > >
> > <field-descriptor
> > name="id"
> > column="ID"
> > jdbc-type="INTEGER"
> > primarykey="true"
> > autoincrement="true"
> > />
> > <field-descriptor
> > name="size"
> > column="SIZE_"
> > jdbc-type="INTEGER"
> > />
> > <collection-descriptor
> > name="entries"
> >
element-class-ref="org.apache.ojb.odmg.collections.DMapEntry"
> >
> >
collection-class="org.apache.ojb.broker.util.collections.ManageableHashS
> > et"
> > >
> > <inverse-foreignkey field-ref="dmapId"/>
> > </collection-descriptor>
> > </class-descriptor>
> >
> > Then I get error messages as :
> >
> > 11:21:57,906 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
> > INFO:
> > 11:21:57,921 INFO [STDOUT] Init NamingLocator
> > 11:21:57,921 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
> > INFO:
> > 11:21:57,937 INFO [STDOUT] Properties for creating the initial
context:
> > null
> > 11:21:58,453 INFO [STDOUT] [org.apache.ojb.odmg.TransactionImpl]
ERROR:
> > 11:21:58,453 INFO [STDOUT] Locking obj
> > com.dsc.nana.domain.organization.Project@b2e752 with lock mode 1
failed
> > 11:21:58,484 INFO [STDOUT] com.dsc.nana.domain.organization.Person
> > 11:21:58,484 ERROR [STDERR] java.lang.ClassCastException:
> > com.dsc.nana.domain.organization.Person
> > 11:21:58,500 ERROR [STDERR] at
> > java.util.AbstractMap$4.next(AbstractMap.java:435)
> > 11:21:58,515 ERROR [STDERR] at
> > org.apache.ojb.odmg.TransactionImpl.lockCollections(Unknown Source)
> > 11:21:58,531 ERROR [STDERR] at
> > org.apache.ojb.odmg.TransactionImpl.register(Unknown Source)
> > 11:21:58,546 ERROR [STDERR] at
> > org.apache.ojb.odmg.TransactionImpl.lock(Unknown Source)
> > 11:21:58,578 ERROR [STDERR] at
> >
org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(Unknown
> > Source)
> > 11:21:58,593 ERROR [STDERR] at
> > org.apache.ojb.odmg.oql.OQLQueryImpl.execute(Unknown Source)
> > 11:21:58,609 ERROR [STDERR] at
> >
com.dsc.nana.persistence.JakartaOJBHelper.findByPrimaryKey(JakartaOJBHel
> > per.java:102)
> > 11:21:58,625 ERROR [STDERR] at
> >
com.dsc.nana.persistence.PersistentObjectHelper.findByPrimaryKey(Persist
> > entObjectHelper.java:67)
> > 11:21:58,640 ERROR [STDERR] at
> > com.dsc.nana.control.TestObjectBean.createPer
> >
> > Could you help me ?
> > Thanks advance.
> >
> > Dogie Tsai
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>
Re: DMapImpl how to implement ManageableCollection ?
Posted by 蔡博至 <Do...@dsc.com.tw>.
Hi Armin:
Because I deploy OJB to JBoss, my application must run on JBoss. Its
test case must also deployed to JBoss.
I can post the two simple class ,Person and Project calss, if these are
useless to debug. It doesn't matter. I will give this solution.
<!-------------------------------------------------------------Person
class----------------------------------------------------->
package com.dsc.nana.domain.organization;
import java.util.*;
public class Person{
private String OID;
public String getOID(){
this.OID;
}
public void setOID(String pNewValue){
this.OID= pNewValue;
}
/** name of person*/
private String name = null;
/** name's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public String getName() {
return this.name;
}
/** name's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setName(String pNewValue) {
this.name = pNewValue;
}
/** OID of the project that person join */
private String containerOID = null;
/** containOID's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public String getContainerOID() {
return this.containerOID;
}
/** containOID's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setContainerOID(String pNewValue) {
this.containerOID = pNewValue;
}
/** the project that person join */
private Project container = null;
/** container's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public Project getContainer() {
return this.container;
}
/** container's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setContainer(Project pNewValue) {
this.container = pNewValue;
pNewValue.addPerson(this);
}
public Person() {
}
}
<!-----------------------------------------Project--------------------------
------------------------->
package com.dsc.nana.domain.organization;
import com.dsc.nana.persistence.PersistentObject;
import java.util.*;
import org.odmg.DMap;
import org.apache.ojb.odmg.collections.DMapImpl;
public class Project{
private String OID;
public String getOID(){
this.OID;
}
public void setOID(String pNewValue){
this.OID= pNewValue;
}
private String name = null;
/** name's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public String getName() {
return this.name;
}
/** name's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setName(String pNewValue) {
this.name = pNewValue;
}
private DMap persons;
public DMap getPersons(){
if (this.persons == null){
this.persons = new PersonMap ();
}
return this.persons ;
}
public void setPersons(DMap pNewValue){
this.persons = pNewValue;
}
public void addPerson(Person pMember){
if (this.getPersons().containsValue(pMember)){
} else {
this.getPersons().put(pMember.getOID() ,pMember);
pMember.setContainer(this);
}
}
public Project() {
}
}
I just new a project and a person.The Person add in the project. Then store
project.
> Hi Dougie,
>
> sorry I don't have a clue what's going wrong.
> Could you post a test case?
>
> regards,
> Armin
>
> ----- Original Message -----
> From: "蔡博至" <Do...@dsc.com.tw>
> To: "OJB Users List" <oj...@db.apache.org>
> Sent: Monday, March 31, 2003 5:33 AM
> Subject: DMapImpl how to implement ManageableCollection ?
>
>
> Hi Armin:
> I try to implement ManageableCollection via DMapImpl,but it can't
> work.
> I don't know what's worng with it. I design a PersonMap class that
> extends DMapImpl and implement ManageableCollection, as like:
> package com.dsc.nana.domain.organization;
>
> import org.apache.ojb.odmg.collections.DMapImpl;
> import org.apache.ojb.broker.ManageableCollection;
> import java.util.Iterator;
> import com.dsc.nana.persistence.PersistentObject;
>
> public class PersonMap extends DMapImpl implements ManageableCollection{
>
> public PersonMap() {
> super();
> }
>
> public void ojbAdd(Object anObject)
> {
> super.getEntries().add(anObject);
> }
>
> public void ojbAddAll(ManageableCollection otherCollection)
> {
> super.putAll((PersonMap) otherCollection);
> }
>
> public Iterator ojbIterator()
> {
> return super.values().iterator();
> }
> }
>
> And I declare the PersonMap class in repository as :
>
> <class-descriptor
> class="com.dsc.nana.domain.organization.PersonMap"
> table="OJB_DMAP"
> >
> <field-descriptor
> name="id"
> column="ID"
> jdbc-type="INTEGER"
> primarykey="true"
> autoincrement="true"
> />
> <field-descriptor
> name="size"
> column="SIZE_"
> jdbc-type="INTEGER"
> />
> <collection-descriptor
> name="entries"
> element-class-ref="org.apache.ojb.odmg.collections.DMapEntry"
>
> collection-class="org.apache.ojb.broker.util.collections.ManageableHashS
> et"
> >
> <inverse-foreignkey field-ref="dmapId"/>
> </collection-descriptor>
> </class-descriptor>
>
> Then I get error messages as :
>
> 11:21:57,906 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
> INFO:
> 11:21:57,921 INFO [STDOUT] Init NamingLocator
> 11:21:57,921 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
> INFO:
> 11:21:57,937 INFO [STDOUT] Properties for creating the initial context:
> null
> 11:21:58,453 INFO [STDOUT] [org.apache.ojb.odmg.TransactionImpl] ERROR:
> 11:21:58,453 INFO [STDOUT] Locking obj
> com.dsc.nana.domain.organization.Project@b2e752 with lock mode 1 failed
> 11:21:58,484 INFO [STDOUT] com.dsc.nana.domain.organization.Person
> 11:21:58,484 ERROR [STDERR] java.lang.ClassCastException:
> com.dsc.nana.domain.organization.Person
> 11:21:58,500 ERROR [STDERR] at
> java.util.AbstractMap$4.next(AbstractMap.java:435)
> 11:21:58,515 ERROR [STDERR] at
> org.apache.ojb.odmg.TransactionImpl.lockCollections(Unknown Source)
> 11:21:58,531 ERROR [STDERR] at
> org.apache.ojb.odmg.TransactionImpl.register(Unknown Source)
> 11:21:58,546 ERROR [STDERR] at
> org.apache.ojb.odmg.TransactionImpl.lock(Unknown Source)
> 11:21:58,578 ERROR [STDERR] at
> org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(Unknown
> Source)
> 11:21:58,593 ERROR [STDERR] at
> org.apache.ojb.odmg.oql.OQLQueryImpl.execute(Unknown Source)
> 11:21:58,609 ERROR [STDERR] at
> com.dsc.nana.persistence.JakartaOJBHelper.findByPrimaryKey(JakartaOJBHel
> per.java:102)
> 11:21:58,625 ERROR [STDERR] at
> com.dsc.nana.persistence.PersistentObjectHelper.findByPrimaryKey(Persist
> entObjectHelper.java:67)
> 11:21:58,640 ERROR [STDERR] at
> com.dsc.nana.control.TestObjectBean.createPer
>
> Could you help me ?
> Thanks advance.
>
> Dogie Tsai
>
Re: DMapImpl how to implement ManageableCollection ?
Posted by Armin Waibel <ar...@code-au-lait.de>.
Hi Dougie,
sorry I don't have a clue what's going wrong.
Could you post a test case?
regards,
Armin
----- Original Message -----
From: "蔡博至" <Do...@dsc.com.tw>
To: "OJB Users List" <oj...@db.apache.org>
Sent: Monday, March 31, 2003 5:33 AM
Subject: DMapImpl how to implement ManageableCollection ?
Hi Armin:
I try to implement ManageableCollection via DMapImpl,but it can't
work.
I don't know what's worng with it. I design a PersonMap class that
extends DMapImpl and implement ManageableCollection, as like:
package com.dsc.nana.domain.organization;
import org.apache.ojb.odmg.collections.DMapImpl;
import org.apache.ojb.broker.ManageableCollection;
import java.util.Iterator;
import com.dsc.nana.persistence.PersistentObject;
public class PersonMap extends DMapImpl implements ManageableCollection{
public PersonMap() {
super();
}
public void ojbAdd(Object anObject)
{
super.getEntries().add(anObject);
}
public void ojbAddAll(ManageableCollection otherCollection)
{
super.putAll((PersonMap) otherCollection);
}
public Iterator ojbIterator()
{
return super.values().iterator();
}
}
And I declare the PersonMap class in repository as :
<class-descriptor
class="com.dsc.nana.domain.organization.PersonMap"
table="OJB_DMAP"
>
<field-descriptor
name="id"
column="ID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="size"
column="SIZE_"
jdbc-type="INTEGER"
/>
<collection-descriptor
name="entries"
element-class-ref="org.apache.ojb.odmg.collections.DMapEntry"
collection-class="org.apache.ojb.broker.util.collections.ManageableHashS
et"
>
<inverse-foreignkey field-ref="dmapId"/>
</collection-descriptor>
</class-descriptor>
Then I get error messages as :
11:21:57,906 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
INFO:
11:21:57,921 INFO [STDOUT] Init NamingLocator
11:21:57,921 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
INFO:
11:21:57,937 INFO [STDOUT] Properties for creating the initial context:
null
11:21:58,453 INFO [STDOUT] [org.apache.ojb.odmg.TransactionImpl] ERROR:
11:21:58,453 INFO [STDOUT] Locking obj
com.dsc.nana.domain.organization.Project@b2e752 with lock mode 1 failed
11:21:58,484 INFO [STDOUT] com.dsc.nana.domain.organization.Person
11:21:58,484 ERROR [STDERR] java.lang.ClassCastException:
com.dsc.nana.domain.organization.Person
11:21:58,500 ERROR [STDERR] at
java.util.AbstractMap$4.next(AbstractMap.java:435)
11:21:58,515 ERROR [STDERR] at
org.apache.ojb.odmg.TransactionImpl.lockCollections(Unknown Source)
11:21:58,531 ERROR [STDERR] at
org.apache.ojb.odmg.TransactionImpl.register(Unknown Source)
11:21:58,546 ERROR [STDERR] at
org.apache.ojb.odmg.TransactionImpl.lock(Unknown Source)
11:21:58,578 ERROR [STDERR] at
org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(Unknown
Source)
11:21:58,593 ERROR [STDERR] at
org.apache.ojb.odmg.oql.OQLQueryImpl.execute(Unknown Source)
11:21:58,609 ERROR [STDERR] at
com.dsc.nana.persistence.JakartaOJBHelper.findByPrimaryKey(JakartaOJBHel
per.java:102)
11:21:58,625 ERROR [STDERR] at
com.dsc.nana.persistence.PersistentObjectHelper.findByPrimaryKey(Persist
entObjectHelper.java:67)
11:21:58,640 ERROR [STDERR] at
com.dsc.nana.control.TestObjectBean.createPer
Could you help me ?
Thanks advance.
Dogie Tsai