Hi!

I had some problems migrating the entitystore fra 1.3 to 1.4. I discovered
that populating entities with namedassociations failed:
org.json.JSONException:
JSONObject"namedassociations"<https://wiki.cantara.no/pages/createpage.action?spaceKey=retrade&title=%22namedassociations%22&linkCreation=true&fromPageId=24184572>
not
found.
at org.json.JSONObject.get(JSONObject.java:617)
at org.json.JSONObject.getJSONObject(JSONObject.java:733)
at
org.qi4j.entitystore.map.MapEntityStoreMixin.createNamedAssociations(MapEntityStoreMixin.java:495)
at
org.qi4j.entitystore.map.MapEntityStoreMixin.readEntityState(MapEntityStoreMixin.java:438)
at
org.qi4j.entitystore.map.MapEntityStoreMixin.getEntityState(MapEntityStoreMixin.java:122)
at $Proxy119.getEntityState(Unknown Source)
at
org.qi4j.spi.entitystore.DefaultEntityStoreUnitOfWork.getEntityState(DefaultEntityStoreUnitOfWork.java:83)
at
org.qi4j.spi.entitystore.ConcurrentModificationCheckConcern$ConcurrentCheckingEntityStoreUnitOfWork.getEntityState(ConcurrentModificationCheckConcern.java:129)

The code in MapEntityStoreMixin.createNamedAssociations gave me a clue:

private Map<QualifiedName, Map<String,EntityReference>>
createNamedAssociations( JSONObject jsonObject,

       EntityDescriptor entityDescriptor
    )
        throws JSONException
    {
        Map<QualifiedName, Map<String,EntityReference>>
namedAssociations = new HashMap<QualifiedName,
Map<String,EntityReference>>();
        JSONObject namedAssocs = jsonObject.getJSONObject(
"namedassociations" );
        for( AssociationDescriptor namedAssociationType :
entityDescriptor.state().namedAssociations() )
        {
            Map<String, EntityReference> references = new
HashMap<String,EntityReference>();
            try
            {
                JSONObject jsonValues = namedAssocs.getJSONObject(
namedAssociationType.qualifiedName().name() );
                for( String name : jsonValues )
                {
                    Object jsonValue = jsonValues.getString( name );
                    EntityReference value = jsonValue ==
JSONObject.NULL ? null : EntityReference.parseEntityReference(
                        (String) jsonValue );
                    references.put( name, value );
                }
                namedAssociations.put(
namedAssociationType.qualifiedName(), references );
            }
            catch( JSONException e )
            {
                // NamedAssociation not found, default to empty one
            namedAssociations.put(
namedAssociationType.qualifiedName(), references );
            }
        }
        return namedAssociations;
    }


I moved JSONObject namedAssocs = jsonObject.getJSONObject(
"namedassociations" );
into the try-block, and that seems to eliminate the problem.

I guess this is a bug.

Best Regards,

Dag

-- 
------------------------------------
Dag Blakstad
http://no.linkedin.com/in/dagblakstad
http://webstep.no/ansatte/dag-blakstad/
Senior Konsulent Webstep AS
Mobil : +47 95 22 69 22
Lysaker Torg 2, 1366 Oslo

Pb 66, 1324 Lysaker

http://www.webstep.no
Oslo - Bergen - Stavanger - Trondheim
------------------------------------
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to