jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Brooking <public+jackrab...@charlie.brooking.id.au>
Subject Re: Improving the reregistering of node types
Date Thu, 26 Aug 2010 13:57:09 GMT
On 26/08/10 19:47, Berry van Halderen wrote:
> In Jackrabbit, only "trivial" nodetype changes are supported(see
> o.a.j.c.nodetype.NodeTypeDefDiff) to reregister node types.  In order to
> change nodetypes we're currently using a module that can basically change any
> nodetype structure.  However this is based on pure jcr interaction and
> therefor requires relative expensive copy actions.
>    

See http://markmail.org/message/hiqvukxc7lftfspm for a previous posting 
(Re: Re-register Custom Node Types Without Destroying Repository?, Sep 
15, 2009) where I describe some steps that I used for changing node 
types. For example: "to add a mandatory property type, first add it as 
optional then create properties in nodes having the relevant node type 
before replacing the property type with its mandatory form." The code 
that I ended up with was similar to migrations in Rails. It required a 
patch that removed the if (diff.isTrivial()) condition from code in 
NodeTypeRegistry.

> Alternatively a better support of Node.setPrimaryNodeType would also solve
> this.  But that also cannot handle renamed, and blindly drops subnodes and
> properties.  Especially for a structure of nodes, where both parent and child
> nodes require a setPrimaryNodeType I can't see this to work at the moment.
>    

I submitted https://issues.apache.org/jira/browse/JCR-2011, "Replacing 
mixin type doesn't preserve properties", last year and the only response 
was that I should use nt:unstructured because "unstructured-ness is what 
JCR is optimized for." However, node types were important for the 
application I developed then because I allowed users write-access via 
the WebDAV module (in addition to access through a conventional webapp). 
Users can modify properties etc through WebDAV, so I relied on node 
types to preserve data integrity.

That was just my use case, but it's interesting to hear of other people 
interested in node types.

Later
Charlie

Mime
View raw message