]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.core/src/org/argeo/fm/jcr/JcrModel.java
e6e8efad1ed3bb8fe08a4edbbcd748076e5dc080
1 package org
.argeo
.fm
.jcr
;
4 import javax
.jcr
.Property
;
5 import javax
.jcr
.RepositoryException
;
7 import freemarker
.template
.SimpleScalar
;
8 import freemarker
.template
.TemplateHashModel
;
9 import freemarker
.template
.TemplateModel
;
10 import freemarker
.template
.TemplateModelException
;
11 import freemarker
.template
.TemplateNodeModel
;
12 import freemarker
.template
.TemplateSequenceModel
;
14 public class JcrModel
implements TemplateNodeModel
, TemplateHashModel
{
15 private final Node node
;
17 public JcrModel(Node node
) {
22 public TemplateSequenceModel
getChildNodes() throws TemplateModelException
{
24 return new NodeIteratorModel(node
.getNodes());
25 } catch (RepositoryException e
) {
26 throw new TemplateModelException("Cannot list children of " + node
, e
);
31 public String
getNodeName() throws TemplateModelException
{
33 return node
.getName();
34 } catch (RepositoryException e
) {
35 throw new TemplateModelException("Cannot get name of " + node
, e
);
40 public String
getNodeNamespace() throws TemplateModelException
{
41 // TODO find out namespace
46 public String
getNodeType() throws TemplateModelException
{
48 return node
.getPrimaryNodeType().getName();
49 } catch (RepositoryException e
) {
50 throw new TemplateModelException("Cannot get node type of " + node
, e
);
55 public TemplateNodeModel
getParentNode() throws TemplateModelException
{
57 Node parent
= node
.getParent();
60 return new JcrModel(parent
);
61 } catch (RepositoryException e
) {
62 throw new TemplateModelException("Cannot get parent of " + node
, e
);
67 public TemplateModel
get(String key
) throws TemplateModelException
{
69 Property property
= node
.getProperty(key
);
72 return new SimpleScalar(property
.getString());
73 } catch (RepositoryException e
) {
74 throw new TemplateModelException("Cannot get property " + key
+ " of " + node
, e
);
79 public boolean isEmpty() throws TemplateModelException
{
80 // JCR default properties always accessible