Search in sources :

Example 16 with PropertyId

use of org.apache.jackrabbit.core.id.PropertyId in project jackrabbit by apache.

the class ItemManager method getChildProperties.

/**
 * @param parentId
 * @return
 * @throws ItemNotFoundException
 * @throws AccessDeniedException
 * @throws RepositoryException
 */
synchronized PropertyIterator getChildProperties(NodeId parentId) throws ItemNotFoundException, AccessDeniedException, RepositoryException {
    sanityCheck();
    ItemData data = getItemData(parentId);
    if (!data.isNode()) {
        String msg = "can't list child properties of property " + parentId;
        log.debug(msg);
        throw new RepositoryException(msg);
    }
    ArrayList<PropertyId> childIds = new ArrayList<PropertyId>();
    Iterator<Name> iter = ((NodeState) data.getState()).getPropertyNames().iterator();
    while (iter.hasNext()) {
        Name propName = iter.next();
        PropertyId id = new PropertyId(parentId, propName);
        // delay check for read-access until item is being built
        // thus avoid duplicate check
        childIds.add(id);
    }
    return new LazyItemIterator(sessionContext, childIds);
}
Also used : ArrayList(java.util.ArrayList) RepositoryException(javax.jcr.RepositoryException) PropertyId(org.apache.jackrabbit.core.id.PropertyId) Name(org.apache.jackrabbit.spi.Name)

Example 17 with PropertyId

use of org.apache.jackrabbit.core.id.PropertyId in project jackrabbit by apache.

the class PropertyValueOperand method getPropertyState.

/**
 * Returns the property state for the given score node or <code>null</code>
 * if none exists.
 *
 * @param sn the current score node.
 * @param context the evaluation context.
 * @return the property state or <code>null</code>.
 * @throws RepositoryException if an error occurs while reading.
 */
public final PropertyState getPropertyState(ScoreNode sn, EvaluationContext context) throws RepositoryException {
    ItemStateManager ism = context.getItemStateManager();
    PropertyId propId = new PropertyId(sn.getNodeId(), operand.getPropertyQName());
    try {
        return (PropertyState) ism.getItemState(propId);
    } catch (NoSuchItemStateException e) {
        return null;
    } catch (ItemStateException e) {
        throw new RepositoryException(e);
    }
}
Also used : NoSuchItemStateException(org.apache.jackrabbit.core.state.NoSuchItemStateException) ItemStateManager(org.apache.jackrabbit.core.state.ItemStateManager) RepositoryException(javax.jcr.RepositoryException) PropertyId(org.apache.jackrabbit.core.id.PropertyId) PropertyState(org.apache.jackrabbit.core.state.PropertyState) NoSuchItemStateException(org.apache.jackrabbit.core.state.NoSuchItemStateException) ItemStateException(org.apache.jackrabbit.core.state.ItemStateException)

Example 18 with PropertyId

use of org.apache.jackrabbit.core.id.PropertyId in project jackrabbit by apache.

the class AbstractVISProvider method createPropertyState.

/**
 * {@inheritDoc}
 */
public VirtualPropertyState createPropertyState(VirtualNodeState parent, Name name, int type, boolean multiValued) throws RepositoryException {
    PropertyId id = new PropertyId(parent.getNodeId(), name);
    VirtualPropertyState prop = new VirtualPropertyState(id);
    prop.setType(type);
    prop.setMultiValued(multiValued);
    return prop;
}
Also used : PropertyId(org.apache.jackrabbit.core.id.PropertyId)

Example 19 with PropertyId

use of org.apache.jackrabbit.core.id.PropertyId in project jackrabbit by apache.

the class InternalVersionManagerImpl method canCheckout.

/**
 * {@inheritDoc}
 *
 * this method currently does no modifications to the persistence and just
 * checks if the checkout is valid in respect to a possible activity set on
 * the session
 */
public NodeId canCheckout(NodeStateEx state, NodeId activityId) throws RepositoryException {
    NodeId baseId = state.getPropertyValue(NameConstants.JCR_BASEVERSION).getNodeId();
    if (activityId != null) {
        // exist in 'this' workspace
        if (stateMgr.hasNodeReferences(activityId)) {
            try {
                NodeReferences refs = stateMgr.getNodeReferences(activityId);
                for (PropertyId id : refs.getReferences()) {
                    if (!state.hasNode(id.getParentId())) {
                        throw new ActivityViolationException("Unable to checkout. " + "Activity is already used for the same node in " + "another workspace.");
                    }
                }
            } catch (ItemStateException e) {
                throw new RepositoryException("Error during checkout.", e);
            }
        }
        // If there is a version in H that is not an eventual predecessor of N but
        // whose jcr:activity references A, then the checkout fails with an
        // ActivityViolationException
        InternalActivityImpl a = (InternalActivityImpl) getItem(activityId);
        NodeId historyId = state.getPropertyValue(NameConstants.JCR_VERSIONHISTORY).getNodeId();
        InternalVersionHistory history = (InternalVersionHistory) getItem(historyId);
        InternalVersion version = a.getLatestVersion(history);
        if (version != null) {
            InternalVersion baseVersion = (InternalVersion) getItem(baseId);
            while (baseVersion != null && !baseVersion.getId().equals(version.getId())) {
                baseVersion = baseVersion.getLinearPredecessor();
            }
            if (baseVersion == null) {
                throw new ActivityViolationException("Unable to checkout. " + "Activity is used by another version on a different branch: " + version.getName());
            }
        }
    }
    return baseId;
}
Also used : NodeId(org.apache.jackrabbit.core.id.NodeId) NodeReferences(org.apache.jackrabbit.core.state.NodeReferences) ActivityViolationException(javax.jcr.version.ActivityViolationException) RepositoryException(javax.jcr.RepositoryException) PropertyId(org.apache.jackrabbit.core.id.PropertyId) InvalidItemStateException(javax.jcr.InvalidItemStateException) ItemStateException(org.apache.jackrabbit.core.state.ItemStateException)

Example 20 with PropertyId

use of org.apache.jackrabbit.core.id.PropertyId in project jackrabbit by apache.

the class BundleBindingTest method testComplexBundle.

/**
 * Tests serialization of a complex bundle.
 */
public void testComplexBundle() throws Exception {
    NodeId id = new NodeId(1, 2);
    NodePropBundle bundle = new NodePropBundle(id);
    bundle.setParentId(new NodeId(3, 4));
    bundle.setNodeTypeName(NameConstants.NT_UNSTRUCTURED);
    bundle.setMixinTypeNames(Collections.singleton(NameConstants.MIX_CREATED));
    bundle.setReferenceable(true);
    bundle.setSharedSet(new HashSet<NodeId>(Arrays.asList(new NodeId(5, 6), new NodeId(7, 8), new NodeId(9, 10))));
    PropertyEntry property;
    property = new PropertyEntry(new PropertyId(id, NameConstants.JCR_CREATED));
    property.setType(PropertyType.DATE);
    property.setMultiValued(false);
    Calendar date = Calendar.getInstance();
    date.setTimeInMillis(1234567890);
    property.setValues(new InternalValue[] { InternalValue.create(date) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, NameConstants.JCR_CREATEDBY));
    property.setType(PropertyType.STRING);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create("test") });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "binary")));
    property.setType(PropertyType.BINARY);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "boolean")));
    property.setType(PropertyType.BOOLEAN);
    property.setMultiValued(true);
    property.setValues(new InternalValue[] { InternalValue.create(true), InternalValue.create(false) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "date")));
    property.setType(PropertyType.DATE);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(date) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "decimal")));
    property.setType(PropertyType.DECIMAL);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(new BigDecimal("1234567890.0987654321")) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "double")));
    property.setType(PropertyType.DOUBLE);
    property.setMultiValued(true);
    property.setValues(new InternalValue[] { InternalValue.create(1.0), InternalValue.create(Math.PI) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "long")));
    property.setType(PropertyType.LONG);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(1234567890) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "name")));
    property.setType(PropertyType.NAME);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(NameConstants.JCR_MIMETYPE) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "path")));
    property.setType(PropertyType.PATH);
    property.setMultiValued(true);
    PathFactory pathFactory = PathFactoryImpl.getInstance();
    Path root = pathFactory.getRootPath();
    Path path = pathFactory.create(root, NameConstants.JCR_SYSTEM, false);
    property.setValues(new InternalValue[] { InternalValue.create(root), InternalValue.create(path) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "reference")));
    property.setType(PropertyType.REFERENCE);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(new NodeId(11, 12)) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "string")));
    property.setType(PropertyType.STRING);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create("test") });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "uri")));
    property.setType(PropertyType.URI);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(new URI("http://jackrabbit.apache.org/")) });
    bundle.addProperty(property);
    property = new PropertyEntry(new PropertyId(id, factory.create("", "weakreference")));
    property.setType(PropertyType.WEAKREFERENCE);
    property.setMultiValued(false);
    property.setValues(new InternalValue[] { InternalValue.create(new NodeId(13, 14), true) });
    bundle.addProperty(property);
    bundle.addChildNodeEntry(NameConstants.JCR_SYSTEM, new NodeId(15, 16));
    bundle.addChildNodeEntry(NameConstants.JCR_VERSIONSTORAGE, new NodeId(17, 18));
    assertBundleRoundtrip(bundle);
    assertBundleSerialization(bundle, new byte[] { 2, 0, 0, 1, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, -1, -1, -1, -1, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 73, -106, 2, -46, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 116, 101, 115, 116, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 109, 105, 109, 101, 84, 121, 112, 101, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 18, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 29, 49, 57, 55, 48, 45, 48, 49, 45, 49, 53, 84, 48, 55, 58, 53, 54, 58, 48, 55, 46, 56, 57, 48, 43, 48, 49, 58, 48, 48, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 6, 0, 0, 0, 17, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 29, 104, 116, 116, 112, 58, 47, 47, 106, 97, 99, 107, 114, 97, 98, 98, 105, 116, 46, 97, 112, 97, 99, 104, 101, 46, 111, 114, 103, 47, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 116, 101, 115, 116, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 2, 63, -16, 0, 0, 0, 0, 0, 0, 64, 9, 33, -5, 84, 68, 45, 24, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 29, 49, 57, 55, 48, 45, 48, 49, 45, 49, 53, 84, 48, 55, 58, 53, 54, 58, 48, 55, 46, 56, 57, 48, 43, 48, 49, 58, 48, 48, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 1, 1, 0, 21, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 46, 48, 57, 56, 55, 54, 53, 52, 51, 50, 49, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 123, 125, 0, 0, 0, 37, 123, 125, 9, 123, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 106, 99, 112, 46, 111, 114, 103, 47, 106, 99, 114, 47, 49, 46, 48, 125, 115, 121, 115, 116, 101, 109, -1, -1, -1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 6, 115, 121, 115, 116, 101, 109, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 14, 118, 101, 114, 115, 105, 111, 110, 83, 116, 111, 114, 97, 103, 101, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0 });
}
Also used : Path(org.apache.jackrabbit.spi.Path) PropertyEntry(org.apache.jackrabbit.core.persistence.util.NodePropBundle.PropertyEntry) Calendar(java.util.Calendar) NodeId(org.apache.jackrabbit.core.id.NodeId) PathFactory(org.apache.jackrabbit.spi.PathFactory) URI(java.net.URI) BigDecimal(java.math.BigDecimal) PropertyId(org.apache.jackrabbit.core.id.PropertyId)

Aggregations

PropertyId (org.apache.jackrabbit.core.id.PropertyId)59 Name (org.apache.jackrabbit.spi.Name)29 PropertyState (org.apache.jackrabbit.core.state.PropertyState)25 NodeState (org.apache.jackrabbit.core.state.NodeState)23 RepositoryException (javax.jcr.RepositoryException)22 ItemStateException (org.apache.jackrabbit.core.state.ItemStateException)22 NodeId (org.apache.jackrabbit.core.id.NodeId)16 InternalValue (org.apache.jackrabbit.core.value.InternalValue)14 NoSuchItemStateException (org.apache.jackrabbit.core.state.NoSuchItemStateException)12 ChildNodeEntry (org.apache.jackrabbit.core.state.ChildNodeEntry)11 HashSet (java.util.HashSet)10 InvalidItemStateException (javax.jcr.InvalidItemStateException)9 ArrayList (java.util.ArrayList)7 EffectiveNodeType (org.apache.jackrabbit.core.nodetype.EffectiveNodeType)6 ConstraintViolationException (javax.jcr.nodetype.ConstraintViolationException)5 NodeReferences (org.apache.jackrabbit.core.state.NodeReferences)5 PropertyDefinitionImpl (org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl)5 ItemId (org.apache.jackrabbit.core.id.ItemId)4 NodeTypeManagerImpl (org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl)4 PropertyEntry (org.apache.jackrabbit.core.persistence.util.NodePropBundle.PropertyEntry)4