2010-11-09 1 views
1

Im a java dev. и теперь я сталкиваюсь с jackrabbit v.1.6.4. Теперь одна из моих целей - создать узел в веб-браузере jcr, поэтому, когда я должен создать узел с обязательным свойством, конечно, исключение constrainviolation - это бросок.JCR найти обязательное свойство во время выполнения

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

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

Столько большое спасибо Все

имеют хороший день

J.

ответ

1

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

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

   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

Хотя это может сработать, вы не должны полагаться на реализацию классов (т.е. NodeTypeManagerImpl). Это может сломаться в любое время в будущем. – michid

+0

у вас есть право !! На самом деле я помещаю todo для поиска NodeTypeRegistry, проходя только через методы, предоставляемые интерфейсами. – joksy82

0

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

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); 

 Смежные вопросы

  • Нет связанных вопросов^_^