Package javax.jcr

Examples of javax.jcr.PropertyIterator


        // n1 has not yet been resolved.
        assertTrue(readOnly.itemExists(prop1Path));
        Property p1 = (Property) readOnly.getItem(prop1Path);
        assertTrue(p1.isSame(node2.getProperty("../" + Text.getName(prop1Path))));

        PropertyIterator it = node2.getParent().getProperties();
        assertTrue(it.getSize() >= 3);
    }
View Full Code Here


        // removed, if any references are left to this node.
        NodeTypeImpl mixin = session.getNodeTypeManager().getNodeType(ntName);
        if (mixin.isNodeType(NameConstants.MIX_REFERENCEABLE)) {
            EffectiveNodeType entRemaining = getRemainingENT(mixinValue);
            if (!entRemaining.includesNodeType(NameConstants.MIX_REFERENCEABLE)) {
                PropertyIterator iter = getReferences();
                if (iter.hasNext()) {
                    throw new ConstraintViolationException("Mixin type " + mixinName + " can not be removed: the node is being referenced through at least one property of type REFERENCE");
                }
            }
        }
View Full Code Here

        // reference properties on this node
        ensureCanSetProperty(n2, propertyName1, values);

        Property p1 = n2.setProperty(propertyName1, values);
        testRootNode.save();
        PropertyIterator iter = n1.getReferences();
        if (iter.hasNext()) {
            assertEquals("Wrong referer", iter.nextProperty().getPath(), p1.getPath());
        } else {
            fail("no referer");
        }

        // create references: n3.p1 -> n1
        Node n3 = testRootNode.addNode(nodeName3, testNodeType);
        n3.setProperty(propertyName1, n1);
        testRootNode.save();
        iter = n1.getReferences();
        while (iter.hasNext()) {
            Property p = iter.nextProperty();
            if (n2 != null && p.getParent().getPath().equals(n2.getPath())) {
                n2 = null;
            } else if (n3 != null && p.getParent().getPath().equals(n3.getPath())) {
                n3 = null;
            } else {
                fail("too many referers: " + p.getPath());
            }
        }
        if (n2 != null) {
            fail("referer not in references set: " + n2.getPath());
        }
        if (n3 != null) {
            fail("referer not in references set: " + n3.getPath());
        }

        // remove reference n3.p1 -> n1
        testRootNode.getNode(nodeName3).getProperty(propertyName1).remove();
        testRootNode.save();
        iter = n1.getReferences();
        if (iter.hasNext()) {
            assertEquals("Wrong referer", iter.nextProperty().getParent().getPath(), testRootNode.getNode(nodeName2).getPath());
        } else {
            fail("no referer");
        }
        if (iter.hasNext()) {
            fail("too many referers: " + iter.nextProperty().getPath());
        }

        // remove reference n2.p1 -> n1
        testRootNode.getNode(nodeName2).getProperty(propertyName1).setValue(new Value[0]);
        testRootNode.save();
        iter = n1.getReferences();
        if (iter.hasNext()) {
            fail("too many referers: " + iter.nextProperty().getPath());
        }
    }
View Full Code Here

        ensureCanSetProperty(n3, propertyName1, n3.getSession().getValueFactory().createValue(n1));

        n3.setProperty(propertyName1, n1);
        testRootNode.save();
        assertEquals("Wrong reference target.", n3.getProperty(propertyName1).getNode().getUUID(), n1.getUUID());
        PropertyIterator iter = n1.getReferences();
        if (iter.hasNext()) {
            assertEquals("Wrong referer", iter.nextProperty().getParent().getPath(), n3.getPath());
        } else {
            fail("no referer");
        }
        if (iter.hasNext()) {
            fail("too many referers: " + iter.nextProperty().getPath());
        }
        // change reference: n3.p1 -> n2
        n3.setProperty(propertyName1, n2);
        n3.save();
        assertEquals("Wrong reference target.", n3.getProperty(propertyName1).getNode().getUUID(), n2.getUUID());
        iter = n1.getReferences();
        if (iter.hasNext()) {
            fail("too many referers: " + iter.nextProperty().getPath());
        }
        iter = n2.getReferences();
        if (iter.hasNext()) {
            assertEquals("Wrong referer", iter.nextProperty().getParent().getPath(), n3.getPath());
        } else {
            fail("no referers");
        }
        if (iter.hasNext()) {
            fail("too many referers: " + iter.nextProperty().getPath());
        }

        // clear reference by overwriting by other type
        n3.setProperty(propertyName1, "Hello, world.");
        n3.save();
        iter = n2.getReferences();
        if (iter.hasNext()) {
            fail("too many referers: " + iter.nextProperty().getPath());
        }
    }
View Full Code Here

            }
            node.setPropertyValues(NameConstants.JCR_FROZENMIXINTYPES, PropertyType.NAME, ivalues);
        }

        // add the properties
        PropertyIterator piter = src.getProperties();
        while (piter.hasNext()) {
            PropertyImpl prop = (PropertyImpl) piter.nextProperty();
            int opv;
            if ((mode & MODE_COPY) > 0) {
                opv = OnParentVersionAction.COPY;
            } else {
                opv = prop.getDefinition().getOnParentVersion();
View Full Code Here

     * will be return; otherwise only the declared members.
     * @return A collection of members of this group.
     * @throws RepositoryException If an error occurs while collecting the members.
     */
    private Collection getMembers(boolean includeIndirect) throws RepositoryException {
        PropertyIterator itr = getNode().getWeakReferences(getSession().getJCRName(P_GROUPS));
        Collection members = new HashSet((int) itr.getSize());
        while (itr.hasNext()) {
            NodeImpl n = (NodeImpl) itr.nextProperty().getParent();
            if (n.isNodeType(NT_REP_GROUP)) {
                Group group = userManager.createGroup(n);
                // only retrieve indirect group-members if the group is not
                // yet present (detected eventual circular membership).
                if (members.add(group) && includeIndirect) {
View Full Code Here

        if ((NameConstants.MIX_REFERENCEABLE.equals(mixinName)
                || mixin.isDerivedFrom(NameConstants.MIX_REFERENCEABLE))
                && !entResulting.includesNodeType(NameConstants.MIX_REFERENCEABLE)) {
            // removing this mixin would effectively remove mix:referenceable:
            // make sure no references exist
            PropertyIterator iter = getReferences();
            if (iter.hasNext()) {
                throw new ConstraintViolationException(mixinName + " can not be removed: the node is being referenced"
                        + " through at least one property of type REFERENCE");
            }
        }
View Full Code Here

        // check lock and hold status
        int options = ItemValidator.CHECK_LOCK | ItemValidator.CHECK_HOLD;
        session.getValidator().checkModify(this, options, Permission.NONE);

        // update the properties
        PropertyIterator iter = getProperties();
        while (iter.hasNext()) {
            PropertyImpl p = (PropertyImpl) iter.nextProperty();
            if (!srcNode.hasProperty(p.getQName())) {
                p.internalRemove(true);
            }
        }
        iter = srcNode.getProperties();
        while (iter.hasNext()) {
            PropertyImpl p = (PropertyImpl) iter.nextProperty();
            // ignore system types
            if (p.getQName().equals(NameConstants.JCR_PRIMARYTYPE)
                    || p.getQName().equals(NameConstants.JCR_MIXINTYPES)
                    || p.getQName().equals(NameConstants.JCR_UUID)) {
                continue;
View Full Code Here

            } else {
                internalSetProperty(prop.getName(), prop.getValues()[0]);
            }
        }
        // remove properties that do not exist in the frozen representation
        PropertyIterator piter = getProperties();
        while (piter.hasNext()) {
            PropertyImpl prop = (PropertyImpl) piter.nextProperty();
            // ignore some props that are not well guarded by the OPV
            if (prop.getQName().equals(NameConstants.JCR_VERSIONHISTORY)) {
                continue;
            } else if (prop.getQName().equals(NameConstants.JCR_PREDECESSORS)) {
                continue;
View Full Code Here

        boolean referenceableOld = entOld.includesNodeType(NameConstants.MIX_REFERENCEABLE);
        boolean referenceableNew = entNew.includesNodeType(NameConstants.MIX_REFERENCEABLE);
        if (referenceableOld && !referenceableNew) {
            // node would become non-referenceable;
            // make sure no references exist
            PropertyIterator iter = getReferences();
            if (iter.hasNext()) {
                throw new ConstraintViolationException(
                        "the new primary type cannot be set as it would render "
                                + "this node 'non-referenceable' while it is still being "
                                + "referenced through at least one property of type REFERENCE");
            }
        }

        // do the actual modifications in content as mandated by the new primary type

        // modify the state of this node
        NodeState thisState = (NodeState) getOrCreateTransientItemState();
        thisState.setNodeTypeName(ntName);

        // set jcr:primaryType property
        internalSetProperty(NameConstants.JCR_PRIMARYTYPE, InternalValue.create(ntName));

        // walk through properties and child nodes and change definition as necessary

        // use temp set to avoid ConcurrentModificationException
        HashSet<Name> set = new HashSet<Name>(thisState.getPropertyNames());
        for (Name propName : set) {
            try {
                PropertyState propState =
                        (PropertyState) stateMgr.getItemState(
                                new PropertyId(thisState.getNodeId(), propName));
                if (!allDefs.contains(ntReg.getPropDef(propState.getDefinitionId()))) {
                    // try to find new applicable definition first and
                    // redefine property if possible
                    try {
                        PropertyImpl prop = (PropertyImpl) itemMgr.getItem(propState.getId());
                        if (prop.getDefinition().isProtected()) {
                            // remove 'orphaned' protected properties immediately
                            removeChildProperty(propName);
                            continue;
                        }
                        PropertyDefinitionImpl pdi = getApplicablePropertyDefinition(
                                propName, propState.getType(),
                                propState.isMultiValued(), false);
                        if (pdi.getRequiredType() != PropertyType.UNDEFINED
                                && pdi.getRequiredType() != propState.getType()) {
                            // value conversion required
                            if (propState.isMultiValued()) {
                                // convert value
                                Value[] values =
                                        ValueHelper.convert(
                                                prop.getValues(),
                                                pdi.getRequiredType(),
                                                session.getValueFactory());
                                // redefine property
                                prop.onRedefine(pdi.unwrap().getId());
                                // set converted values
                                prop.setValue(values);
                            } else {
                                // convert value
                                Value value =
                                        ValueHelper.convert(
                                                prop.getValue(),
                                                pdi.getRequiredType(),
                                                session.getValueFactory());
                                // redefine property
                                prop.onRedefine(pdi.unwrap().getId());
                                // set converted values
                                prop.setValue(value);
                            }
                        } else {
                            // redefine property
                            prop.onRedefine(pdi.unwrap().getId());
                        }
                        // update collection of added definitions
                        addedDefs.remove(pdi.unwrap());
                    } catch (ValueFormatException vfe) {
                        // value conversion failed, remove it
                        removeChildProperty(propName);
                    } catch (ConstraintViolationException cve) {
                        // no suitable definition found for this property,
                        // remove it
                        removeChildProperty(propName);
                    }
                }
            } catch (ItemStateException ise) {
                String msg = propName + ": failed to retrieve property state";
                log.error(msg, ise);
                throw new RepositoryException(msg, ise);
            }
        }

        // use temp array to avoid ConcurrentModificationException
        ArrayList<ChildNodeEntry> list = new ArrayList<ChildNodeEntry>(thisState.getChildNodeEntries());
        // start from tail to avoid problems with same-name siblings
        for (int i = list.size() - 1; i >= 0; i--) {
            ChildNodeEntry entry = list.get(i);
            try {
                NodeState nodeState = (NodeState) stateMgr.getItemState(entry.getId());
                if (!allDefs.contains(ntReg.getNodeDef(nodeState.getDefinitionId()))) {
                    // try to find new applicable definition first and
                    // redefine node if possible
                    try {
                        NodeImpl node = (NodeImpl) itemMgr.getItem(nodeState.getId());
                        if (node.getDefinition().isProtected()) {
                            // remove 'orphaned' protected child node immediately
                            removeChildNode(entry.getName(), entry.getIndex());
                            continue;
                        }
                        NodeDefinitionImpl ndi = getApplicableChildNodeDefinition(
                                entry.getName(),
                                nodeState.getNodeTypeName());
                        // redefine node
                        node.onRedefine(ndi.unwrap().getId());
                        // update collection of added definitions
                        addedDefs.remove(ndi.unwrap());
                    } catch (ConstraintViolationException cve) {
                        // no suitable definition found for this child node,
                        // remove it
                        removeChildNode(entry.getName(), entry.getIndex());
                    }
                }
            } catch (ItemStateException ise) {
                String msg = entry.getName() + ": failed to retrieve node state";
                log.error(msg, ise);
                throw new RepositoryException(msg, ise);
            }
        }

        // create items that are defined as auto-created by the new primary node
        // type and at the same time were not present with the old nt
        for (Iterator<ItemDef> iter = addedDefs.iterator(); iter.hasNext();) {
            ItemDef def = iter.next();
            if (def.isAutoCreated()) {
                if (def.definesNode()) {
                    NodeDefinitionImpl ndi = ntMgr.getNodeDefinition(((NodeDef) def).getId());
                    createChildNode(ndi.getQName(), ndi, (NodeTypeImpl) ndi.getDefaultPrimaryType(), null);
                } else {
View Full Code Here

TOP

Related Classes of javax.jcr.PropertyIterator

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.