JCR находит обязательное свойство во время выполнения - PullRequest
1 голос
/ 09 ноября 2010

Я Java-разработчик. и теперь я сталкиваюсь с Jackrabbit v.1.6.4. Теперь одна из моих целей состоит в том, чтобы создать узел в веб-браузере jcr, поэтому, когда мне нужно создать узел с обязательным свойством, конечно, исключение - бросить.

У меня есть вопрос, существует ли способ, во время создания, извлечь обязательное свойство? Например, присваивать им какое-то значение по умолчанию и иметь возможность сохранить узел.

Одна очень хорошая вещь - иметь экземпляр PropDef формы NodeTypeDef, но из интерфейса узла я могу получить только PropertyDefinition, который в моем случае бесполезен.

Огромное спасибо всем

Хорошего дня

J.

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

так что этот кусок кода делает именно то, что я хочу, и я буду предоставлять другим пользователям.

В любом случае большое спасибо всем

                Node parent = (Node)session.getItem(path);//Jcr path to the parent node

                Node added = parent.addNode(newNodeName);//Add new node


                Workspace workspace = session.getWorkspace();                   
                NodeTypeManager ntMgr = workspace.getNodeTypeManager();

                NodeTypeRegistry ntReg=null;
                try {
                    ntReg = ((NodeTypeManagerImpl) ntMgr).getNodeTypeRegistry();
                } catch (ClassCastException e) {
                    e.printStackTrace();
                }

                NameFactory nameFactory = NameFactoryImpl.getInstance();
                Name namejcr = nameFactory.create(type);

                EffectiveNodeType effnodetype = ntReg.getEffectiveNodeType(namejcr);



                //Here i get all the property definition for this type of node, so from here i
                //can know which of them are mandatory
                PropDef[] pdefs = effnodetype.getAllPropDefs();
0 голосов
/ 10 ноября 2010

Чтобы определить, защищено ли свойство, вы можете сделать:

PropertyDefinition propDef = property.getDefinition();
boolean isProtected = propDef.isProtected();

Или попробуйте что-нибудь в этом духе, чтобы определить, позволяет ли тип узла установить для определенного свойства определенное значение:

Workspace workspace = session.getWorkspace(); 
NodeTypeManager ntMgr = wsp.getNodeTypeManager();
NodeType nt = ntMgr.getNodeType("nodeTypeName");
boolean canSet = nt.canSetProperty("propName", value);
...