On 14/08/2014 18:53, Luca Garulli wrote:
>
> You can configure OrientDB to be less strict than Blueprints that
> doesn't accept NULL values and the "id" property name:
>
> graph.setStandardElementConstraints(false);
In fact, for historical reasons, gaedo never stores null values (and
initial versions even failed when any null value was encountered). So
it's not really a problem for me.
>
> But in your case the problem seems to be the dot (.). In OrientDB with
> the dot-notation you cross embedded objects (this isn't supported by
> Blueprints and Neo4J).
>
> Can you try to set this against vertex/edge before to set the property?
>
> v.getRecord().setAllowChainedAccess(false);
>
> If this works (please let me know it), we can fix BP implementation to
> implicitly call this method against all the vertex/edge underlying
> documents.
I've tried it, and it seems to raise back old bugs ...
I will do more investigations soon.
>
> Strange property names apart, which are the other problems (I already
> saw other email about transactions & indexes) ?
>
The strange property names bug has extended since my first mail : I've
hunted down all locations where "." and ":" characters were used, and
replaced all with instance of constants that are configured from system
properties, just to discover that, as property names are URLEncoded as
UTF-8, using any non pure ASCII character drives to immediate failure,
due to
java.lang.IllegalArgumentException: Invalid field name
'out_com_dooapp_gaedo_test_beans_Post-%3Eauthor'. Character '%' is invalid
at
com.orientechnologies.orient.core.record.impl.ODocument.checkFieldName(ODocument.java:1668)
at
com.orientechnologies.orient.core.record.impl.ODocument.field(ODocument.java:761)
at
com.orientechnologies.orient.core.record.impl.ODocument.field(ODocument.java:673)
at
com.tinkerpop.blueprints.impls.orient.OrientVertex.createLink(OrientVertex.java:150)
at
com.tinkerpop.blueprints.impls.orient.OrientVertex.addEdge(OrientVertex.java:708)
at
com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addEdge(OrientBaseGraph.java:527)
at
com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addEdge(OrientBaseGraph.java:57)
at
com.dooapp.gaedo.blueprints.indexable.IndexableGraphBackedFinderService.createEdgeFor(IndexableGraphBackedFinderService.java:216)
at
I find particularly strange that URLEncoded values can't contain "%", as
this character specifically allows the use of any non-ASCII character.
But, well, appart property names characters, and transactions and
indexes compatibility, I hope that's all the interpretation differences
I will find ...
--
Nicolas Delsaux