You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/10/21 13:38:44 UTC
svn commit: r827966 [11/15] - in /jackrabbit/sandbox/JCR-1456: ./
jackrabbit-api/src/main/java/org/apache/jackrabbit/api/
jackrabbit-api/src/main/java/org/apache/jackrabbit/api/management/
jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security...
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/pom.xml?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/pom.xml (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/pom.xml Wed Oct 21 11:38:31 2009
@@ -34,6 +34,7 @@
</parent>
<artifactId>jackrabbit-jcr2spi</artifactId>
<name>Jackrabbit JCR to SPI</name>
+ <packaging>bundle</packaging>
<scm>
<connection>
@@ -48,6 +49,19 @@
<build>
<plugins>
<plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Export-Package>
+ org.apache.jackrabbit.jcr2spi;version=${pom.version};include:=Jcr2spiRepositoryFactory,
+ org.apache.jackrabbit.jcr2spi.config;version=${pom.version}
+ </Export-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
@@ -110,6 +124,7 @@
<dependency>
<groupId>concurrent</groupId>
<artifactId>concurrent</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCacheImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCacheImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCacheImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCacheImpl.java Wed Oct 21 11:38:31 2009
@@ -25,7 +25,6 @@
import javax.jcr.Item;
import javax.jcr.RepositoryException;
import java.util.Map;
-import java.util.Iterator;
import java.io.PrintStream;
/**
@@ -35,7 +34,7 @@
private static Logger log = LoggerFactory.getLogger(ItemCacheImpl.class);
- private final Map cache;
+ private final Map<ItemState, Item> cache;
ItemCacheImpl(int maxSize) {
cache = new LRUMap(maxSize);
@@ -46,7 +45,7 @@
* @see ItemCache#getItem(ItemState)
*/
public Item getItem(ItemState state) {
- return (Item) cache.get(state);
+ return cache.get(state);
}
/**
@@ -141,10 +140,9 @@
* @see Dumpable#dump(PrintStream)
*/
public void dump(PrintStream ps) {
- Iterator iter = cache.keySet().iterator();
- while (iter.hasNext()) {
- ItemState state = (ItemState) iter.next();
- Item item = (Item) cache.get(state);
+ for (Map.Entry<ItemState, Item> entry : cache.entrySet()) {
+ ItemState state = entry.getKey();
+ Item item = entry.getValue();
if (item.isNode()) {
ps.print("Node: ");
} else {
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java Wed Oct 21 11:38:31 2009
@@ -69,7 +69,8 @@
/**
* Listeners (weak references)
*/
- protected final Map listeners = Collections.synchronizedMap(new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK));
+ protected final Map<ItemLifeCycleListener, ItemLifeCycleListener> listeners =
+ Collections.synchronizedMap(new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK));
public ItemImpl(SessionImpl session, ItemState state,
ItemLifeCycleListener[] listeners) {
@@ -365,7 +366,7 @@
*/
private void notifyCreated() {
// copy listeners to array to avoid ConcurrentModificationException
- ItemLifeCycleListener[] la = (ItemLifeCycleListener[]) listeners.values().toArray(new ItemLifeCycleListener[listeners.size()]);
+ ItemLifeCycleListener[] la = listeners.values().toArray(new ItemLifeCycleListener[listeners.size()]);
for (int i = 0; i < la.length; i++) {
la[i].itemCreated(this);
}
@@ -376,7 +377,7 @@
*/
private void notifyUpdated(boolean modified) {
// copy listeners to array to avoid ConcurrentModificationException
- ItemLifeCycleListener[] la = (ItemLifeCycleListener[]) listeners.values().toArray(new ItemLifeCycleListener[listeners.size()]);
+ ItemLifeCycleListener[] la = listeners.values().toArray(new ItemLifeCycleListener[listeners.size()]);
for (int i = 0; i < la.length; i++) {
if (la[i] != null) {
la[i].itemUpdated(this, modified);
@@ -389,7 +390,7 @@
*/
private void notifyDestroyed() {
// copy listeners to array to avoid ConcurrentModificationException
- ItemLifeCycleListener[] la = (ItemLifeCycleListener[]) listeners.values().toArray(new ItemLifeCycleListener[listeners.size()]);
+ ItemLifeCycleListener[] la = listeners.values().toArray(new ItemLifeCycleListener[listeners.size()]);
for (int i = 0; i < la.length; i++) {
if (la[i] != null) {
la[i].itemDestroyed(this);
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java Wed Oct 21 11:38:31 2009
@@ -225,11 +225,11 @@
// check sanity of session
session.checkIsAlive();
- Iterator iter = parentEntry.getNodeEntries();
+ Iterator<NodeEntry> iter = parentEntry.getNodeEntries();
while (iter.hasNext()) {
try {
// check read access by accessing the nodeState (implicit validation check)
- NodeEntry entry = (NodeEntry) iter.next();
+ NodeEntry entry = iter.next();
entry.getNodeState();
return true;
} catch (ItemNotFoundException e) {
@@ -248,7 +248,7 @@
// check sanity of session
session.checkIsAlive();
- Iterator it = parentEntry.getNodeEntries();
+ Iterator<NodeEntry> it = parentEntry.getNodeEntries();
return new LazyItemIterator(this, it);
}
@@ -260,10 +260,10 @@
// check sanity of session
session.checkIsAlive();
- Iterator iter = parentEntry.getPropertyEntries();
+ Iterator<PropertyEntry> iter = parentEntry.getPropertyEntries();
while (iter.hasNext()) {
try {
- PropertyEntry entry = (PropertyEntry) iter.next();
+ PropertyEntry entry = iter.next();
// check read access by accessing the propState (also implicit validation).
entry.getPropertyState();
return true;
@@ -283,7 +283,7 @@
// check sanity of session
session.checkIsAlive();
- Iterator propEntries = parentEntry.getPropertyEntries();
+ Iterator<PropertyEntry> propEntries = parentEntry.getPropertyEntries();
return new LazyItemIterator(this, propEntries);
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java Wed Oct 21 11:38:31 2009
@@ -214,7 +214,7 @@
// make sure the workspace exists and is accessible for this session.
session.checkAccessibleWorkspace(srcWorkspace);
- Iterator failedIds = session.getVersionStateManager().merge((NodeState) n.getItemState(), srcWorkspace, bestEffort, isShallow);
+ Iterator<NodeId> failedIds = session.getVersionStateManager().merge((NodeState) n.getItemState(), srcWorkspace, bestEffort, isShallow);
return new LazyItemIterator(itemManager, session.getHierarchyManager(), failedIds);
}
@@ -322,7 +322,7 @@
public NodeIterator merge(Node activityNode) throws VersionException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
session.checkIsAlive();
NodeImpl activity = getValidActivity(activityNode, "merge");
- Iterator failedIds = vMgr.mergeActivity((NodeState) activity.getItemState());
+ Iterator<NodeId> failedIds = vMgr.mergeActivity((NodeState) activity.getItemState());
return new LazyItemIterator(itemManager, session.getHierarchyManager(), failedIds);
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java Wed Oct 21 11:38:31 2009
@@ -60,7 +60,7 @@
private final ItemManager itemMgr;
/** Iterator over HierarchyEntry elements */
- private final Iterator iter;
+ private final Iterator<? extends HierarchyEntry> iter;
/**
* The number of items.
@@ -81,7 +81,7 @@
* @param itemMgr item manager
* @param hierarchyEntryIterator Iterator over HierarchyEntries
*/
- public LazyItemIterator(ItemManager itemMgr, Iterator hierarchyEntryIterator) {
+ public LazyItemIterator(ItemManager itemMgr, Iterator<? extends HierarchyEntry> hierarchyEntryIterator) {
this.itemMgr = itemMgr;
this.iter = hierarchyEntryIterator;
if (hierarchyEntryIterator instanceof RangeIterator) {
@@ -102,12 +102,12 @@
* @param itemIds
*/
public LazyItemIterator(ItemManager itemMgr, HierarchyManager hierarchyMgr,
- Iterator itemIds)
+ Iterator<? extends ItemId> itemIds)
throws ItemNotFoundException, RepositoryException {
this.itemMgr = itemMgr;
- List entries = new ArrayList();
+ List<HierarchyEntry> entries = new ArrayList<HierarchyEntry>();
while (itemIds.hasNext()) {
- ItemId id = (ItemId) itemIds.next();
+ ItemId id = itemIds.next();
HierarchyEntry entry;
if (id.denotesNode()) {
entry = hierarchyMgr.getNodeEntry((NodeId) id);
@@ -125,14 +125,14 @@
/**
* Prefetches next item.
- * <p/>
+ * <p>
* {@link #next} is set to the next available item in this iterator or to
* <code>null</code> in case there are no more items.
*/
private Item prefetchNext() {
Item nextItem = null;
while (nextItem == null && iter.hasNext()) {
- HierarchyEntry entry = (HierarchyEntry) iter.next();
+ HierarchyEntry entry = iter.next();
try {
nextItem = itemMgr.getItem(entry);
} catch (RepositoryException e) {
@@ -182,7 +182,7 @@
/**
* Returns the number of <code>Item</code>s in this iterator or -1 if the
- * size is unkown.
+ * size is unknown.
* </p>
* Note: The number returned by this method may differ from the number
* of <code>Item</code>s actually returned by calls to hasNext() / getNextNode().
@@ -216,11 +216,11 @@
// skip the first (skipNum - 1) items without actually retrieving them
while (--skipNum > 0) {
pos++;
- HierarchyEntry entry = (HierarchyEntry) iter.next();
+ HierarchyEntry entry = iter.next();
// check if item exists but don't build Item instance.
while (!itemMgr.itemExists(entry)) {
log.debug("Ignoring nonexistent item " + entry);
- entry = (HierarchyEntry) iter.next();
+ entry = iter.next();
}
}
// prefetch final item (the one to be returned on next())
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceRegistryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceRegistryImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceRegistryImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceRegistryImpl.java Wed Oct 21 11:38:31 2009
@@ -65,16 +65,16 @@
* @see javax.jcr.NamespaceRegistry#getPrefixes()
*/
public String[] getPrefixes() throws RepositoryException {
- Collection prefixes = storage.getRegisteredNamespaces().keySet();
- return (String[]) prefixes.toArray(new String[prefixes.size()]);
+ Collection<String> prefixes = storage.getRegisteredNamespaces().keySet();
+ return prefixes.toArray(new String[prefixes.size()]);
}
/**
* @see javax.jcr.NamespaceRegistry#getURIs()
*/
public String[] getURIs() throws RepositoryException {
- Collection uris = storage.getRegisteredNamespaces().values();
- return (String[]) uris.toArray(new String[uris.size()]);
+ Collection<String> uris = storage.getRegisteredNamespaces().values();
+ return uris.toArray(new String[uris.size()]);
}
/**
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceStorage.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceStorage.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceStorage.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NamespaceStorage.java Wed Oct 21 11:38:31 2009
@@ -28,7 +28,7 @@
*/
public interface NamespaceStorage {
- public Map getRegisteredNamespaces() throws RepositoryException;
+ public Map<String, String> getRegisteredNamespaces() throws RepositoryException;
public String getPrefix(String uri) throws NamespaceException, RepositoryException;
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java Wed Oct 21 11:38:31 2009
@@ -712,7 +712,7 @@
// get mixin types present in the jcr:mixintypes property without
// modifying the NodeState.
- List mixinValue = getMixinTypes();
+ List<Name> mixinValue = getMixinTypes();
if (!mixinValue.contains(mixinQName) && !isNodeType(mixinQName)) {
if (!canAddMixin(mixinQName)) {
throw new ConstraintViolationException("Cannot add '" + mixinName + "' mixin type.");
@@ -720,7 +720,7 @@
mixinValue.add(mixinQName);
// perform the operation
- Operation op = SetMixin.create(getNodeState(), (Name[]) mixinValue.toArray(new Name[mixinValue.size()]));
+ Operation op = SetMixin.create(getNodeState(), mixinValue.toArray(new Name[mixinValue.size()]));
session.getSessionItemStateManager().execute(op);
}
}
@@ -732,7 +732,7 @@
VersionException, ConstraintViolationException, LockException, RepositoryException {
checkIsWritable();
Name ntName = getQName(mixinName);
- List mixinValue = getMixinTypes();
+ List<Name> mixinValue = getMixinTypes();
// remove name of target mixin
if (!mixinValue.remove(ntName)) {
throw new NoSuchNodeTypeException("Cannot remove mixin '" + mixinName + "': Nodetype is not present on this node.");
@@ -763,7 +763,7 @@
}
// delegate to operation
- Name[] mixins = (Name[]) mixinValue.toArray(new Name[mixinValue.size()]);
+ Name[] mixins = mixinValue.toArray(new Name[mixinValue.size()]);
Operation op = SetMixin.create(getNodeState(), mixins);
session.getSessionItemStateManager().execute(op);
}
@@ -777,7 +777,7 @@
*
* @return mixin names present with the jcr:mixinTypes property.
*/
- private List getMixinTypes() {
+ private List<Name> getMixinTypes() {
Name[] mixinValue;
if (getNodeState().getStatus() == Status.EXISTING) {
// jcr:mixinTypes must correspond to the mixins present on the nodestate.
@@ -799,7 +799,7 @@
mixinValue = new Name[0];
}
}
- List l = new ArrayList();
+ List<Name> l = new ArrayList<Name>();
l.addAll(Arrays.asList(mixinValue));
return l;
}
@@ -812,9 +812,9 @@
* @throws ConstraintViolationException
* @throws NoSuchNodeTypeException
*/
- private EffectiveNodeType getRemainingENT(List remainingMixins)
+ private EffectiveNodeType getRemainingENT(List<Name> remainingMixins)
throws ConstraintViolationException, NoSuchNodeTypeException {
- Name[] allRemaining = (Name[]) remainingMixins.toArray(new Name[remainingMixins.size() + 1]);
+ Name[] allRemaining = remainingMixins.toArray(new Name[remainingMixins.size() + 1]);
allRemaining[remainingMixins.size()] = getPrimaryNodeTypeName();
return session.getEffectiveNodeTypeProvider().getEffectiveNodeType(allRemaining);
}
@@ -829,7 +829,7 @@
}
try {
// first check if node is writable regarding protection status,
- // locks, versioning, acces restriction.
+ // locks, versioning, access restriction.
session.getValidator().checkIsWritable(getNodeState(), ItemStateValidator.CHECK_ALL);
// then make sure the new mixin would not conflict.
return canAddMixin(getQName(mixinName));
@@ -1012,7 +1012,7 @@
}
// if root is common ancestor, corresponding path is same as ours
- // otherwise access referenceable ancestor and calcuate correspond. path.
+ // otherwise access referenceable ancestor and calculate correspond. path.
String correspondingPath;
if (referenceableNode.getDepth() == Path.ROOT_DEPTH) {
if (!srcSession.getItemManager().nodeExists(getQPath())) {
@@ -1434,8 +1434,8 @@
session.getSessionItemStateManager().execute(an);
// finally retrieve the new node
- List addedStates = ((AddNode) an).getAddedStates();
- ItemState nState = (ItemState) addedStates.get(0);
+ List<ItemState> addedStates = ((AddNode) an).getAddedStates();
+ ItemState nState = addedStates.get(0);
return (Node) getItemManager().getItem(nState.getHierarchyEntry());
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java Wed Oct 21 11:38:31 2009
@@ -80,7 +80,7 @@
});
Map<String, QValue[]> descr = config.getRepositoryService().getRepositoryDescriptors();
- descriptors = new HashMap(descr.size());
+ descriptors = new HashMap<String, Value[]>(descr.size());
for (String key : descr.keySet()) {
QValue[] qvs = descr.get(key);
Value[] vs = new Value[qvs.length];
@@ -172,8 +172,8 @@
if (reference == null) {
reference = new Reference(RepositoryImpl.class.getName(), RepositoryImpl.Factory.class.getName(), null);
// carry over all addresses from referenceable config
- for (Enumeration en = confref.getReference().getAll(); en.hasMoreElements(); ) {
- reference.add((RefAddr)(en.nextElement()));
+ for (Enumeration<RefAddr> en = confref.getReference().getAll(); en.hasMoreElements(); ) {
+ reference.add(en.nextElement());
}
// also add the information required by factory class
@@ -223,7 +223,7 @@
public static final String RCF = RepositoryImpl.class.getName() + ".factory";
public static final String RCC = RepositoryImpl.class.getName() + ".class";
- public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception {
+ public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception {
Object res = null;
if (obj instanceof Reference) {
@@ -255,8 +255,8 @@
configFactoryClassName, null);
// carry over all arguments except our own
- for (Enumeration en = ref.getAll(); en.hasMoreElements(); ){
- RefAddr ra = (RefAddr)en.nextElement();
+ for (Enumeration<RefAddr> en = ref.getAll(); en.hasMoreElements(); ){
+ RefAddr ra = en.nextElement();
String type = ra.getType();
if (! RCF.equals(type) && ! RCC.equals(type)) {
newref.add(ra);
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Wed Oct 21 11:38:31 2009
@@ -16,107 +16,104 @@
*/
package org.apache.jackrabbit.jcr2spi;
-import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeRegistryImpl;
-import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeRegistry;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Semaphore;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.MergeException;
+import javax.jcr.NamespaceException;
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.ReferentialIntegrityException;
+import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.query.InvalidQueryException;
+import javax.jcr.version.VersionException;
+
+import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEventListener;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl;
+import org.apache.jackrabbit.jcr2spi.nodetype.EffectiveNodeTypeProvider;
import org.apache.jackrabbit.jcr2spi.nodetype.ItemDefinitionProvider;
import org.apache.jackrabbit.jcr2spi.nodetype.ItemDefinitionProviderImpl;
-import org.apache.jackrabbit.jcr2spi.nodetype.EffectiveNodeTypeProvider;
import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeCache;
-import org.apache.jackrabbit.jcr2spi.state.ItemState;
-import org.apache.jackrabbit.jcr2spi.state.ChangeLog;
-import org.apache.jackrabbit.jcr2spi.state.UpdatableItemStateManager;
-import org.apache.jackrabbit.jcr2spi.state.ItemStateFactory;
-import org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory;
-import org.apache.jackrabbit.jcr2spi.state.NodeState;
-import org.apache.jackrabbit.jcr2spi.state.TransientItemStateFactory;
-import org.apache.jackrabbit.jcr2spi.state.TransientISFactory;
-import org.apache.jackrabbit.jcr2spi.state.Status;
-import org.apache.jackrabbit.jcr2spi.operation.OperationVisitor;
+import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeRegistry;
+import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeRegistryImpl;
+import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
+import org.apache.jackrabbit.jcr2spi.operation.AddLabel;
import org.apache.jackrabbit.jcr2spi.operation.AddNode;
import org.apache.jackrabbit.jcr2spi.operation.AddProperty;
+import org.apache.jackrabbit.jcr2spi.operation.Checkin;
+import org.apache.jackrabbit.jcr2spi.operation.Checkout;
+import org.apache.jackrabbit.jcr2spi.operation.Checkpoint;
import org.apache.jackrabbit.jcr2spi.operation.Clone;
import org.apache.jackrabbit.jcr2spi.operation.Copy;
-import org.apache.jackrabbit.jcr2spi.operation.Move;
-import org.apache.jackrabbit.jcr2spi.operation.Remove;
-import org.apache.jackrabbit.jcr2spi.operation.SetMixin;
-import org.apache.jackrabbit.jcr2spi.operation.SetPropertyValue;
-import org.apache.jackrabbit.jcr2spi.operation.ReorderNodes;
-import org.apache.jackrabbit.jcr2spi.operation.Operation;
-import org.apache.jackrabbit.jcr2spi.operation.Checkout;
-import org.apache.jackrabbit.jcr2spi.operation.Checkin;
-import org.apache.jackrabbit.jcr2spi.operation.Update;
-import org.apache.jackrabbit.jcr2spi.operation.Restore;
-import org.apache.jackrabbit.jcr2spi.operation.ResolveMergeConflict;
-import org.apache.jackrabbit.jcr2spi.operation.Merge;
+import org.apache.jackrabbit.jcr2spi.operation.CreateActivity;
+import org.apache.jackrabbit.jcr2spi.operation.CreateConfiguration;
import org.apache.jackrabbit.jcr2spi.operation.LockOperation;
import org.apache.jackrabbit.jcr2spi.operation.LockRefresh;
import org.apache.jackrabbit.jcr2spi.operation.LockRelease;
-import org.apache.jackrabbit.jcr2spi.operation.AddLabel;
+import org.apache.jackrabbit.jcr2spi.operation.Merge;
+import org.apache.jackrabbit.jcr2spi.operation.Move;
+import org.apache.jackrabbit.jcr2spi.operation.Operation;
+import org.apache.jackrabbit.jcr2spi.operation.OperationVisitor;
+import org.apache.jackrabbit.jcr2spi.operation.Remove;
+import org.apache.jackrabbit.jcr2spi.operation.RemoveActivity;
import org.apache.jackrabbit.jcr2spi.operation.RemoveLabel;
import org.apache.jackrabbit.jcr2spi.operation.RemoveVersion;
-import org.apache.jackrabbit.jcr2spi.operation.WorkspaceImport;
-import org.apache.jackrabbit.jcr2spi.operation.Checkpoint;
-import org.apache.jackrabbit.jcr2spi.operation.CreateActivity;
-import org.apache.jackrabbit.jcr2spi.operation.CreateConfiguration;
-import org.apache.jackrabbit.jcr2spi.operation.RemoveActivity;
+import org.apache.jackrabbit.jcr2spi.operation.ReorderNodes;
+import org.apache.jackrabbit.jcr2spi.operation.ResolveMergeConflict;
+import org.apache.jackrabbit.jcr2spi.operation.Restore;
+import org.apache.jackrabbit.jcr2spi.operation.SetMixin;
import org.apache.jackrabbit.jcr2spi.operation.SetPrimaryType;
+import org.apache.jackrabbit.jcr2spi.operation.SetPropertyValue;
+import org.apache.jackrabbit.jcr2spi.operation.Update;
+import org.apache.jackrabbit.jcr2spi.operation.WorkspaceImport;
import org.apache.jackrabbit.jcr2spi.security.AccessManager;
-import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
-import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEventListener;
-import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
-import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl;
-import org.apache.jackrabbit.spi.Path;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.RepositoryService;
-import org.apache.jackrabbit.spi.SessionInfo;
-import org.apache.jackrabbit.spi.NodeId;
-import org.apache.jackrabbit.spi.IdFactory;
-import org.apache.jackrabbit.spi.LockInfo;
-import org.apache.jackrabbit.spi.QueryInfo;
-import org.apache.jackrabbit.spi.ItemId;
-import org.apache.jackrabbit.spi.PropertyId;
+import org.apache.jackrabbit.jcr2spi.state.ChangeLog;
+import org.apache.jackrabbit.jcr2spi.state.ItemState;
+import org.apache.jackrabbit.jcr2spi.state.ItemStateFactory;
+import org.apache.jackrabbit.jcr2spi.state.NodeState;
+import org.apache.jackrabbit.jcr2spi.state.Status;
+import org.apache.jackrabbit.jcr2spi.state.TransientISFactory;
+import org.apache.jackrabbit.jcr2spi.state.TransientItemStateFactory;
+import org.apache.jackrabbit.jcr2spi.state.UpdatableItemStateManager;
+import org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory;
import org.apache.jackrabbit.spi.Batch;
+import org.apache.jackrabbit.spi.Event;
import org.apache.jackrabbit.spi.EventBundle;
import org.apache.jackrabbit.spi.EventFilter;
-import org.apache.jackrabbit.spi.QNodeTypeDefinition;
-import org.apache.jackrabbit.spi.QValue;
-import org.apache.jackrabbit.spi.Event;
+import org.apache.jackrabbit.spi.IdFactory;
+import org.apache.jackrabbit.spi.ItemId;
+import org.apache.jackrabbit.spi.LockInfo;
+import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.NameFactory;
+import org.apache.jackrabbit.spi.NodeId;
+import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.PathFactory;
+import org.apache.jackrabbit.spi.PropertyId;
+import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.QueryInfo;
+import org.apache.jackrabbit.spi.RepositoryService;
+import org.apache.jackrabbit.spi.SessionInfo;
import org.apache.jackrabbit.spi.Subscription;
import org.apache.jackrabbit.spi.commons.nodetype.NodeTypeStorage;
-import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
-
-import javax.jcr.RepositoryException;
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.AccessDeniedException;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.ItemNotFoundException;
-import javax.jcr.NamespaceException;
-import javax.jcr.NoSuchWorkspaceException;
-import javax.jcr.ItemExistsException;
-import javax.jcr.InvalidItemStateException;
-import javax.jcr.MergeException;
-import javax.jcr.ReferentialIntegrityException;
-import javax.jcr.query.InvalidQueryException;
-import javax.jcr.version.VersionException;
-import javax.jcr.lock.LockException;
-import javax.jcr.nodetype.NoSuchNodeTypeException;
-import javax.jcr.nodetype.ConstraintViolationException;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Collection;
-
-import EDU.oswego.cs.dl.util.concurrent.Sync;
-import EDU.oswego.cs.dl.util.concurrent.Mutex;
+import org.slf4j.LoggerFactory;
/**
* <code>WorkspaceManager</code>...
@@ -141,11 +138,11 @@
private final ItemDefinitionProvider definitionProvider;
/**
- * Mutex to synchronize the feed thread with client
+ * Semaphore to synchronize the feed thread with client
* threads that call {@link #execute(Operation)} or {@link
* #execute(ChangeLog)}.
*/
- private final Sync updateSync = new Mutex();
+ private final Semaphore updateSync = new Semaphore(1);
/**
* This is the event polling for changes. If <code>null</code>
@@ -162,7 +159,7 @@
* List of event listener that are set on this WorkspaceManager to get
* notifications about local and external changes.
*/
- private final Set listeners = new HashSet();
+ private final List<InternalEventListener> listeners = new LinkedList<InternalEventListener>();
/**
* The current subscription for change events if there are listeners.
@@ -173,6 +170,7 @@
CacheBehaviour cacheBehaviour, int pollTimeout,
boolean enableObservation)
throws RepositoryException {
+
this.service = service;
this.sessionInfo = sessionInfo;
this.cacheBehaviour = cacheBehaviour;
@@ -188,7 +186,18 @@
TransientItemStateFactory stateFactory = createItemStateFactory();
this.isf = stateFactory;
this.hierarchyManager = createHierarchyManager(stateFactory, idFactory);
- createHierarchyListener(hierarchyManager);
+
+ // If cache behavior is observation register a hierarchy listener which is
+ // notified about all changes. Otherwise just add a hierarchy listener which
+ // is only notified on changes for which client event listeners have been
+ // installed. Note: this listener has to be the first one called in order
+ // for the hierarchy to be consistent with the event (See JCR-2293).
+ InternalEventListener listener = createHierarchyListener(hierarchyManager);
+ if (cacheBehaviour == CacheBehaviour.OBSERVATION) {
+ addEventListener(listener);
+ } else {
+ listeners.add(listener);
+ }
}
public NamespaceRegistryImpl getNamespaceRegistryImpl() {
@@ -241,7 +250,7 @@
* @return lock tokens present with the <code>SessionInfo</code>.
* @throws UnsupportedRepositoryOperationException
* @throws RepositoryException
- * @see org.apache.jackrabbit.spi.SessionInfo#getLockTokens()
+ * @see org.apache.jackrabbit.spi.SessionInfo#getLockTokens()
*/
public String[] getLockTokens() throws UnsupportedRepositoryOperationException, RepositoryException {
return sessionInfo.getLockTokens();
@@ -306,7 +315,7 @@
*/
public String[] checkQueryStatement(String statement,
String language,
- Map namespaces)
+ Map<String, String> namespaces)
throws InvalidQueryException, RepositoryException {
return service.checkQueryStatement(sessionInfo, statement, language, namespaces);
}
@@ -322,7 +331,7 @@
* @return
* @throws RepositoryException
*/
- public QueryInfo executeQuery(String statement, String language, Map namespaces,
+ public QueryInfo executeQuery(String statement, String language, Map<String, String> namespaces,
long limit, long offset, Map<String, QValue> boundValues) throws RepositoryException {
return service.executeQuery(sessionInfo, statement, language, namespaces, limit, offset, boundValues);
}
@@ -339,12 +348,12 @@
synchronized (listeners) {
listeners.add(listener);
EventFilter[] filters = getEventFilters(listeners);
- if (listeners.size() == 1) {
+ if (subscription == null) {
subscription = service.createSubscription(sessionInfo, filters);
} else {
service.updateEventFilters(subscription, filters);
}
- listeners.notify();
+ listeners.notifyAll();
}
}
@@ -430,13 +439,12 @@
*
* @param listeners the internal event listeners.
*/
- private static EventFilter[] getEventFilters(Collection listeners) {
- List filters = new ArrayList();
- for (Iterator it = listeners.iterator(); it.hasNext(); ) {
- InternalEventListener listener = (InternalEventListener) it.next();
+ private static EventFilter[] getEventFilters(Collection<InternalEventListener> listeners) {
+ List<EventFilter> filters = new ArrayList<EventFilter>();
+ for (InternalEventListener listener : listeners) {
filters.addAll(listener.getEventFilters());
}
- return (EventFilter[]) filters.toArray(new EventFilter[filters.size()]);
+ return filters.toArray(new EventFilter[filters.size()]);
}
/**
@@ -469,10 +477,10 @@
*/
private NodeTypeRegistryImpl createNodeTypeRegistry(NamespaceRegistry nsRegistry) {
NodeTypeStorage ntst = new NodeTypeStorage() {
- public Iterator getAllDefinitions() throws RepositoryException {
+ public Iterator<QNodeTypeDefinition> getAllDefinitions() throws RepositoryException {
return service.getQNodeTypeDefinitions(sessionInfo);
}
- public Iterator getDefinitions(Name[] nodeTypeNames) throws NoSuchNodeTypeException, RepositoryException {
+ public Iterator<QNodeTypeDefinition> getDefinitions(Name[] nodeTypeNames) throws NoSuchNodeTypeException, RepositoryException {
return service.getQNodeTypeDefinitions(sessionInfo, nodeTypeNames);
}
public void registerNodeTypes(QNodeTypeDefinition[] nodeTypeDefs, boolean allowUpdate) throws RepositoryException {
@@ -533,7 +541,7 @@
/**
* Deletes the workspace with the specified <code>name</code>.
- *
+ *
* @param name
* @throws RepositoryException
*/
@@ -596,6 +604,11 @@
public synchronized void dispose() {
try {
updateSync.acquire();
+ } catch (InterruptedException e) {
+ log.warn("Exception while disposing WorkspaceManager: " + e);
+ return;
+ }
+ try {
if (changeFeed != null) {
disposeChangeFeed = true;
changeFeed.interrupt();
@@ -681,7 +694,7 @@
//---------------------------------------------------< NamespaceStorage >---
- public Map getRegisteredNamespaces() throws RepositoryException {
+ public Map<String, String> getRegisteredNamespaces() throws RepositoryException {
return service.getRegisteredNamespaces(sessionInfo);
}
@@ -730,8 +743,8 @@
log.debug("received {} event bundles.", new Integer(eventBundles.length));
for (int i = 0; i < eventBundles.length; i++) {
log.debug("IsLocal: {}", Boolean.valueOf(eventBundles[i].isLocal()));
- for (Iterator it = eventBundles[i].getEvents(); it.hasNext(); ) {
- Event e = (Event) it.next();
+ for (Iterator<Event> it = eventBundles[i].getEvents(); it.hasNext(); ) {
+ Event e = it.next();
String type;
switch (e.getType()) {
case Event.NODE_ADDED:
@@ -802,9 +815,7 @@
try {
ItemState target = changeLog.getTarget();
batch = service.createBatch(sessionInfo, target.getId());
- Iterator it = changeLog.getOperations().iterator();
- while (it.hasNext()) {
- Operation op = (Operation) it.next();
+ for (Operation op : changeLog.getOperations()) {
log.debug("executing " + op.getName());
op.accept(this);
}
@@ -1015,7 +1026,7 @@
*/
public void visit(Merge operation) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException {
NodeId nId = operation.getNodeId();
- Iterator failed;
+ Iterator<NodeId> failed;
if (operation.isActivityMerge()) {
failed = service.mergeActivity(sessionInfo, nId);
} else {
@@ -1148,10 +1159,10 @@
InternalEventListener[] iel;
Subscription subscr;
synchronized (listeners) {
- while (listeners.isEmpty()) {
+ while (subscription == null) {
listeners.wait();
}
- iel = (InternalEventListener[]) listeners.toArray(new InternalEventListener[0]);
+ iel = listeners.toArray(new InternalEventListener[0]);
subscr = subscription;
}
@@ -1187,4 +1198,5 @@
}
}
}
+
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeAttic.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeAttic.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeAttic.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeAttic.java Wed Oct 21 11:38:31 2009
@@ -20,9 +20,9 @@
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.spi.Name;
+import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
@@ -33,7 +33,7 @@
private static Logger log = LoggerFactory.getLogger(ChildNodeAttic.class);
- private Set attic = new HashSet();
+ private Set<NodeEntryImpl> attic = new HashSet<NodeEntryImpl>();
ChildNodeAttic() {
}
@@ -43,8 +43,7 @@
}
boolean contains(Name name, int index) {
- for (Iterator it = attic.iterator(); it.hasNext();) {
- NodeEntryImpl ne = (NodeEntryImpl) it.next();
+ for (NodeEntryImpl ne : attic) {
if (ne.matches(name, index)) {
return true;
}
@@ -53,8 +52,7 @@
}
boolean contains(Name name, int index, String uniqueId) {
- for (Iterator it = attic.iterator(); it.hasNext();) {
- NodeEntryImpl ne = (NodeEntryImpl) it.next();
+ for (NodeEntryImpl ne : attic) {
if (uniqueId != null && uniqueId.equals(ne.getUniqueID())) {
return true;
} else if (ne.matches(name, index)) {
@@ -65,10 +63,9 @@
return false;
}
- List get(Name name) {
- List l = new ArrayList();
- for (Iterator it = attic.iterator(); it.hasNext();) {
- NodeEntryImpl ne = (NodeEntryImpl) it.next();
+ List<NodeEntryImpl> get(Name name) {
+ List<NodeEntryImpl> l = new ArrayList<NodeEntryImpl>();
+ for (NodeEntryImpl ne : attic) {
if (ne.matches(name)) {
l.add(ne);
}
@@ -83,8 +80,7 @@
* @return
*/
NodeEntry get(Name name, int index) {
- for (Iterator it = attic.iterator(); it.hasNext();) {
- NodeEntryImpl ne = (NodeEntryImpl) it.next();
+ for (NodeEntryImpl ne : attic) {
if (ne.matches(name, index)) {
return ne;
}
@@ -102,8 +98,7 @@
if (uniqueId == null) {
throw new IllegalArgumentException();
}
- for (Iterator it = attic.iterator(); it.hasNext();) {
- NodeEntryImpl ne = (NodeEntryImpl) it.next();
+ for (NodeEntryImpl ne : attic) {
if (uniqueId.equals(ne.getUniqueID())) {
return ne;
}
@@ -123,7 +118,7 @@
return false;
}
- Iterator iterator() {
+ Iterator<NodeEntryImpl> iterator() {
return attic.iterator();
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntries.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntries.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntries.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntries.java Wed Oct 21 11:38:31 2009
@@ -53,7 +53,7 @@
*
* @return Iterator over all NodeEntry object
*/
- Iterator iterator();
+ Iterator<NodeEntry> iterator();
/**
* Returns a <code>List</code> of <code>NodeEntry</code>s for the
@@ -63,7 +63,7 @@
* @param nodeName the child node name.
* @return same name sibling nodes with the given <code>nodeName</code>.
*/
- List get(Name nodeName);
+ List<NodeEntry> get(Name nodeName);
/**
* Returns the <code>NodeEntry</code> with the given
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntriesImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntriesImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntriesImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildNodeEntriesImpl.java Wed Oct 21 11:38:31 2009
@@ -78,13 +78,13 @@
* and the complete list will be retrieved only to answer {@link #iterator()}
* if the passed boolean is <code>true</code>.
*/
- ChildNodeEntriesImpl(NodeEntry parent, EntryFactory factory, Iterator childNodeInfos) {
+ ChildNodeEntriesImpl(NodeEntry parent, EntryFactory factory, Iterator<ChildInfo> childNodeInfos) {
this.parent = parent;
this.factory = factory;
if (childNodeInfos != null) {
while (childNodeInfos.hasNext()) {
- ChildInfo ci = (ChildInfo) childNodeInfos.next();
+ ChildInfo ci = childNodeInfos.next();
NodeEntry entry = factory.createNodeEntry(parent, ci.getName(), ci.getUniqueID());
add(entry, ci.getIndex());
}
@@ -137,7 +137,7 @@
}
NodeId id = parent.getWorkspaceId();
- Iterator childNodeInfos = factory.getItemStateFactory().getChildNodeInfos(id);
+ Iterator<ChildInfo> childNodeInfos = factory.getItemStateFactory().getChildNodeInfos(id);
update(childNodeInfos);
}
@@ -158,11 +158,11 @@
* @see org.apache.jackrabbit.jcr2spi.operation.Move
* @see org.apache.jackrabbit.jcr2spi.operation.ReorderNodes
*/
- synchronized void update(Iterator childNodeInfos) {
+ synchronized void update(Iterator<ChildInfo> childNodeInfos) {
// insert missing entries and reorder all if necessary.
LinkedEntries.LinkNode prevLN = null;
while (childNodeInfos.hasNext()) {
- ChildInfo ci = (ChildInfo) childNodeInfos.next();
+ ChildInfo ci = childNodeInfos.next();
LinkedEntries.LinkNode ln = entriesByName.getLinkNode(ci.getName(), ci.getIndex(), ci.getUniqueID());
if (ln == null) {
// add missing at the correct position.
@@ -188,10 +188,10 @@
/**
* @see ChildNodeEntries#iterator()
*/
- public Iterator iterator() {
- List l = new ArrayList(entries.size());
- for (Iterator it = entries.linkNodeIterator(); it.hasNext();) {
- l.add(((LinkedEntries.LinkNode)it.next()).getNodeEntry());
+ public Iterator<NodeEntry> iterator() {
+ List<NodeEntry> l = new ArrayList<NodeEntry>(entries.size());
+ for (Iterator<LinkedEntries.LinkNode> it = entries.linkNodeIterator(); it.hasNext();) {
+ l.add(it.next().getNodeEntry());
}
return Collections.unmodifiableList(l).iterator();
}
@@ -199,7 +199,7 @@
/**
* @see ChildNodeEntries#get(Name)
*/
- public List get(Name nodeName) {
+ public List<NodeEntry> get(Name nodeName) {
return entriesByName.getList(nodeName);
}
@@ -220,9 +220,7 @@
if (uniqueID == null || nodeName == null) {
throw new IllegalArgumentException();
}
- Iterator cneIter = get(nodeName).iterator();
- while (cneIter.hasNext()) {
- NodeEntry cne = (NodeEntry) cneIter.next();
+ for (NodeEntry cne : get(nodeName)) {
if (uniqueID.equals(cne.getUniqueID())) {
return cne;
}
@@ -413,8 +411,8 @@
// determine the new position of the reordered node regarding
// his siblings.
position = 0;
- for (Iterator it = entries.linkNodeIterator(); it.hasNext(); ) {
- LinkedEntries.LinkNode ln = (LinkedEntries.LinkNode) it.next();
+ for (Iterator<LinkedEntries.LinkNode> it = entries.linkNodeIterator(); it.hasNext(); ) {
+ LinkedEntries.LinkNode ln = it.next();
if (ln == beforeLN) {
break;
} else if (ln != insertLN && insertName.equals(ln.qName)) {
@@ -462,8 +460,8 @@
// determine the new position of the reordered node regarding
// his siblings.
position = 0;
- for (Iterator it = entries.linkNodeIterator(); it.hasNext(); ) {
- LinkedEntries.LinkNode ln = (LinkedEntries.LinkNode) it.next();
+ for (Iterator<LinkedEntries.LinkNode> it = entries.linkNodeIterator(); it.hasNext(); ) {
+ LinkedEntries.LinkNode ln = it.next();
if (insertName.equals(ln.qName) && (ln != insertLN)) {
position++;
}
@@ -502,8 +500,8 @@
* @return the matching <code>LinkNode</code> or <code>null</code>
*/
private LinkedEntries.LinkNode getLinkNode(NodeEntry nodeEntry) {
- for (Iterator it = linkNodeIterator(); it.hasNext();) {
- LinkedEntries.LinkNode ln = (LinkedEntries.LinkNode) it.next();
+ for (Iterator<LinkedEntries.LinkNode> it = linkNodeIterator(); it.hasNext();) {
+ LinkedEntries.LinkNode ln = it.next();
if (ln.getNodeEntry() == nodeEntry) {
return ln;
}
@@ -608,7 +606,7 @@
/**
* @return iterator over all LinkNode entries in this list.
*/
- private Iterator linkNodeIterator() {
+ private Iterator<LinkedEntries.LinkNode> linkNodeIterator() {
return new LinkNodeIterator();
}
@@ -650,7 +648,7 @@
// create a new NodeEntry in order to avoid returning null.
if (ne == null && this != header) {
ne = factory.createNodeEntry(parent, qName, null);
- super.setValue(new SoftReference(ne));
+ super.setValue(new SoftReference<NodeEntry>(ne));
}
return ne;
}
@@ -685,7 +683,7 @@
}
//----------------------------------------------------------------------
- private class LinkNodeIterator implements Iterator {
+ private class LinkNodeIterator implements Iterator<LinkedEntries.LinkNode> {
private LinkedEntries.LinkNode next = ((LinkedEntries.LinkNode) header).getNextLinkNode();
private final int expectedModCount = modCount;
@@ -695,7 +693,7 @@
return next != header;
}
- public Object next() {
+ public LinkedEntries.LinkNode next() {
checkModCount();
if (!hasNext()) {
throw new NoSuchElementException();
@@ -725,8 +723,8 @@
*/
private static class NameMap {
- private final Map snsMap = new HashMap();
- private final Map nameMap = new HashMap();
+ private final Map<Name, List> snsMap = new HashMap<Name, List>();
+ private final Map<Name, LinkedEntries.LinkNode> nameMap = new HashMap<Name, LinkedEntries.LinkNode>();
/**
* Return true if more than one NodeEnty with the given name exists.
@@ -751,9 +749,9 @@
if (val != null) {
return ((LinkedEntries.LinkNode) val).getNodeEntry();
} else {
- List l = (List) snsMap.get(qName);
+ List l = snsMap.get(qName);
if (l != null) {
- List nodeEntries = new ArrayList(l.size());
+ List<NodeEntry> nodeEntries = new ArrayList<NodeEntry>(l.size());
for (Iterator it = l.iterator(); it.hasNext();) {
LinkedEntries.LinkNode ln = (LinkedEntries.LinkNode) it.next();
nodeEntries.add(ln.getNodeEntry());
@@ -772,16 +770,16 @@
* @param name
* @return list of entries or an empty list.
*/
- public List getList(Name name) {
+ public List<NodeEntry> getList(Name name) {
Object obj = get(name);
if (obj == null) {
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
} else if (obj instanceof List) {
- List l = new ArrayList((List)obj);
+ List<NodeEntry> l = new ArrayList<NodeEntry>((List)obj);
return Collections.unmodifiableList(l);
} else {
// NodeEntry
- return Collections.singletonList(obj);
+ return Collections.singletonList((NodeEntry)obj);
}
}
@@ -807,12 +805,12 @@
throw new IllegalArgumentException("Illegal index " + index);
}
- LinkedEntries.LinkNode val = (LinkedEntries.LinkNode) nameMap.get(name);
+ LinkedEntries.LinkNode val = nameMap.get(name);
if (val != null) {
return (index == Path.INDEX_DEFAULT) ? val : null;
} else {
// look in snsMap
- List l = (List) snsMap.get(name);
+ List l = snsMap.get(name);
int pos = index - 1; // Index of NodeEntry is 1-based
return (l != null && pos < l.size()) ? (LinkedEntries.LinkNode) l.get(pos) : null;
}
@@ -823,14 +821,14 @@
// -> try if any entry matches.
// if none matches it be might that entry doesn't have uniqueID
// set yet -> search without uniqueID
- LinkedEntries.LinkNode val = (LinkedEntries.LinkNode) nameMap.get(name);
+ LinkedEntries.LinkNode val = nameMap.get(name);
if (val != null) {
if (uniqueID.equals(val.getNodeEntry().getUniqueID())) {
return val;
}
} else {
// look in snsMap
- List l = (List) snsMap.get(name);
+ List l = snsMap.get(name);
if (l != null) {
for (Iterator it = l.iterator(); it.hasNext();) {
LinkedEntries.LinkNode ln = (LinkedEntries.LinkNode) it.next();
@@ -848,15 +846,15 @@
public void put(Name name, int index, LinkedEntries.LinkNode value) {
// if 'nameMap' already contains a single entry -> move it to snsMap
- LinkedEntries.LinkNode single = (LinkedEntries.LinkNode) nameMap.remove(name);
- List l;
+ LinkedEntries.LinkNode single = nameMap.remove(name);
+ List<LinkedEntries.LinkNode> l;
if (single != null) {
- l = new ArrayList();
+ l = new ArrayList<LinkedEntries.LinkNode>();
l.add(single);
snsMap.put(name, l);
} else {
// if 'snsMap' already contains list
- l = (List) snsMap.get(name);
+ l = snsMap.get(name);
}
if (l == null) {
@@ -874,18 +872,18 @@
}
public LinkedEntries.LinkNode remove(Name name, LinkedEntries.LinkNode value) {
- Object rm = nameMap.remove(name);
+ LinkedEntries.LinkNode rm = nameMap.remove(name);
if (rm == null) {
- List l = (List) snsMap.get(name);
+ List l = snsMap.get(name);
if (l != null && l.remove(value)) {
rm = value;
}
}
- return ((LinkedEntries.LinkNode) rm);
+ return rm;
}
public void reorder(Name name, LinkedEntries.LinkNode insertValue, int position) {
- List sns = (List) snsMap.get(name);
+ List sns = snsMap.get(name);
if (sns == null) {
// no same name siblings -> no special handling required
return;
@@ -906,12 +904,12 @@
* @param index
* @return matching entry or <code>null</code>.
*/
- private static NodeEntry findMatchingEntry(List siblings, int index) {
+ private static NodeEntry findMatchingEntry(List<NodeEntry> siblings, int index) {
// shortcut if index can never match
if (index > siblings.size()) {
return null;
} else {
- return (NodeEntry) siblings.get(index - 1);
+ return siblings.get(index - 1);
}
}
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntries.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntries.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntries.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntries.java Wed Oct 21 11:38:31 2009
@@ -48,14 +48,14 @@
*
* @return Collection of all <code>PropertyEntry</code> objects present.
*/
- public Collection getPropertyEntries();
+ public Collection<PropertyEntry> getPropertyEntries();
/**
* Returns an unmodifiable collection containing all existing property names.
*
* @return Collection of <code>Name</code>
*/
- public Collection getPropertyNames();
+ public Collection<Name> getPropertyNames();
/**
* Adds the new <code>PropertyEntry</code> to this <code>ChildPropertyEntries</code>.
@@ -70,7 +70,7 @@
*
* @param propertyEntries
*/
- public void addAll(Collection propertyEntries);
+ public void addAll(Collection<PropertyEntry> propertyEntries);
/**
* Remove the collection entry with the given <code>Name</code>.
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntriesImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntriesImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntriesImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/ChildPropertyEntriesImpl.java Wed Oct 21 11:38:31 2009
@@ -21,7 +21,6 @@
import org.apache.jackrabbit.spi.Name;
import java.util.Map;
-import java.util.Iterator;
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
@@ -37,12 +36,12 @@
private static Logger log = LoggerFactory.getLogger(ChildPropertyEntriesImpl.class);
- private final Map properties;
+ private final Map<Name, Reference<PropertyEntry>> properties;
private final NodeEntry parent;
private final EntryFactory factory;
ChildPropertyEntriesImpl(NodeEntry parent, EntryFactory factory) {
- properties = new HashMap();
+ this.properties = new HashMap<Name, Reference<PropertyEntry>>();
this.parent = parent;
this.factory = factory;
}
@@ -58,13 +57,13 @@
* @see ChildPropertyEntries#get(Name)
*/
public PropertyEntry get(Name propertyName) {
- Object ref = properties.get(propertyName);
+ Reference<PropertyEntry> ref = properties.get(propertyName);
if (ref == null) {
// no entry exists with the given name
return null;
}
- PropertyEntry entry = (PropertyEntry) ((Reference) ref).get();
+ PropertyEntry entry = ref.get();
if (entry == null) {
// entry has been g-collected -> create new entry and return it.
entry = factory.createPropertyEntry(parent, propertyName);
@@ -76,11 +75,10 @@
/**
* @see ChildPropertyEntries#getPropertyEntries()
*/
- public Collection getPropertyEntries() {
+ public Collection<PropertyEntry> getPropertyEntries() {
synchronized (properties) {
- Set entries = new HashSet(properties.size());
- for (Iterator it = properties.keySet().iterator(); it.hasNext();) {
- Name propName = (Name) it.next();
+ Set<PropertyEntry> entries = new HashSet<PropertyEntry>(properties.size());
+ for (Name propName : properties.keySet()) {
entries.add(get(propName));
}
return Collections.unmodifiableCollection(entries);
@@ -90,7 +88,7 @@
/**
* @see ChildPropertyEntries#getPropertyNames()
*/
- public Collection getPropertyNames() {
+ public Collection<Name> getPropertyNames() {
return Collections.unmodifiableCollection(properties.keySet());
}
@@ -99,7 +97,7 @@
*/
public void add(PropertyEntry propertyEntry) {
synchronized (properties) {
- Reference ref = new SoftReference(propertyEntry);
+ Reference<PropertyEntry> ref = new SoftReference<PropertyEntry>(propertyEntry);
properties.put(propertyEntry.getName(), ref);
}
}
@@ -107,12 +105,9 @@
/**
* @see ChildPropertyEntries#addAll(Collection)
*/
- public void addAll(Collection propertyEntries) {
- for (Iterator it = propertyEntries.iterator(); it.hasNext();) {
- Object pe = it.next();
- if (pe instanceof PropertyEntry) {
- add((PropertyEntry) pe);
- }
+ public void addAll(Collection<PropertyEntry> propertyEntries) {
+ for (PropertyEntry pe : propertyEntries) {
+ add(pe);
}
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryValidation.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryValidation.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryValidation.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryValidation.java Wed Oct 21 11:38:31 2009
@@ -39,10 +39,10 @@
* @return <code>true</code> if one of the entries is valid; otherwise
* <code>false</code>.
*/
- static boolean containsValidNodeEntry(Iterator nodeEntries) {
+ static boolean containsValidNodeEntry(Iterator<NodeEntry> nodeEntries) {
boolean hasValid = false;
while (nodeEntries.hasNext() && !hasValid) {
- NodeEntry cne = (NodeEntry) nodeEntries.next();
+ NodeEntry cne = nodeEntries.next();
hasValid = isValidNodeEntry(cne);
}
return hasValid;
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java Wed Oct 21 11:38:31 2009
@@ -16,26 +16,27 @@
*/
package org.apache.jackrabbit.jcr2spi.hierarchy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.jcr.RepositoryException;
+
import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
-import org.apache.jackrabbit.spi.EventFilter;
+import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
import org.apache.jackrabbit.spi.Event;
import org.apache.jackrabbit.spi.EventBundle;
+import org.apache.jackrabbit.spi.EventFilter;
+import org.apache.jackrabbit.spi.ItemId;
import org.apache.jackrabbit.spi.NodeId;
import org.apache.jackrabbit.spi.Path;
-import org.apache.jackrabbit.spi.ItemId;
-
-import javax.jcr.RepositoryException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* <code>HierarchyEventListener</code>...
@@ -59,17 +60,13 @@
filter = wspManager.createEventFilter(Event.ALL_TYPES, root, true, null, null, true);
} catch (RepositoryException e) {
// spi does not support observation, or another error occurred.
+ log.debug("Creating event filter for cache behavoir observation failed", e);
}
if (filter == null) {
this.eventFilter = Collections.emptyList();
} else {
this.eventFilter = Collections.singletonList(filter);
}
- try {
- wspManager.addEventListener(this);
- } catch (RepositoryException e) {
- // spi does not support observation, or another error occurred.
- }
} else {
this.eventFilter = Collections.emptyList();
}
@@ -85,9 +82,8 @@
/**
* Processes <code>events</code> and invalidates cached <code>ItemState</code>s
- * accordingly. Note that this performed for both local and non-local changes,
- * since workspace operations are reported as local changes as well and
- * might have invoked changes (autocreated items etc.).
+ * accordingly. Note that this is performed for local changes only,
+ * since workspace operations are reported as local and have been applied already.
*
* @param eventBundle the events.
* @see InternalEventListener#onEvent(EventBundle)
@@ -119,8 +115,8 @@
// separately collect the add events
Set<Event> addEvents = new HashSet<Event>();
- for (Iterator it = events.iterator(); it.hasNext();) {
- Event event = (Event) it.next();
+ for (Iterator<Event> it = events.iterator(); it.hasNext();) {
+ Event event = it.next();
int type = event.getType();
if (type == Event.NODE_REMOVED) {
// remember removed nodes separately for proper handling later on.
@@ -148,8 +144,8 @@
boolean progress = true;
while (!addEvents.isEmpty() && progress) {
progress = false;
- for (Iterator it = addEvents.iterator(); it.hasNext();) {
- Event ev = (Event) it.next();
+ for (Iterator<Event> it = addEvents.iterator(); it.hasNext();) {
+ Event ev = it.next();
NodeId parentId = ev.getParentId();
HierarchyEntry parent = null;
if (parentId != null) {
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntry.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntry.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntry.java Wed Oct 21 11:38:31 2009
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.jcr2spi.hierarchy;
import org.apache.jackrabbit.jcr2spi.state.NodeState;
+import org.apache.jackrabbit.spi.ChildInfo;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.NodeId;
@@ -180,7 +181,7 @@
* @return iterator of <code>NodeEntry</code> objects
* @throws RepositoryException If an unexpected error occurs.
*/
- public Iterator getNodeEntries() throws RepositoryException;
+ public Iterator<NodeEntry> getNodeEntries() throws RepositoryException;
/**
* Returns a unmodifiable List of <code>NodeEntry</code>s with the
@@ -190,7 +191,7 @@
* @return list of <code>NodeEntry</code> objects
* @throws RepositoryException If an unexpected error occurs.
*/
- public List getNodeEntries(Name nodeName) throws RepositoryException;
+ public List<NodeEntry> getNodeEntries(Name nodeName) throws RepositoryException;
/**
* Creates or updates the <code>ChildNodeEntries</code> of this node.
@@ -198,7 +199,7 @@
* @param childInfos
* @throws RepositoryException
*/
- public void setNodeEntries(Iterator childInfos) throws RepositoryException;
+ public void setNodeEntries(Iterator<ChildInfo> childInfos) throws RepositoryException;
/**
* Adds a child NodeEntry to this entry if it not yet present with this
@@ -266,7 +267,7 @@
* @return an unmodifiable Iterator over those children that represent valid
* PropertyEntries.
*/
- public Iterator getPropertyEntries();
+ public Iterator<PropertyEntry> getPropertyEntries();
/**
* Add an existing <code>PropertyEntry</code> with the given name if it is
@@ -291,7 +292,7 @@
* @throws ItemExistsException
* @throws RepositoryException if an unexpected error occurs.
*/
- public void setPropertyEntries(Collection propNames) throws ItemExistsException, RepositoryException;
+ public void setPropertyEntries(Collection<Name> propNames) throws ItemExistsException, RepositoryException;
/**
* Add a new, transient <code>PropertyEntry</code> to this <code>NodeEntry</code>