Hi Svetlana,
Well I'd feel bad if I sent you down the wrong path, so I did a quick
test and got it working. It is possible to derive data from a node
that is not below the document node, by using
"hipposys:resolvepropertyreference" instead of
"hipposys:relativepropertyreference". I don't think this is
documented, but you can see an example in the default
"reviewed-actions" DDF at
/hippo:configuration/hippo:derivatives/reviewed-action.
I included my Java class and console configuration below, you will
probably want to refine the code a bit but the basic stuff works.
Hope this helps,
Niels
public class Title extends DerivedDataFunction {
@Override
public Map<String, Value[]> compute(Map<String, Value[]> parameters) {
try {
if (parameters.get("message") != null &&
parameters.get("message")[0] != null) {
String message = parameters.get("message")[0].getString();
String title = parameters.get("title")[0].getString();
if (StringUtils.isEmpty(title)) {
parameters.put("title", new Value[] {
getValueFactory().createValue(message) });
}
}
} catch (RepositoryException e) {
e.printStackTrace();
}
return parameters;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<sv:node sv:name="title" xmlns:sv="
http://www.jcp.org/jcr/sv/1.0">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>hipposys:deriveddefinition</sv:value>
</sv:property>
<sv:property sv:name="hipposys:classname" sv:type="String">
<sv:value>org.gogreen.deriveddata.Title</sv:value>
</sv:property>
<sv:property sv:name="hipposys:nodetype" sv:type="String">
<sv:value>gogreen:contentdocument</sv:value>
</sv:property>
<sv:property sv:name="hipposys:serialver" sv:type="Long">
<sv:value>1</sv:value>
</sv:property>
<sv:node sv:name="hipposys:accessed">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>hipposys:propertyreferences</sv:value>
</sv:property>
<sv:node sv:name="message">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>hipposys:resolvepropertyreference</sv:value>
</sv:property>
<sv:property sv:name="hipposys:relPath" sv:type="String">
<sv:value>../hippo:translation/hippo:message</sv:value>
</sv:property>
</sv:node>
<sv:node sv:name="title">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>hipposys:relativepropertyreference</sv:value>
</sv:property>
<sv:property sv:name="hipposys:relPath" sv:type="String">
<sv:value>gogreen:title</sv:value>
</sv:property>
</sv:node>
</sv:node>
<sv:node sv:name="hipposys:derived">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>hipposys:propertyreferences</sv:value>
</sv:property>
<sv:node sv:name="title">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>hipposys:relativepropertyreference</sv:value>
</sv:property>
<sv:property sv:name="hipposys:relPath" sv:type="String">
<sv:value>gogreen:title</sv:value>
</sv:property>
</sv:node>
</sv:node>
</sv:node>