Search in sources :

Example 86 with PropertyIterator

use of javax.jcr.PropertyIterator in project jackrabbit-oak by apache.

the class AuthorizablePropertyTest method testGroupGetProperties.

@Test
public void testGroupGetProperties() throws RepositoryException, NotExecutableException {
    Node n = getNode(group, superuser);
    for (PropertyIterator it = n.getProperties(); it.hasNext(); ) {
        Property prop = it.nextProperty();
        if (prop.getDefinition().isProtected()) {
            assertFalse(group.hasProperty(prop.getName()));
            assertNull(group.getProperty(prop.getName()));
        } else {
            // authorizable defined property
            assertTrue(group.hasProperty(prop.getName()));
            assertNotNull(group.getProperty(prop.getName()));
        }
    }
}
Also used : Node(javax.jcr.Node) PropertyIterator(javax.jcr.PropertyIterator) Property(javax.jcr.Property) Test(org.junit.Test)

Example 87 with PropertyIterator

use of javax.jcr.PropertyIterator in project jackrabbit-oak by apache.

the class AuthorizablePropertyTest method testUserGetProperties.

@Test
public void testUserGetProperties() throws RepositoryException, NotExecutableException {
    Node n = getNode(user, superuser);
    for (PropertyIterator it = n.getProperties(); it.hasNext(); ) {
        Property p = it.nextProperty();
        if (p.getDefinition().isProtected()) {
            assertFalse(user.hasProperty(p.getName()));
            assertNull(user.getProperty(p.getName()));
        } else {
            // authorizable defined property
            assertTrue(user.hasProperty(p.getName()));
            assertNotNull(user.getProperty(p.getName()));
        }
    }
}
Also used : Node(javax.jcr.Node) PropertyIterator(javax.jcr.PropertyIterator) Property(javax.jcr.Property) Test(org.junit.Test)

Example 88 with PropertyIterator

use of javax.jcr.PropertyIterator in project jackrabbit-oak by apache.

the class RepositoryUpgradeTest method verifyReferencePropertiesContent.

@Test
public void verifyReferencePropertiesContent() throws Exception {
    Session session = createAdminSession();
    try {
        assertTrue(session.nodeExists("/referenceable"));
        String testNodeIdentifier = session.getNode("/referenceable").getIdentifier();
        assertTrue(session.nodeExists("/properties"));
        Node properties = session.getNode("/properties");
        assertEquals(PropertyType.REFERENCE, properties.getProperty("reference").getType());
        assertEquals(testNodeIdentifier, properties.getProperty("reference").getString());
        assertEquals("/referenceable", properties.getProperty("reference").getNode().getPath());
        PropertyIterator refs = session.getNode("/referenceable").getReferences();
        assertTrue(refs.hasNext());
        assertEquals(properties.getPath() + "/reference", refs.nextProperty().getPath());
        assertFalse(refs.hasNext());
        PropertyIterator refs2 = session.getNode("/versionable").getReferences();
        assertTrue(refs2.hasNext());
        assertEquals(properties.getPath() + "/mv_reference", refs2.nextProperty().getPath());
        assertFalse(refs2.hasNext());
        assertEquals(PropertyType.WEAKREFERENCE, properties.getProperty("weak_reference").getType());
        assertEquals(testNodeIdentifier, properties.getProperty("weak_reference").getString());
        assertEquals("/referenceable", properties.getProperty("weak_reference").getNode().getPath());
        PropertyIterator weakRefs = session.getNode("/referenceable").getWeakReferences();
        assertTrue(weakRefs.hasNext());
        assertEquals(properties.getPath() + "/weak_reference", weakRefs.nextProperty().getPath());
        assertFalse(weakRefs.hasNext());
        PropertyIterator weakRefs2 = session.getNode("/versionable").getWeakReferences();
        assertTrue(weakRefs2.hasNext());
        assertEquals(properties.getPath() + "/mv_weak_reference", weakRefs2.nextProperty().getPath());
        assertFalse(weakRefs2.hasNext());
    } finally {
        session.logout();
    }
}
Also used : Node(javax.jcr.Node) PropertyIterator(javax.jcr.PropertyIterator) Session(javax.jcr.Session) Test(org.junit.Test)

Example 89 with PropertyIterator

use of javax.jcr.PropertyIterator in project sling by apache.

the class MockedResource method adaptTo.

@SuppressWarnings("unchecked")
@Override
public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
    if (type.equals(Node.class)) {
        try {
            return (AdapterType) getSession().getNode(getPath());
        } catch (Exception e) {
            logger.error("Exception occurred: " + e, e);
            throw new RuntimeException("Exception occurred: " + e, e);
        }
    } else if (type.equals(ValueMap.class)) {
        try {
            Session session = getSession();
            Node node = session.getNode(getPath());
            HashMap<String, Object> map = new HashMap<String, Object>();
            PropertyIterator properties = node.getProperties();
            while (properties.hasNext()) {
                Property p = properties.nextProperty();
                if (p.getType() == PropertyType.BOOLEAN) {
                    map.put(p.getName(), p.getBoolean());
                } else if (p.getType() == PropertyType.STRING) {
                    map.put(p.getName(), p.getString());
                } else if (p.getType() == PropertyType.DATE) {
                    map.put(p.getName(), p.getDate().getTime());
                } else if (p.getType() == PropertyType.NAME) {
                    map.put(p.getName(), p.getName());
                } else if (p.getType() == PropertyType.LONG) {
                    map.put(p.getName(), p.getLong());
                } else {
                    throw new RuntimeException("Unsupported property type: " + p.getType());
                }
            }
            ValueMap valueMap = new ValueMapDecorator(map);
            return (AdapterType) valueMap;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    } else if (type.equals(ModifiableValueMap.class)) {
        return (AdapterType) new ModifiableValueMap() {

            public Collection<Object> values() {
                throw new UnsupportedOperationException();
            }

            public int size() {
                throw new UnsupportedOperationException();
            }

            public Object remove(Object arg0) {
                Session session = getSession();
                try {
                    final Node node = session.getNode(getPath());
                    final Property p = node.getProperty(String.valueOf(arg0));
                    if (p != null) {
                        p.remove();
                    }
                    // the return value is never used
                    return null;
                } catch (PathNotFoundException pnfe) {
                    // perfectly fine
                    return null;
                } catch (RepositoryException e) {
                    throw new RuntimeException(e);
                }
            }

            public void putAll(Map<? extends String, ? extends Object> arg0) {
                throw new UnsupportedOperationException();
            }

            public Object put(String arg0, Object arg1) {
                Session session = getSession();
                try {
                    final Node node = session.getNode(getPath());
                    Object result = null;
                    if (node.hasProperty(arg0)) {
                        final Property previous = node.getProperty(arg0);
                        if (previous == null) {
                        // null
                        } else if (previous.getType() == PropertyType.STRING) {
                            result = previous.getString();
                        } else if (previous.getType() == PropertyType.DATE) {
                            result = previous.getDate();
                        } else if (previous.getType() == PropertyType.BOOLEAN) {
                            result = previous.getBoolean();
                        } else {
                            throw new UnsupportedOperationException();
                        }
                    }
                    if (arg1 instanceof String) {
                        node.setProperty(arg0, (String) arg1);
                    } else if (arg1 instanceof Calendar) {
                        node.setProperty(arg0, (Calendar) arg1);
                    } else if (arg1 instanceof Boolean) {
                        node.setProperty(arg0, (Boolean) arg1);
                    } else if (arg1 instanceof Date) {
                        final Calendar c = Calendar.getInstance();
                        c.setTime((Date) arg1);
                        node.setProperty(arg0, c);
                    } else if (arg1 instanceof Number) {
                        Number n = (Number) arg1;
                        node.setProperty(arg0, n.longValue());
                    } else {
                        throw new UnsupportedOperationException();
                    }
                    return result;
                } catch (RepositoryException e) {
                    throw new RuntimeException(e);
                }
            }

            public Set<String> keySet() {
                Session session = getSession();
                try {
                    final Node node = session.getNode(getPath());
                    final PropertyIterator pi = node.getProperties();
                    final Set<String> result = new HashSet<String>();
                    while (pi.hasNext()) {
                        final Property p = pi.nextProperty();
                        result.add(p.getName());
                    }
                    return result;
                } catch (RepositoryException e) {
                    throw new RuntimeException(e);
                }
            }

            public boolean isEmpty() {
                throw new UnsupportedOperationException();
            }

            public Object get(Object arg0) {
                Session session = getSession();
                try {
                    final Node node = session.getNode(getPath());
                    final String key = String.valueOf(arg0);
                    if (node.hasProperty(key)) {
                        return node.getProperty(key);
                    } else {
                        return null;
                    }
                } catch (RepositoryException re) {
                    throw new RuntimeException(re);
                }
            }

            public Set<Entry<String, Object>> entrySet() {
                throw new UnsupportedOperationException();
            }

            public boolean containsValue(Object arg0) {
                throw new UnsupportedOperationException();
            }

            public boolean containsKey(Object arg0) {
                Session session = getSession();
                try {
                    final Node node = session.getNode(getPath());
                    return node.hasProperty(String.valueOf(arg0));
                } catch (RepositoryException re) {
                    throw new RuntimeException(re);
                }
            }

            public void clear() {
                throw new UnsupportedOperationException();
            }

            public <T> T get(String name, T defaultValue) {
                throw new UnsupportedOperationException();
            }

            public <T> T get(String name, Class<T> type) {
                Session session = getSession();
                try {
                    final Node node = session.getNode(getPath());
                    if (node == null) {
                        return null;
                    }
                    if (!node.hasProperty(name)) {
                        return null;
                    }
                    Property p = node.getProperty(name);
                    if (p == null) {
                        return null;
                    }
                    if (type.equals(Calendar.class)) {
                        return (T) p.getDate();
                    } else if (type.equals(String.class)) {
                        return (T) p.getString();
                    } else {
                        throw new UnsupportedOperationException();
                    }
                } catch (RepositoryException e) {
                    throw new RuntimeException(e);
                }
            }
        };
    } else {
        return super.adaptTo(type);
    }
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) ValueMap(org.apache.sling.api.resource.ValueMap) ModifiableValueMap(org.apache.sling.api.resource.ModifiableValueMap) Node(javax.jcr.Node) Property(javax.jcr.Property) Calendar(java.util.Calendar) PropertyIterator(javax.jcr.PropertyIterator) ValueMapDecorator(org.apache.sling.api.wrappers.ValueMapDecorator) RepositoryException(javax.jcr.RepositoryException) PathNotFoundException(javax.jcr.PathNotFoundException) RepositoryException(javax.jcr.RepositoryException) ModifiableValueMap(org.apache.sling.api.resource.ModifiableValueMap) Date(java.util.Date) Collection(java.util.Collection) PathNotFoundException(javax.jcr.PathNotFoundException) Session(javax.jcr.Session)

Example 90 with PropertyIterator

use of javax.jcr.PropertyIterator in project sling by apache.

the class MockNode method getProperties.

public PropertyIterator getProperties(String namePattern) throws RepositoryException {
    PropertyIterator iterator = getProperties();
    List<Property> properties = new ArrayList<Property>();
    while (iterator.hasNext()) {
        Property p = iterator.nextProperty();
        String name = p.getName();
        if (ChildrenCollectorFilter.matches(name, namePattern)) {
            properties.add(p);
        }
    }
    return new MockPropertyIterator(properties.iterator());
}
Also used : PropertyIterator(javax.jcr.PropertyIterator) ArrayList(java.util.ArrayList) Property(javax.jcr.Property)

Aggregations

PropertyIterator (javax.jcr.PropertyIterator)96 Property (javax.jcr.Property)68 Node (javax.jcr.Node)57 NodeIterator (javax.jcr.NodeIterator)28 Value (javax.jcr.Value)23 Test (org.junit.Test)16 RepositoryException (javax.jcr.RepositoryException)15 Session (javax.jcr.Session)15 ArrayList (java.util.ArrayList)14 HashSet (java.util.HashSet)10 PathNotFoundException (javax.jcr.PathNotFoundException)8 HashMap (java.util.HashMap)5 JackrabbitNode (org.apache.jackrabbit.api.JackrabbitNode)5 NodeImpl (org.apache.jackrabbit.core.NodeImpl)5 PropertyImpl (org.apache.jackrabbit.core.PropertyImpl)5 NoSuchElementException (java.util.NoSuchElementException)3 AccessDeniedException (javax.jcr.AccessDeniedException)3 InvalidItemStateException (javax.jcr.InvalidItemStateException)3 ValueFormatException (javax.jcr.ValueFormatException)3 ConstraintViolationException (javax.jcr.nodetype.ConstraintViolationException)3