Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » UUID Error(Exception thrown when saving a UUID field)
UUID Error [message #637878] Tue, 09 November 2010 09:06 Go to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
A) Method Body

public Multiplex createMultiplex(
String name, Float maxAvailBitRate, Integer transportStreamId,
UUID carrierId, Integer startSID, Integer endSID)
throws Exception {
//Asset asset = DomainPackage.eINSTANCE.getDomainFactory().createAsset();
Multiplex mul = DomainPackage.eINSTANCE.getDomainFactory().createMultiplex() ;

//Data Population
mul.setName("onesat");
mul.setMaxAvailableBitRate(2F);
mul.setTransportStreamId(1);
mul.setCarrierContentId(UUID.randomUUID()); // -------- At this line, exception comes
mul.setStartSID(3);
mul.setEndSID(4);

MultiplexDaoImpl.getInstance().saveMultiplex(mul);

return mul;


}

B)

During debugging, it leads to this function.
------------------------------------------------------------ ---------------------------

public Object createFromString(EDataType eDataType, String initialValue) {
switch (eDataType.getClassifierID()) {
case DomainPackage.UUID:
return createUUIDFromString(eDataType, initialValue);
case DomainPackage.CARRIER_TYPE:
return createCarrierTypeFromString(eDataType, initialValue);
case DomainPackage.CARRIER_CONTENT_TYPE:
return createCarrierContentTypeFromString(eDataType, initialValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
}
}
------------------------------------------------------------ --------------------------------------------------
C) Stack Trace

java.lang.IllegalArgumentException: The value 'da6530d2-e847-4877-a874-1c8fee74611a' is invalid.
at org.eclipse.emf.ecore.impl.EFactoryImpl.createFromString(EFa ctoryImpl.java:462)
at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create UUIDFromString(DomainFactoryImpl.java:184)
at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create FromString(DomainFactoryImpl.java:89)
at org.eclipse.emf.teneo.hibernate.mapping.DefaultToStringUserT ype.deepCopy(DefaultToStringUserType.java:91)
at org.hibernate.type.CustomType.deepCopy(CustomType.java:202)
at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:397 )
at org.hibernate.event.def.AbstractSaveEventListener.performSav eOrReplicate(AbstractSaveEventListener.java:303)
at org.hibernate.event.def.AbstractSaveEventListener.performSav e(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGe neratedId(AbstractSaveEventListener.java:144)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.sav eWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener .java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGen eratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.ent ityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSave OrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onS aveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563 )
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
at com.ses.osp.am.internal.dao.impl.TeneoStoreController.saveMu ltiplex(TeneoStoreController.java:66)
at com.ses.osp.am.internal.dao.impl.MultiplexDaoImpl.saveMultip lex(MultiplexDaoImpl.java:97)
at com.ses.osp.am.internal.service.AssetManagementServiceImpl.c reateMultiplex(AssetManagementServiceImpl.java:91)
at com.ses.osp.am.moduletest.TestSaveMultiplex.testSaveMultiple x(TestSaveMultiplex.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38Cla ssRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r un(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( RemoteTestRunner.java:197)
Re: [Teneo] UUID Error [message #637883 is a reply to message #637878] Tue, 09 November 2010 09:19 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
To be honest I am not sure why this happens. Have you debugged into the EFactoryImpl.createFromString? (I see only stack
traces but no debug info).
Really I always debug into the EMF/Hibernate/etc code if I meet these type of errors. It takes only a few minutes and it
gives you great insights.

btw, if you want to be sure that I look at your post you need to prefix the subject with [Teneo]

gr. Martin

On 11/09/2010 10:06 AM, tenor wrote:
> A) Method Body
>
> public Multiplex createMultiplex(
> String name, Float maxAvailBitRate, Integer transportStreamId, UUID
> carrierId, Integer startSID, Integer endSID) throws Exception {
> //Asset asset = DomainPackage.eINSTANCE.getDomainFactory().createAsset();
> Multiplex mul =
> DomainPackage.eINSTANCE.getDomainFactory().createMultiplex() ;
>
> //Data Population
> mul.setName("onesat");
> mul.setMaxAvailableBitRate(2F);
> mul.setTransportStreamId(1);
> mul.setCarrierContentId(UUID.randomUUID()); // -------- At this line,
> exception comes
> mul.setStartSID(3);
> mul.setEndSID(4);
>
> MultiplexDaoImpl.getInstance().saveMultiplex(mul);
>
> return mul;
>
>
> }
>
> B)
>
> During debugging, it leads to this function.
> ------------------------------------------------------------
> ---------------------------
>
> public Object createFromString(EDataType eDataType, String initialValue) {
> switch (eDataType.getClassifierID()) {
> case DomainPackage.UUID:
> return createUUIDFromString(eDataType, initialValue);
> case DomainPackage.CARRIER_TYPE:
> return createCarrierTypeFromString(eDataType, initialValue);
> case DomainPackage.CARRIER_CONTENT_TYPE:
> return createCarrierContentTypeFromString(eDataType, initialValue);
> default:
> throw new IllegalArgumentException("The datatype '" +
> eDataType.getName() + "' is not a valid classifier");
> }
> }
> ------------------------------------------------------------
> --------------------------------------------------
> C) Stack Trace
>
> java.lang.IllegalArgumentException: The value
> 'da6530d2-e847-4877-a874-1c8fee74611a' is invalid. at
> org.eclipse.emf.ecore.impl.EFactoryImpl.createFromString(EFa
> ctoryImpl.java:462)
> at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create
> UUIDFromString(DomainFactoryImpl.java:184)
> at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create
> FromString(DomainFactoryImpl.java:89)
> at org.eclipse.emf.teneo.hibernate.mapping.DefaultToStringUserT
> ype.deepCopy(DefaultToStringUserType.java:91)
> at org.hibernate.type.CustomType.deepCopy(CustomType.java:202)
> at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:397 )
> at org.hibernate.event.def.AbstractSaveEventListener.performSav
> eOrReplicate(AbstractSaveEventListener.java:303)
> at org.hibernate.event.def.AbstractSaveEventListener.performSav
> e(AbstractSaveEventListener.java:204)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGe
> neratedId(AbstractSaveEventListener.java:144)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.sav
> eWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener .java:210)
> at org.hibernate.event.def.DefaultSaveEventListener.saveWithGen
> eratedOrRequestedId(DefaultSaveEventListener.java:56)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.ent
> ityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveEventListener.performSave
> OrUpdate(DefaultSaveEventListener.java:50)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onS
> aveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563 )
> at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
> at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
> at com.ses.osp.am.internal.dao.impl.TeneoStoreController.saveMu
> ltiplex(TeneoStoreController.java:66)
> at com.ses.osp.am.internal.dao.impl.MultiplexDaoImpl.saveMultip
> lex(MultiplexDaoImpl.java:97)
> at com.ses.osp.am.internal.service.AssetManagementServiceImpl.c
> reateMultiplex(AssetManagementServiceImpl.java:91)
> at com.ses.osp.am.moduletest.TestSaveMultiplex.testSaveMultiple
> x(TestSaveMultiplex.java:28)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38Cla
> ssRunner.java:83)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r
> un(JUnit4TestReference.java:49)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test
> Execution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
> sts(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
> sts(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R
> emoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> RemoteTestRunner.java:197)
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Teneo [message #638086 is a reply to message #637883] Tue, 09 November 2010 21:12 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
public UUID createUUIDFromString(EDataType eDataType, String initialValue) {
// TODO : THIS IS A HACK - fix later
if(null == initialValue) return null;

return UUID.fromString(initialValue);
//return (UUID)super.createFromString(eDataType, initialValue);
}


The bold part does the trick but surely this is hack as i see it.
Plz suggest some better approach.

A) why there is two way conversion from string to UUID and back to UUID and what deep copy is trying to do?

B)I have a classic dilemma ie
I am able to persist and pull data from DB, giving Teneo complete freedom ie schema generation on the fly.

BUT, i have to pull data after Test data are filled in Tables using regular schema(ie non teneo).

I NEED to know, how to meet this dilemma as surely, i can not pull data if i am simply doing HQL like

from Multiplex; as teneo will still generate schema and try to pull data from Multiplex table as it sees it , perhaps NOT as it has been created by regular schema and test data inserted.

Do i have to perforce drop approach of giving Teneo freedom and use something like annotations.xml but some of tables are extra and again it will disturb the schema as we are using it ie regular one.

Plz suggest. Thanks
Re: Teneo [message #638095 is a reply to message #638086] Tue, 09 November 2010 21:23 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Comments inline.

gr. Martin

On 11/09/2010 10:12 PM, tenor wrote:
> /**
> * <!-- begin-user-doc -->
> * <!-- end-user-doc -->
> * @generated NOT
> */
> public UUID createUUIDFromString(EDataType eDataType, String
> initialValue) {
> // TODO : THIS IS A HACK - fix later
> if(null == initialValue) return null;
> return UUID.fromString(initialValue); //return
> (UUID)super.createFromString(eDataType, initialValue);
> }
>
>
> The bold part does the trick but surely this is hack as i see it.
> Plz suggest some better approach.
MT>> Sorry I have no better suggestion, You can also let the database generate the uuid (that's what I have experience
with).
>
> A) why there is two way conversion from string to UUID and back to UUID
> and what deep copy is trying to do?
MT>> these generated createFrom* methods are used by xml serialization to convert object values back/forth to strings.
Which deep copy?

>
> B)I have a classic dilemma ie
> I am able to persist and pull data from DB, giving Teneo complete
> freedom ie schema generation on the fly.
>
> BUT, i have to pull data after Test data are filled in Tables using
> regular schema(ie non teneo).
>
> I NEED to know, how to meet this dilemma as surely, i can not pull data
> if i am simply doing HQL like
>
> from Multiplex; as teneo will still generate schema and try to pull data
> from Multiplex table as it sees it , perhaps NOT as it has been created
> by regular schema and test data inserted.
>
> Do i have to perforce drop approach of giving Teneo freedom and use
> something like annotations.xml but some of tables are extra and again it
> will disturb the schema as we are using it ie regular one.
MT>> Yes it is a classic dilemma, if you already have a schema then the only way is to provide an extensive
annotations.xml which maps EMF models to the existing schema. That's what I would do, if the db schema is leading then
you are can be forced to adapt the model a bit so that it fits to the database schema.
Btw, did you know that you can also generate testdata with just a model:
http://wiki.eclipse.org/Texo/Test_Data_Generation

>
> Plz suggest. Thanks


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #638345 is a reply to message #638095] Wed, 10 November 2010 22:31 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
I have List<Transponder> getTranspondersBySatellieId(UUID satelliteId);


But during saveTransponder, Teneo does not create any satelliteId anywhere in any tables.
so effectively,i can NOT write query for any specific satelliteId!!

What is the way out?
Re: Teneo [message #638403 is a reply to message #638345] Thu, 11 November 2010 08:14 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
I don't recall your model, maybe you have a join table where the statelliteId is used. It does not matter for hibernate,
you can use HQL or criteria querying and it will automatically take care of joining if a join table is involved.
Note that if you save and query in one transaction that to get generated id's in the database you have to flush before
querying.

gr. Martin

On 11/10/2010 11:31 PM, tenor wrote:
> I have List<Transponder> getTranspondersBySatellieId(UUID satelliteId);
>
>
> But during saveTransponder, Teneo does not create any satelliteId
> anywhere in any tables.
> so effectively,i can NOT write query for any specific satelliteId!!
>
> What is the way out?
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Teneo [message #639810 is a reply to message #638403] Wed, 17 November 2010 21:59 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
As seen in pastebin, we DO get serialized object back from Teneo but also get this exception . Any suggestion for this?

http://pastebin.com/LyDzi2Sn

Where to set EReference? In the book, there was mandatory 4 pre requisites for it?How to do for UUID type then if ALL of them has to be of Eclass ?


Caused by: org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Unresolved reference
Re: Teneo [message #639817 is a reply to message #639810] Wed, 17 November 2010 22:10 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Comments inline

On 11/17/2010 10:59 PM, tenor wrote:
> As seen in pastebin, we DO get serialized object back from Teneo but
> also get this exception . Any suggestion for this?
>
> http://pastebin.com/LyDzi2Sn
MT>> hmm, not sure but it seems that there is a reference to another object which can't be resolved, so I assume that
the referenced object is not part of the resource and the resource has no way of getting to the object.

>
> Where to set EReference?
MT>> What do you mean? What ereference?

In the book, there was mandatory 4 pre
> requisites for it?
MT>> what 4 prereq?

How to do for UUID type then if ALL of them has to be
> of Eclass ?
MT>> I don't understand, uuid is an eattribute probably

>
>
> Caused by: org.eclipse.emf.ecore.resource.Resource$IOWrappedException:
> Unresolved reference


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Previous Topic:CDO Sybase Datastore
Next Topic:What is the API equivalent of emf.Ecore2Java
Goto Forum:
  


Current Time: Fri Apr 26 08:04:12 GMT 2024

Powered by FUDForum. Page generated in 0.03793 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top