You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/09/14 17:22:02 UTC
svn commit: r1170681 - in /jackrabbit/sandbox/jackrabbit-mk:
jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/
jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/benchmark/
jackrabbit-spi-commons/src/main/java/org/apache/jackr...
Author: mduerig
Date: Wed Sep 14 15:22:01 2011
New Revision: 1170681
URL: http://svn.apache.org/viewvc?rev=1170681&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP)
refactor: consolidate Function et all
Modified:
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/GetItemsTest.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/benchmark/ReadPerformanceTest.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/ItemInfoBuilder.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Iterators.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Predicate.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Predicates.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Transformer.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicate1.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicates.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/GetItemsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/GetItemsTest.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/GetItemsTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/GetItemsTest.java Wed Sep 14 15:22:01 2011
@@ -27,7 +27,7 @@ import org.apache.jackrabbit.spi.QNodeDe
import org.apache.jackrabbit.spi.RepositoryService;
import org.apache.jackrabbit.spi.SessionInfo;
import org.apache.jackrabbit.spi.commons.ItemInfoBuilder.NodeInfoBuilder;
-import org.apache.jackrabbit.spi.commons.iterator.Predicate;
+import org.apache.jackrabbit.spi.commons.util.Predicate1;
import javax.jcr.AccessDeniedException;
import javax.jcr.Item;
@@ -43,8 +43,8 @@ import static org.apache.jackrabbit.spi.
import static org.apache.jackrabbit.spi.commons.iterator.Iterators.singleton;
/**
- * Test cases for {@link RepositoryService#getItemInfos(SessionInfo, NodeId)}. Specifically
- * for JCR-1797.
+ * Test cases for {@link RepositoryService#getItemInfos(org.apache.jackrabbit.spi.SessionInfo, org.apache.jackrabbit.spi.ItemId)}
+ * Specifically for JCR-1797.
*/
public class GetItemsTest extends AbstractJCR2SPITest {
private Session session;
@@ -155,8 +155,9 @@ public class GetItemsTest extends Abstra
return iteratorChain(
singleton(itemInfoStore.getItemInfo(itemId)),
- filterIterator(itemInfoStore.getItemInfos(), new Predicate<ItemInfo>() {
- public boolean evaluate(ItemInfo info) {
+ filterIterator(itemInfoStore.getItemInfos(), new Predicate1<ItemInfo>() {
+ @Override
+ public Boolean apply(ItemInfo info) {
return !itemId.equals(info.getId());
}
}));
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/benchmark/ReadPerformanceTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/benchmark/ReadPerformanceTest.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/benchmark/ReadPerformanceTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/benchmark/ReadPerformanceTest.java Wed Sep 14 15:22:01 2011
@@ -31,7 +31,7 @@ import org.apache.jackrabbit.spi.Session
import org.apache.jackrabbit.spi.commons.ItemInfoBuilder.NodeInfoBuilder;
import org.apache.jackrabbit.spi.commons.ItemInfoBuilder.PropertyInfoBuilder;
import org.apache.jackrabbit.spi.commons.ItemInfoCacheImpl;
-import org.apache.jackrabbit.spi.commons.iterator.Predicate;
+import org.apache.jackrabbit.spi.commons.util.Predicate1;
import javax.jcr.Item;
import javax.jcr.ItemNotFoundException;
@@ -84,8 +84,8 @@ public class ReadPerformanceTest extends
/**
* Ratios of the number of items in the whole content tree compared to the number of items
- * in a batch of a {@link RepositoryService#getItemInfos(SessionInfo, NodeId)} call.
- * The array contains one ratio per run
+ * in a batch of a {@link RepositoryService#getItemInfos(org.apache.jackrabbit.spi.SessionInfo, org.apache.jackrabbit.spi.ItemId)}
+ * call. The array contains one ratio per run
*/
private static int[] BATCH_RATIOS = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384};
@@ -304,8 +304,9 @@ public class ReadPerformanceTest extends
}
private Iterator<ItemInfo> getBatch() {
- return filterIterator(itemInfoStore.getItemInfos(), new Predicate<ItemInfo>() {
- public boolean evaluate(ItemInfo value) {
+ return filterIterator(itemInfoStore.getItemInfos(), new Predicate1<ItemInfo>() {
+ @Override
+ public Boolean apply(ItemInfo value) {
return rnd.nextInt(batchRatio) == 0;
}
});
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/ItemInfoBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/ItemInfoBuilder.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/ItemInfoBuilder.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/ItemInfoBuilder.java Wed Sep 14 15:22:01 2011
@@ -27,11 +27,11 @@ import org.apache.jackrabbit.spi.Propert
import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.commons.identifier.IdFactoryImpl;
import org.apache.jackrabbit.spi.commons.iterator.Iterators;
-import org.apache.jackrabbit.spi.commons.iterator.Predicate;
-import org.apache.jackrabbit.spi.commons.iterator.Transformer;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
+import org.apache.jackrabbit.spi.commons.util.Function1;
+import org.apache.jackrabbit.spi.commons.util.Predicate1;
import org.apache.jackrabbit.spi.commons.value.QValueFactoryImpl;
import javax.jcr.PropertyType;
@@ -445,15 +445,15 @@ public final class ItemInfoBuilder {
private Iterator<ChildInfo> getChildInfos() {
return transformIterator(filterIterator(itemInfos.iterator(),
- new Predicate<ItemInfo>(){
+ new Predicate1<ItemInfo>(){
@Override
- public boolean evaluate(ItemInfo info) {
+ public Boolean apply(ItemInfo info) {
return info.denotesNode();
}
}),
- new Transformer<ItemInfo, ChildInfo>(){
+ new Function1<ItemInfo, ChildInfo>(){
@Override
- public ChildInfo transform(ItemInfo info) {
+ public ChildInfo apply(ItemInfo info) {
return new ChildInfoImpl(
info.getPath().getName(), null,
Path.INDEX_DEFAULT);
@@ -463,15 +463,15 @@ public final class ItemInfoBuilder {
private Iterator<PropertyId> getPropertyIds() {
return transformIterator(filterIterator(itemInfos.iterator(),
- new Predicate<ItemInfo>(){
+ new Predicate1<ItemInfo>(){
@Override
- public boolean evaluate(ItemInfo info) {
+ public Boolean apply(ItemInfo info) {
return !info.denotesNode();
}
}),
- new Transformer<ItemInfo, PropertyId>(){
+ new Function1<ItemInfo, PropertyId>(){
@Override
- public PropertyId transform(ItemInfo info) {
+ public PropertyId apply(ItemInfo info) {
return (PropertyId) info.getId();
}
});
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Iterators.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Iterators.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Iterators.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/iterator/Iterators.java Wed Sep 14 15:22:01 2011
@@ -22,13 +22,14 @@ import org.apache.commons.collections.it
import org.apache.commons.collections.iterators.IteratorChain;
import org.apache.commons.collections.iterators.SingletonIterator;
import org.apache.commons.collections.iterators.TransformIterator;
+import org.apache.jackrabbit.spi.commons.util.Function1;
+import org.apache.jackrabbit.spi.commons.util.Predicate1;
import org.apache.jackrabbit.spi.commons.util.Unchecked;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
-
import java.util.Collection;
import java.util.Iterator;
@@ -123,12 +124,17 @@ public final class Iterators {
* @return
*/
public static <T> Iterator<T> filterIterator(Iterator<? extends T> iterator,
- final Predicate<? super T> predicate) {
+ final Predicate1<? super T> predicate) {
return cast(new FilterIterator(iterator, new org.apache.commons.collections.Predicate() {
@Override
public boolean evaluate(Object object) {
- return predicate.evaluate(Unchecked.<T>cast(object));
+ try {
+ return predicate.apply(Unchecked.<T>cast(object));
+ }
+ catch (Exception e) {
+ throw new IllegalArgumentException("Predicate may not throw exceptions", e);
+ }
}
}));
}
@@ -145,12 +151,17 @@ public final class Iterators {
* @return
*/
public static <T, R, S extends T> Iterator<R> transformIterator(Iterator<? extends T> iterator,
- final Transformer<S, ? super R> transformer) {
+ final Function1<S, ? super R> transformer) {
return cast(new TransformIterator(iterator, new org.apache.commons.collections.Transformer() {
@Override
public Object transform(Object input) {
- return transformer.transform(Unchecked.<S>cast(input));
+ try {
+ return transformer.apply(Unchecked.<S>cast(input));
+ }
+ catch (Exception e) {
+ throw new IllegalArgumentException("Transformer may not throw exceptions", e);
+ }
}
}));
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicate1.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicate1.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicate1.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicate1.java Wed Sep 14 15:22:01 2011
@@ -19,5 +19,10 @@
package org.apache.jackrabbit.spi.commons.util;
+/**
+ * Type safe counter part of {@link org.apache.commons.collections.Predicate}.
+ *
+ * @param <T> type of values this predicate is defined on
+ */
public interface Predicate1<T> extends Function1<T, Boolean> {
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicates.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicates.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicates.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/util/Predicates.java Wed Sep 14 15:22:01 2011
@@ -21,10 +21,55 @@ package org.apache.jackrabbit.spi.common
import java.util.Iterator;
+import static org.apache.jackrabbit.spi.commons.util.Unchecked.cast;
+
+/**
+ * Utility class containing pre defined {@link Predicate1}s and predicate functions
+ */
public final class Predicates {
+
+ /**
+ * A predicate which is always true
+ */
+ public static final Predicate1<?> TRUE = new Predicate1() {
+ @Override
+ public Boolean apply(Object arg) {
+ return true;
+ }
+ };
+
+ /**
+ * A predicate which is always false
+ */
+ public static final Predicate1<?> FALSE = new Predicate1() {
+ @Override
+ public Boolean apply(Object arg) {
+ return false;
+ }
+ };
+
private Predicates() {}
- public static <T> boolean exists(Function1<T, Boolean> predicate, Iterator<T> iterator) throws Exception {
+ /**
+ * A predicate which is always true
+ * @param <T>
+ * @return
+ */
+ public static <T> Predicate1<T> TRUE() {
+ return cast(TRUE);
+ }
+
+ /**
+ * A predicate which is always false
+ * @param <T>
+ * @return
+ */
+ public static <T> Predicate1<T> FALSE() {
+ return cast(FALSE);
+ }
+
+
+ public static <T> boolean exists(Predicate1<T> predicate, Iterator<T> iterator) throws Exception {
while (iterator.hasNext()) {
if (predicate.apply(iterator.next())) {
return true;
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java?rev=1170681&r1=1170680&r2=1170681&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java Wed Sep 14 15:22:01 2011
@@ -52,10 +52,9 @@ import org.apache.jackrabbit.spi.commons
import org.apache.jackrabbit.spi.commons.SessionInfoImpl;
import org.apache.jackrabbit.spi.commons.batch.ConsolidatingChangeLog;
import org.apache.jackrabbit.spi.commons.iterator.Iterators;
-import org.apache.jackrabbit.spi.commons.iterator.Predicate;
-import org.apache.jackrabbit.spi.commons.iterator.Transformer;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.util.Function1;
+import org.apache.jackrabbit.spi.commons.util.Predicate1;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
@@ -125,8 +124,8 @@ import static org.apache.jackrabbit.spi.
import static org.apache.jackrabbit.spi.commons.name.NameConstants.JCR_PRIMARYTYPE;
import static org.apache.jackrabbit.spi.commons.name.NameConstants.REP_ROOT;
import static org.apache.jackrabbit.spi.commons.name.NameConstants.ROOT;
-import static org.apache.jackrabbit.spi2microkernel.ItemInfos.buildItemInfos;
import static org.apache.jackrabbit.spi.commons.util.Maps.getOrElse;
+import static org.apache.jackrabbit.spi2microkernel.ItemInfos.buildItemInfos;
public class RepositoryServiceImpl extends AbstractRepositoryService {
private static final long BINARY_VALUE_INLINE_THRESHOLD = 0x1000;
@@ -413,9 +412,9 @@ public class RepositoryServiceImpl exten
final IdFactory idFactory = getIdFactory();
final String wspName = sessionInfo.getWorkspaceName();
- Iterator<PropertyId> propertyIds = Iterators.transformIterator(paths, new Transformer<String, PropertyId>() {
+ Iterator<PropertyId> propertyIds = Iterators.transformIterator(paths, new Function1<String, PropertyId>() {
@Override
- public PropertyId transform(String pathString) {
+ public PropertyId apply(String pathString) {
try {
pathString = PathUtils.concat("/", PathUtils.relativize('/' + wspName, pathString));
Path path = Paths.stringToPath(pathString);
@@ -433,9 +432,9 @@ public class RepositoryServiceImpl exten
return propertyIds;
}
else {
- return Iterators.filterIterator(propertyIds, new Predicate<PropertyId>() {
+ return Iterators.filterIterator(propertyIds, new Predicate1<PropertyId>() {
@Override
- public boolean evaluate(PropertyId propertyId) {
+ public Boolean apply(PropertyId propertyId) {
return propertyName.equals(propertyId.getName());
}
});