indexed store rewrite in progress
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java index 180ceb0..dfdf9f2 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/events/AutoBuildJob.java
@@ -38,7 +38,7 @@ private long lastBuild = 0L; private Workspace workspace; private final IJobManager jobManager = Platform.getJobManager(); - private final Bundle systemBundle = Platform.getBundle("org.eclipse.osgi"); + private final Bundle systemBundle = Platform.getBundle("org.eclipse.osgi"); //$NON-NLS-1$ AutoBuildJob(Workspace workspace) { super(ICoreConstants.MSG_EVENTS_BUILDING_0);
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/AbstractObjectPolicy.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/AbstractObjectPolicy.java index b8c222b..3687b1c 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/AbstractObjectPolicy.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/AbstractObjectPolicy.java
@@ -10,12 +10,14 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.runtime.CoreException; + public abstract class AbstractObjectPolicy { /** * Creates a new instance of an object for this object store. Uses * the contents of the field to decide what type of object to create. */ - public abstract StoredObject createObject(Field field, ObjectStore store, ObjectAddress address) throws ObjectStoreException; + public abstract StoredObject createObject(Field field, ObjectStore store, ObjectAddress address) throws CoreException; } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/BinarySmallObject.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/BinarySmallObject.java index f7b2a02..cc08cc8 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/BinarySmallObject.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/BinarySmallObject.java
@@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.runtime.CoreException; + class BinarySmallObject extends IndexedStoreObject { public static final int TYPE = 5; public static final int VALUE_OFFSET = 2; @@ -26,25 +28,14 @@ /** * Constructs an object from bytes that came from the store. */ - public BinarySmallObject(Field f, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + public BinarySmallObject(Field f, ObjectStore store, ObjectAddress address) throws CoreException { super(f, store, address); } /** - * Places the contents of the fields into the buffer. - * Subclasses should implement and call super. - * The value field is maintained in the contents directly and does not need - * to be copied there by this method. - */ - protected void insertValues(Field f) { - super.insertValues(f); - f.subfield(VALUE_OFFSET).put(value); - } - - /** * Extracts the values from a field into the members of this object; */ - protected void extractValues(Field f) throws ObjectStoreException { + protected void extractValues(Field f) throws CoreException { super.extractValues(f); value = f.subfield(VALUE_OFFSET).get(); } @@ -57,10 +48,6 @@ return 6000 + VALUE_OFFSET; } - protected int length() { - return value.length + VALUE_OFFSET; - } - /** * Returns the minimum size of this object's instance -- including its type field. * Subclasses should override. @@ -84,6 +71,21 @@ return new Field(value).get(); } + /** + * Places the contents of the fields into the buffer. + * Subclasses should implement and call super. + * The value field is maintained in the contents directly and does not need + * to be copied there by this method. + */ + protected void insertValues(Field f) { + super.insertValues(f); + f.subfield(VALUE_OFFSET).put(value); + } + + protected int length() { + return value.length + VALUE_OFFSET; + } + /** * Provides a printable representation of this object. */
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Buffer.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Buffer.java index ce5a1a7..32772cf 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Buffer.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Buffer.java
@@ -46,10 +46,6 @@ this.contents = anObject.toByteArray(); } - public void clear() { - clear(contents, 0, contents.length); - } - private static void clear(byte[] buffer, int offset, int length) { int n = length; int p = offset; @@ -61,20 +57,10 @@ } } - private static void clear(byte[] buffer, int offset, int length, byte value) { - for (int i = offset; i < offset + length; i++) { - buffer[i] = value; - } - } - public void clear(int offset, int length) { clear(contents, offset, length); } - public void clear(int offset, int length, byte value) { - clear(contents, offset, length, value); - } - private static int compare(byte[] buffer1, int offset1, int length1, byte[] buffer2, int offset2, int length2) { if (length1 < length2) { return -compare(buffer2, offset2, length2, buffer1, offset1, length1);
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Field.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Field.java index 61dcaab..06822f3 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Field.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Field.java
@@ -83,11 +83,6 @@ return this; } - public Field clear(byte value) { - buffer.clear(offset, length, value); - return this; - } - public int compareTo(Field that) { return Buffer.compare(this.buffer, this.offset, this.length, that.buffer, that.offset, that.length); }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Index.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Index.java index ac76c26..3f26a42 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Index.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Index.java
@@ -11,6 +11,8 @@ package org.eclipse.core.internal.indexing; import java.util.Vector; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; /** * This class provides the public interface to an index. @@ -38,7 +40,7 @@ /** * Returns the number of entries in the index. */ - public synchronized int getNumberOfEntries() throws IndexedStoreException { + public synchronized int getNumberOfEntries() throws CoreException { IndexAnchor anchor = store.acquireAnchor(anchorAddress); int n = anchor.getNumberOfEntries(); anchor.release(); @@ -48,7 +50,7 @@ /** * Returns the number of nodes in the index. */ - public synchronized int getNumberOfNodes() throws IndexedStoreException { + public synchronized int getNumberOfNodes() throws CoreException { IndexAnchor anchor = store.acquireAnchor(anchorAddress); int n = anchor.getNumberOfNodes(); anchor.release(); @@ -60,7 +62,7 @@ * This assumes that the underlying index has values that can be converted * to ObjectIDs. */ - public synchronized Vector getObjectIdentifiersMatching(byte[] key) throws IndexedStoreException { + public synchronized Vector getObjectIdentifiersMatching(byte[] key) throws CoreException { IndexCursor cursor = open(); cursor.find(key); Vector vector = new Vector(20); @@ -77,7 +79,7 @@ * key given in the index. This assumes that the underlying * index has values that can be converted to ObjectIDs. */ - public synchronized Vector getObjectIdentifiersMatching(String key) throws IndexedStoreException { + public synchronized Vector getObjectIdentifiersMatching(String key) throws CoreException { return getObjectIdentifiersMatching(Convert.toUTF8(key)); } @@ -86,7 +88,7 @@ * key given in the index. This assumes that the underlying * index has values that can be converted to ObjectIDs. */ - public synchronized Vector getObjectIdentifiersMatching(Insertable key) throws IndexedStoreException { + public synchronized Vector getObjectIdentifiersMatching(Insertable key) throws CoreException { return getObjectIdentifiersMatching(key.toByteArray()); } @@ -96,45 +98,45 @@ * be greater than 2048 bytes in length. The other insert methods are * convenience methods that use this for their implementation. */ - public synchronized void insert(byte[] key, byte[] value) throws IndexedStoreException { + public synchronized void insert(byte[] key, byte[] value) throws CoreException { if (key.length > 1024) - throw new IndexedStoreException(IndexedStoreException.EntryKeyLengthError); + throw Policy.exception("indexedStore.entryKeyLengthError"); //$NON-NLS-1$ if (value.length > 2048) - throw new IndexedStoreException(IndexedStoreException.EntryValueLengthError); + throw Policy.exception("indexedStore.entryValueLengthError"); //$NON-NLS-1$ IndexAnchor anchor = store.acquireAnchor(anchorAddress); anchor.insert(key, value); anchor.release(); } - public synchronized void insert(byte[] key, String value) throws IndexedStoreException { + public synchronized void insert(byte[] key, String value) throws CoreException { insert(key, Convert.toUTF8(value)); } - public synchronized void insert(byte[] key, Insertable value) throws IndexedStoreException { + public synchronized void insert(byte[] key, Insertable value) throws CoreException { insert(key, value.toByteArray()); } - public synchronized void insert(String key, byte[] value) throws IndexedStoreException { + public synchronized void insert(String key, byte[] value) throws CoreException { insert(Convert.toUTF8(key), value); } - public synchronized void insert(String key, String value) throws IndexedStoreException { + public synchronized void insert(String key, String value) throws CoreException { insert(Convert.toUTF8(key), Convert.toUTF8(value)); } - public synchronized void insert(String key, Insertable value) throws IndexedStoreException { + public synchronized void insert(String key, Insertable value) throws CoreException { insert(Convert.toUTF8(key), value.toByteArray()); } - public synchronized void insert(Insertable key, byte[] value) throws IndexedStoreException { + public synchronized void insert(Insertable key, byte[] value) throws CoreException { insert(key.toByteArray(), value); } - public synchronized void insert(Insertable key, String value) throws IndexedStoreException { + public synchronized void insert(Insertable key, String value) throws CoreException { insert(key.toByteArray(), Convert.toUTF8(value)); } - public synchronized void insert(Insertable key, Insertable value) throws IndexedStoreException { + public synchronized void insert(Insertable key, Insertable value) throws CoreException { insert(key.toByteArray(), value.toByteArray()); } @@ -142,7 +144,7 @@ * Returns a cursor for this index. The cursor is initially in the unset state * and should be positioned using "find" before being used. */ - public synchronized IndexCursor open() throws IndexedStoreException { + public synchronized IndexCursor open() { IndexCursor c = new IndexCursor(store, anchorAddress); return c; } @@ -150,7 +152,7 @@ /** * Removes all entries that have a key that is equal to the supplied key. */ - public synchronized void removeAllEqual(byte[] key) throws IndexedStoreException { + public synchronized void removeAllEqual(byte[] key) throws CoreException { IndexCursor c = open(); c.find(key); while (c.keyEquals(key)) { @@ -162,7 +164,7 @@ /** * Removes all entries that have a key that begins with the supplied prefix. */ - public synchronized void removeAllMatching(byte[] keyPrefix) throws IndexedStoreException { + public synchronized void removeAllMatching(byte[] keyPrefix) throws CoreException { IndexCursor c = open(); c.find(keyPrefix); while (c.keyMatches(keyPrefix)) {
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexAnchor.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexAnchor.java index ecaf249..3143994 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexAnchor.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexAnchor.java
@@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + /** * An IndexAnchor provides a place to hang index-wide information in a fixed spot, especially * since the root node may change due to a root node split. @@ -44,7 +47,7 @@ /** * Constructs a new index anchor from a field read from the store. Used by the factory. */ - public IndexAnchor(Field f, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + public IndexAnchor(Field f, ObjectStore store, ObjectAddress address) throws CoreException { super(f, store, address); } @@ -71,7 +74,7 @@ * Places the contents of the buffer into the fields. * Subclasses should implement and call super. */ - protected void extractValues(Field f) throws ObjectStoreException { + protected void extractValues(Field f) throws CoreException { super.extractValues(f); setFields(f); numberOfEntries = numberOfEntriesField.getInt(); @@ -138,7 +141,7 @@ /** * This method requests the anchor to destroy its children. */ - void destroyChildren() throws IndexedStoreException { + void destroyChildren() throws CoreException { IndexNode rootNode = acquireNode(rootNodeAddress); rootNode.destroyChildren(); rootNode.release(); @@ -150,7 +153,7 @@ * is greater than or equal to the key provided. To set a cursor to the beginning * of the index use a key of zero length. */ - void find(byte key[], IndexCursor cursor) throws IndexedStoreException { + void find(byte key[], IndexCursor cursor) throws CoreException { if (rootNodeAddress.isNull()) { cursor.reset(); } else { @@ -163,7 +166,7 @@ /** * This method returns a cursor set to the first entry in the index. */ - void findFirstEntry(IndexCursor cursor) throws IndexedStoreException { + void findFirstEntry(IndexCursor cursor) throws CoreException { if (rootNodeAddress.isNull()) { cursor.reset(); } else { @@ -176,7 +179,7 @@ /** * This method returns a cursor set to the last entry in the index. */ - void findLastEntry(IndexCursor cursor) throws IndexedStoreException { + void findLastEntry(IndexCursor cursor) throws CoreException { if (rootNodeAddress.isNull()) { cursor.reset(); } else { @@ -189,13 +192,13 @@ /** * Insert an entry into an index. */ - void insert(byte[] key, byte[] value) throws IndexedStoreException { + void insert(byte[] key, byte[] value) throws CoreException { if (rootNodeAddress.isNull()) { IndexNode rootNode = new IndexNode(this.address); try { store.insertObject(rootNode); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.IndexNodeNotCreated, e); + } catch (CoreException e) { + Policy.exception("indexedStore.indexNodeNotCreated", e); //$NON-NLS-1$ } rootNodeAddress = rootNode.getAddress(); } @@ -214,7 +217,7 @@ /** * Returns the number of nodes in the index. */ - int getNumberOfNodes() throws IndexedStoreException { + int getNumberOfNodes() throws CoreException { if (rootNodeAddress.isNull()) return 0; IndexNode node = acquireNode(rootNodeAddress);
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexCursor.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexCursor.java index 8dcbea2..3b595de 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexCursor.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexCursor.java
@@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + public class IndexCursor { private IndexedStore store; @@ -41,7 +44,7 @@ * entry if it is pointing outside of the entries of a node. * If there are no more entries then unset the cursor. */ - private void adjust() throws IndexedStoreException { + private void adjust() throws CoreException { if (leafNode == null) return; if (entryNumber >= leafNode.getNumberOfEntries()) { @@ -52,7 +55,6 @@ ObjectAddress previous = leafNode.getPreviousAddress(); int n = entryNumber; set(previous, n); - } else { } } @@ -60,7 +62,7 @@ * Closes the cursor. This unsets the cursor and deregisters it from all the * interested parties. */ - public void close() throws IndexedStoreException { + public void close() { reset(); } @@ -68,7 +70,7 @@ * Adjusts a cursor if there is a need after an entry is inserted. * If not, it just returns. */ - void entryInserted(int i) throws IndexedStoreException { + void entryInserted(int i) throws CoreException { if (entryNumber >= i) entryNumber++; adjust(); @@ -77,7 +79,7 @@ /** * Adjusts a cursor if there is a need after an entry is removed. */ - void entryRemoved(int i) throws IndexedStoreException { + void entryRemoved(int i) throws CoreException { entryRemoved = (entryNumber == i); if (entryNumber > i) entryNumber--; @@ -89,7 +91,7 @@ * greater than or equal to that of the argument. Returns the cursor itself * for convenience in chaining method invocations. */ - public synchronized IndexCursor find(byte[] b) throws IndexedStoreException { + public synchronized IndexCursor find(byte[] b) throws CoreException { IndexAnchor anchor = store.acquireAnchor(anchorAddress); anchor.find(b, this); anchor.release(); @@ -102,7 +104,7 @@ * greater than or equal to that of the argument. Returns the cursor itself * for convenience in chaining method invocations. */ - public synchronized IndexCursor find(String s) throws IndexedStoreException { + public synchronized IndexCursor find(String s) throws CoreException { return find(Convert.toUTF8(s)); } @@ -111,14 +113,14 @@ * greater than or equal to that of the argument. Returns the cursor itself * for convenience in chaining method invocations. */ - public synchronized IndexCursor find(Insertable i) throws IndexedStoreException { + public synchronized IndexCursor find(Insertable i) throws CoreException { return find(i.toByteArray()); } /** * Sets the cursor at the first entry of an index. */ - public synchronized IndexCursor findFirstEntry() throws IndexedStoreException { + public synchronized IndexCursor findFirstEntry() throws CoreException { IndexAnchor anchor = store.acquireAnchor(anchorAddress); anchor.findFirstEntry(this); anchor.release(); @@ -129,7 +131,7 @@ /** * Sets the cursor at the last entry of an index. */ - public synchronized IndexCursor findLastEntry() throws IndexedStoreException { + public synchronized IndexCursor findLastEntry() throws CoreException { IndexAnchor anchor = store.acquireAnchor(anchorAddress); anchor.findLastEntry(this); anchor.release(); @@ -144,9 +146,9 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized byte[] getKey() throws IndexedStoreException { + public synchronized byte[] getKey() throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ if (leafNode == null) return null; byte[] key = leafNode.getKey(entryNumber); @@ -157,7 +159,7 @@ * Returns the key at the cursor as a string. * If the cursor is at the beginning or end of the index then return null. */ - public synchronized String getKeyAsString() throws IndexedStoreException { + public synchronized String getKeyAsString() throws CoreException { byte[] key = getKey(); if (key == null) return null; @@ -175,9 +177,9 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized byte[] getValue() throws IndexedStoreException { + public synchronized byte[] getValue() throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ if (leafNode == null) return null; byte[] value = leafNode.getValue(entryNumber); @@ -188,7 +190,7 @@ * Returns the value as an object address. May return null if the cursor is at the beginning * or end of the index. */ - ObjectAddress getValueAsObjectAddress() throws IndexedStoreException { + ObjectAddress getValueAsObjectAddress() throws CoreException { byte[] value = getValue(); if (value == null) return null; @@ -199,7 +201,7 @@ * Returns the ObjectID from the value for the current cursor location. * If the cursor is at the beginning or end of the index then return null. */ - public synchronized ObjectID getValueAsObjectID() throws IndexedStoreException { + public synchronized ObjectID getValueAsObjectID() throws CoreException { byte[] value = getValue(); if (value == null) return null; @@ -210,7 +212,7 @@ * Returns the String from the value for the current cursor location. * If the cursor is at the beginning or end of the index then return null. */ - public synchronized String getValueAsString() throws IndexedStoreException { + public synchronized String getValueAsString() throws CoreException { byte[] value = getValue(); if (value == null) return null; @@ -220,18 +222,18 @@ /** * This method returns true if the current cursor location before the first entry in the index. */ - public synchronized boolean isAtBeginning() throws IndexedStoreException { + public synchronized boolean isAtBeginning() throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ return (leafNode == null); } /** * This method returns true if the current cursor location after the last entry in the index. */ - public synchronized boolean isAtEnd() throws IndexedStoreException { + public synchronized boolean isAtEnd() throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ return (leafNode == null); } @@ -239,9 +241,9 @@ * Returns true if the cursor is set to an entry. * Returns false otherwise. */ - public synchronized boolean isSet() throws IndexedStoreException { + public synchronized boolean isSet() throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ return !(leafNode == null); } @@ -252,9 +254,9 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized boolean keyEquals(byte[] b) throws IndexedStoreException { + public synchronized boolean keyEquals(byte[] b) throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ if (leafNode == null) return false; byte[] key = leafNode.getKey(entryNumber); @@ -273,7 +275,7 @@ * Compares a String to the key in the cursor and * returns true if the String is equal to the key at the entry in the cursor. */ - public synchronized boolean keyEquals(String s) throws IndexedStoreException { + public synchronized boolean keyEquals(String s) throws CoreException { return keyEquals(Convert.toUTF8(s)); } @@ -281,7 +283,7 @@ * Compares an Insertable to the key in the cursor and * returns true if the String is equal to the key at the entry in the cursor. */ - public synchronized boolean keyEquals(Insertable anObject) throws IndexedStoreException { + public synchronized boolean keyEquals(Insertable anObject) throws CoreException { return keyEquals(anObject.toByteArray()); } @@ -293,9 +295,9 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized boolean keyMatches(byte[] b) throws IndexedStoreException { + public synchronized boolean keyMatches(byte[] b) throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ if (leafNode == null) return false; byte[] key = leafNode.getKey(entryNumber); @@ -315,7 +317,7 @@ * returns true if the byte array is a prefix * of the key at the entry in the cursor. */ - public synchronized boolean keyMatches(String s) throws IndexedStoreException { + public synchronized boolean keyMatches(String s) throws CoreException { return keyMatches(Convert.toUTF8(s)); } @@ -324,7 +326,7 @@ * returns true if the byte array is a prefix * of the key at the entry in the cursor. */ - public synchronized boolean keyMatches(Insertable anObject) throws IndexedStoreException { + public synchronized boolean keyMatches(Insertable anObject) throws CoreException { return keyMatches(anObject.toByteArray()); } @@ -337,7 +339,7 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized IndexCursor next() throws IndexedStoreException { + public synchronized IndexCursor next() throws CoreException { if (isAtBeginning()) { findFirstEntry(); } else { @@ -351,7 +353,7 @@ * Adjusts a cursor if there is a need after a node has been split. * If not, it just returns. */ - void nodeSplit() throws IndexedStoreException { + void nodeSplit() throws CoreException { adjust(); } @@ -364,7 +366,7 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized IndexCursor previous() throws IndexedStoreException { + public synchronized IndexCursor previous() throws CoreException { if (isAtEnd()) { findLastEntry(); } else { @@ -384,7 +386,7 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized void remove() throws IndexedStoreException { + public synchronized void remove() throws CoreException { removeEntry(); } @@ -398,9 +400,9 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - void removeEntry() throws IndexedStoreException { + void removeEntry() throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ if (leafNode == null) return; ObjectAddress address = leafNode.getAddress(); @@ -425,7 +427,7 @@ /** * Places the cursor in the "unset" state. */ - public synchronized void reset() throws IndexedStoreException { + public synchronized void reset() { unset(); entryRemoved = false; } @@ -433,7 +435,7 @@ /** * Sets the cursor to a particular entry of an index node. */ - void set(ObjectAddress leafNodeAddress, int entryNumber) throws IndexedStoreException { + void set(ObjectAddress leafNodeAddress, int entryNumber) throws CoreException { unset(); if (leafNodeAddress.isNull()) return; @@ -449,7 +451,7 @@ /** * Places the cursor in the "unset" state. */ - private void unset() throws IndexedStoreException { + private void unset() { if (leafNode != null) { leafNode.removeCursor(this); leafNode.release(); @@ -464,11 +466,11 @@ * If the cursor is at the beginning or end of the index then do nothing. * Returns true if the value is set, false otherwise. */ - void updateEntry(byte[] b) throws IndexedStoreException { + void updateEntry(byte[] b) throws CoreException { if (entryRemoved) - throw new IndexedStoreException(IndexedStoreException.EntryRemoved); + throw Policy.exception("indexedStore.entryRemoved"); //$NON-NLS-1$ if (b.length > 2048) - throw new IndexedStoreException(IndexedStoreException.EntryValueLengthError); + throw Policy.exception("indexedStore.entryValueLengthError"); //$NON-NLS-1$ if (leafNode == null) return; leafNode.updateValueAt(entryNumber, b); @@ -482,7 +484,7 @@ * Throws an EntryRemoved condition if the entry at which it has * been pointing has been removed by another cursor. */ - public synchronized void updateValue(byte[] b) throws IndexedStoreException { + public synchronized void updateValue(byte[] b) throws CoreException { updateEntry(b); } @@ -490,7 +492,7 @@ * Updates the value of the index entry at the cursor. * If the cursor is at the beginning or end of the index then do nothing. */ - public synchronized void updateValue(String s) throws IndexedStoreException { + public synchronized void updateValue(String s) throws CoreException { updateValue(Convert.toUTF8(s)); } @@ -498,7 +500,7 @@ * Updates the value of the index entry at the cursor. * If the cursor is at the beginning or end of the index then do nothing. */ - public synchronized void updateValue(Insertable anObject) throws IndexedStoreException { + public synchronized void updateValue(Insertable anObject) throws CoreException { updateValue(anObject.toByteArray()); } } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexNode.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexNode.java index fce634f..aa3ca3d 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexNode.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexNode.java
@@ -11,6 +11,8 @@ package org.eclipse.core.internal.indexing; import java.util.HashSet; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; class IndexNode extends IndexedStoreObject { @@ -56,7 +58,7 @@ /** * Reconstructs a node from a field. */ - IndexNode(Field f, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + IndexNode(Field f, ObjectStore store, ObjectAddress address) throws CoreException { super(f, store, address); } @@ -105,7 +107,7 @@ /** * Compares the key at a particular entry to a byte array. */ - private int compareEntryToKey(int entryNumber, byte[] key) throws IndexedStoreException { + private int compareEntryToKey(int entryNumber, byte[] key) { Field keyField = new Field(key); Field entryKeyField = getKeyField(entryNumber); return entryKeyField.compareTo(keyField); @@ -114,7 +116,7 @@ /** * Compresses the space in the entries area of the node. */ - private void compress() throws IndexedStoreException { + private void compress() { /* some preliminaries */ int entriesLength = entriesField.length(); @@ -139,7 +141,7 @@ * Compresses the space in the entries area of the node if the free space block * is smaller than the given threshold. */ - private void compress(int threshold) throws IndexedStoreException { + private void compress(int threshold) { int entriesLength = entriesField.length(); int descriptorBlockSize = numberOfEntries * DescriptorLength; int freeBlockSize = entriesLength - (descriptorBlockSize + usedSpaceMax); @@ -205,7 +207,7 @@ /** * Causes the node to remove its children from the store. */ - void destroyChildren() throws IndexedStoreException { + void destroyChildren() throws CoreException { if (!isLeaf()) { for (int i = 0; i < numberOfEntries; i++) { ObjectAddress childNodeAddress = new ObjectAddress(getValue(i)); @@ -220,7 +222,7 @@ /** * Places a cursor and the first entry greater than or equal to a key. */ - void find(byte[] key, IndexCursor cursor) throws IndexedStoreException { + void find(byte[] key, IndexCursor cursor) throws CoreException { int i; i = findLastEntryLT(key); if (isLeaf()) { @@ -241,7 +243,7 @@ /** * Places a cursor at the first entry of a node. */ - void findFirstEntry(IndexCursor cursor) throws IndexedStoreException { + void findFirstEntry(IndexCursor cursor) throws CoreException { if (numberOfEntries == 0) { cursor.reset(); } else if (!isLeaf()) { @@ -256,7 +258,7 @@ /** * Returns the index of the first entry greater than a key. */ - private int findFirstEntryGT(byte[] key) throws IndexedStoreException { + private int findFirstEntryGT(byte[] key) { int lo = 0; int hi = numberOfEntries - 1; while (lo <= hi) { @@ -274,7 +276,7 @@ /** * Places a cursor at the last entry of a node. */ - void findLastEntry(IndexCursor cursor) throws IndexedStoreException { + void findLastEntry(IndexCursor cursor) throws CoreException { if (numberOfEntries == 0) { cursor.reset(); return; @@ -292,7 +294,7 @@ /** * Returns the index of the last entry less than a key. */ - private int findLastEntryLT(byte[] key) throws IndexedStoreException { + private int findLastEntryLT(byte[] key) { int lo = 0; int hi = numberOfEntries - 1; Field keyField = new Field(key); @@ -392,7 +394,7 @@ /** * Returns the number of nodes in this subtree (this one plus all descendants). */ - int getNumberOfNodes() throws IndexedStoreException { + int getNumberOfNodes() throws CoreException { if (isLeaf()) return 1; int sum = 0; @@ -452,7 +454,7 @@ * Implementation Note: Cannot use an iterator over the cursor set because * notification of an insert may remove the cursor being notified from the cursor set. */ - void insertEntry(byte[] key, byte[] value) throws IndexedStoreException { + void insertEntry(byte[] key, byte[] value) throws CoreException { int i = findFirstEntryGT(key); if (isLeaf()) { insertEntryBefore(i, key, value); @@ -484,7 +486,7 @@ * non-leaf node then the value is the address of a child. That child's parent address * will be updated if that (key, value) is to be inserted into a new node. */ - private void insertEntryBefore(int i, byte[] key, byte[] value) throws IndexedStoreException { + private void insertEntryBefore(int i, byte[] key, byte[] value) throws CoreException { Field entries = entriesField; int entriesLength = entries.length(); int keyValueLength = key.length + value.length; @@ -541,7 +543,7 @@ /** * Inserts a child address into a non-leaf node. This may result in this node splitting. */ - private void insertKeyForChild(ObjectAddress childAddress, byte[] key) throws IndexedStoreException { + private void insertKeyForChild(ObjectAddress childAddress, byte[] key) throws CoreException { int i = findFirstEntryGT(key); insertEntryBefore(i, key, childAddress.toByteArray()); if (i == 0 && !parentAddress.isNull()) { @@ -567,7 +569,7 @@ * Places the contents of the buffer into the fields. * Subclasses should implement and call super. */ - protected void extractValues(Field f) throws ObjectStoreException { + protected void extractValues(Field f) throws CoreException { super.extractValues(f); anchorAddress = new ObjectAddress(f.get(AnchorAddress)); parentAddress = new ObjectAddress(f.get(ParentAddress)); @@ -591,7 +593,7 @@ * Removes the descriptor and key/value pair at the entry number given. This may * result in the node becoming empty. The caller will need to take steps to plan for this. */ - void removeEntry(int i) throws IndexedStoreException { + void removeEntry(int i) throws CoreException { /* remove the (key,value) entry */ byte[] key = getKey(i); @@ -629,7 +631,7 @@ /** * Removes a child node address reference from a non-leaf node. */ - private void removeKeyForChild(ObjectAddress childAddress) throws IndexedStoreException { + private void removeKeyForChild(ObjectAddress childAddress) throws CoreException { Field childAddressField = new Field(childAddress); int i = 0; while (i < numberOfEntries) { @@ -681,12 +683,12 @@ * cause a parent node to split as well. Splits eventually propagate to the root node, cause it * to split and a new root node to be created. */ - private ObjectAddress split() throws IndexedStoreException { + private ObjectAddress split() throws CoreException { /* Nodes can only be split if there are at least 2 entries */ int n = numberOfEntries; if (n < 2) { - throw new IndexedStoreException(IndexedStoreException.IndexNodeNotSplit); + throw Policy.exception("indexedStore.indexNodeNotSplit"); //$NON-NLS-1$ } /* @@ -778,7 +780,7 @@ * Unlinks a node from its parent and siblings. This does not modify the current node, but * does modify all the nodes and anchors pointing to it. */ - void unlink() throws IndexedStoreException { + void unlink() throws CoreException { if (isRoot()) { IndexAnchor anchor = acquireAnchor(anchorAddress); anchor.setRootNodeAddress(ObjectAddress.Null); @@ -805,7 +807,7 @@ * Update the key and value at this entry to a new key and value. This may result in a node split. * The caller must be able to recognize that the node has split and compensate for that. */ - private void updateEntry(int i, byte[] key, byte[] value) throws IndexedStoreException { + private void updateEntry(int i, byte[] key, byte[] value) throws CoreException { /* If the node needs to be split, split it and then attempt the update again. Note that if @@ -862,7 +864,7 @@ * Sets the key at this entry to a new key. This may result in a node split. * The caller must be able to recognize that the node has split and compensate for that if necessary. */ - private void updateKeyAt(int i, byte[] key) throws IndexedStoreException { + private void updateKeyAt(int i, byte[] key) throws CoreException { updateEntry(i, key, getValue(i)); } @@ -870,7 +872,7 @@ * Updates the key of an (key,address) entry in a non-leaf node. The key must still be in order with respect * to the other keys of the node. */ - private void updateKeyForChild(byte[] key, ObjectAddress childAddress, byte[] newKey) throws IndexedStoreException { + private void updateKeyForChild(byte[] key, ObjectAddress childAddress, byte[] newKey) throws CoreException { Field childAddressField = new Field(childAddress.toByteArray()); int i = findLastEntryLT(key) + 1; while (i < numberOfEntries) { @@ -892,7 +894,7 @@ * Sets the value at this entry to a new value. This may result in a node split. * The caller must be able to recognize that the node has split and compensate for that. */ - void updateValueAt(int i, byte[] value) throws IndexedStoreException { + void updateValueAt(int i, byte[] value) throws CoreException { updateEntry(i, getKey(i), value); }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStore.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStore.java index 793f6a6..af6af83 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStore.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStore.java
@@ -11,6 +11,8 @@ package org.eclipse.core.internal.indexing; import java.util.*; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; public class IndexedStore { @@ -41,7 +43,7 @@ /** * Acquires an anchor. */ - IndexAnchor acquireAnchor(ObjectAddress address) throws IndexedStoreException { + IndexAnchor acquireAnchor(ObjectAddress address) throws CoreException { return (IndexAnchor) acquireObject(address); } @@ -51,7 +53,7 @@ IndexedStoreContext acquireContext(ObjectAddress address) { try { return (IndexedStoreContext) acquireObject(address); - } catch (IndexedStoreException e) { + } catch (CoreException e) { //context couldn't be acquired - return null return null; } @@ -60,19 +62,19 @@ /** * Acquire an index node. */ - IndexNode acquireNode(ObjectAddress address) throws IndexedStoreException { + IndexNode acquireNode(ObjectAddress address) throws CoreException { return (IndexNode) acquireObject(address); } /** * Acquires an object. */ - private StoredObject acquireObject(ObjectAddress address) throws IndexedStoreException { + private StoredObject acquireObject(ObjectAddress address) throws CoreException { StoredObject object; try { object = objectStore.acquireObject(address); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotAcquired, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.objectNotAcquired", e); //$NON-NLS-1$ } return object; } @@ -80,7 +82,7 @@ /** * Acquires a Binary Object. */ - BinarySmallObject acquireBinarySmallObject(ObjectAddress address) throws IndexedStoreException { + BinarySmallObject acquireBinarySmallObject(ObjectAddress address) throws CoreException { return (BinarySmallObject) acquireObject(address); } @@ -88,7 +90,7 @@ * Checks to see if the metadata stored in the object store matches that expected by this * code. If not, a conversion is necessary. */ - private void checkMetadata() throws IndexedStoreException { + private void checkMetadata() throws CoreException { Buffer metadata = getMetadataArea(MetadataID); Field versionField = metadata.getField(0, 4); int version = versionField.getInt(); @@ -106,7 +108,7 @@ /** * Closes the store. This is required to free the underlying file. */ - public synchronized void close() throws IndexedStoreException { + public synchronized void close() throws CoreException { if (name == null) return;//already closed try { @@ -115,19 +117,19 @@ objectDirectoryCursor.close(); if (indexDirectoryCursor != null) indexDirectoryCursor.close(); - } catch (IndexedStoreException e) { + } catch (CoreException e) { //make sure the file gets closed no matter what try { objectStore.close(); - } catch (ObjectStoreException e2) { + } catch (CoreException e2) { //ignore this and rethrow the underlying exception } throw e; } try { objectStore.close(); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.StoreNotClosed, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.storeNotClosed", e); //$NON-NLS-1$ } registry.remove(name); name = null; @@ -139,11 +141,11 @@ indexDirectoryCursor = null; } - public synchronized void commit() throws IndexedStoreException { + public synchronized void commit() throws CoreException { try { objectStore.commit(); } catch (Exception e) { - throw new IndexedStoreException(IndexedStoreException.StoreNotCommitted, e); + throw Policy.exception("indexedStore.storeNotCommitted", e); //$NON-NLS-1$ } } @@ -151,14 +153,14 @@ * Converts the store from a previous to the current version. * No conversions are yet defined. */ - private void convert(int fromVersion) throws IndexedStoreException { - throw new IndexedStoreException(IndexedStoreException.StoreNotConverted); + private void convert(int fromVersion) throws CoreException { + throw Policy.exception("indexedStore.storeNotConverted"); //$NON-NLS-1$ } /** * Creates and initializes an IndexedStore. */ - public static synchronized void create(String name) throws IndexedStoreException { + public static synchronized void create(String name) throws CoreException { ObjectStore store = new ObjectStore(new IndexedStoreObjectPolicy()); try { ObjectStore.create(name); @@ -177,22 +179,22 @@ } catch (Exception e1) { try { store.close(); - } catch (ObjectStoreException e2) { + } catch (CoreException e2) { //real exception thrown below } ObjectStore.delete(name); - throw new IndexedStoreException(IndexedStoreException.StoreNotCreated, e1); + throw Policy.exception("indexedStore.storeNotCreated", e1); //$NON-NLS-1$ } } /** * Creates an Index with the given name. */ - public synchronized Index createIndex(String indexName) throws IndexedStoreException { + public synchronized Index createIndex(String indexName) throws CoreException { Index index = null; indexDirectoryCursor.find(indexName); if (indexDirectoryCursor.keyMatches(indexName)) { - throw new IndexedStoreException(IndexedStoreException.IndexExists); + throw Policy.exception("indexedStore.indexExists"); //$NON-NLS-1$ } ObjectAddress address = insertObject(new IndexAnchor()); indexDirectory.insert(indexName, address.toByteArray()); @@ -203,7 +205,7 @@ /** * Places a byte array into the store, return a new object identifier. */ - public synchronized ObjectID createObject(byte[] b) throws IndexedStoreException { + public synchronized ObjectID createObject(byte[] b) throws CoreException { ObjectAddress address = insertObject(new BinarySmallObject(b)); ObjectID id = getNextObjectID(); objectDirectory.insert(id.toByteArray(), address.toByteArray()); @@ -213,14 +215,14 @@ /** * Places a String into the store. */ - public synchronized ObjectID createObject(String s) throws IndexedStoreException { + public synchronized ObjectID createObject(String s) throws CoreException { return createObject(Convert.toUTF8(s)); } /** * Places an Insertable into the store. */ - public synchronized ObjectID createObject(Insertable anObject) throws IndexedStoreException { + public synchronized ObjectID createObject(Insertable anObject) throws CoreException { return createObject(anObject.toByteArray()); } @@ -262,33 +264,33 @@ /** * @deprecated -- use commit() */ - public synchronized void flush() throws IndexedStoreException { + public synchronized void flush() throws CoreException { try { objectStore.commit(); } catch (Exception e) { - throw new IndexedStoreException(IndexedStoreException.StoreNotFlushed, e); + throw Policy.exception("indexedStore.storeNotFlushed", e); //$NON-NLS-1$ } } /** - * Returns an index given its name. + * Returns an index given its name, or null if no matching index was found */ - public synchronized Index getIndex(String indexName) throws IndexedStoreException { + public synchronized Index getIndex(String indexName) throws CoreException { Index index; byte[] key = Convert.toUTF8(indexName); indexDirectoryCursor.find(key); if (!indexDirectoryCursor.keyMatches(key)) - throw new IndexedStoreException(IndexedStoreException.IndexNotFound); + return null; ObjectAddress address = indexDirectoryCursor.getValueAsObjectAddress(); index = new Index(this, address); return index; } - private Buffer getMetadataArea(int i) throws IndexedStoreException { + private Buffer getMetadataArea(int i) throws CoreException { try { return objectStore.getMetadataArea(i); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.MetadataRequestError, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.metadataRequestError", e); //$NON-NLS-1$ } } @@ -302,10 +304,10 @@ /** * Returns the next ObjectID */ - private ObjectID getNextObjectID() throws IndexedStoreException { + private ObjectID getNextObjectID() throws CoreException { IndexedStoreContext context = acquireContext(contextAddress); if (context == null) - throw new IndexedStoreException(IndexedStoreException.ContextNotAvailable); + throw Policy.exception("indexedStore.contextNotAvailable"); //$NON-NLS-1$ long objectNumber = context.getNextObjectNumber(); context.release(); return new ObjectID(objectNumber); @@ -314,7 +316,7 @@ /** * Returns a byte array given its object identifier. */ - public synchronized byte[] getObject(ObjectID id) throws IndexedStoreException { + public synchronized byte[] getObject(ObjectID id) throws CoreException { objectDirectoryCursor.find(id.toByteArray()); ObjectAddress address = objectDirectoryCursor.getValueAsObjectAddress(); BinarySmallObject object = acquireBinarySmallObject(address); @@ -326,7 +328,7 @@ /** * Returns an object as a string, truncated at the first null. */ - public synchronized String getObjectAsString(ObjectID id) throws IndexedStoreException { + public synchronized String getObjectAsString(ObjectID id) throws CoreException { String s; s = Convert.fromUTF8(getObject(id)); int i = s.indexOf(0); @@ -345,69 +347,63 @@ /** * Inserts a new object into my store. */ - ObjectAddress insertObject(StoredObject object) throws IndexedStoreException { + ObjectAddress insertObject(StoredObject object) throws CoreException { try { ObjectAddress address = objectStore.insertObject(object); return address; - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotStored, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.objectNotStored", e); //$NON-NLS-1$ } } /** * Opens the store. */ - public synchronized void open(String name) throws IndexedStoreException { + public synchronized void open(String name) throws CoreException { if (registry.get(name) != null) { - throw new IndexedStoreException(IndexedStoreException.StoreIsOpen); + throw Policy.exception("indexedStore.storeIsOpen"); //$NON-NLS-1$ } if (!exists(name)) create(name); - try { - objectStore = new ObjectStore(new IndexedStoreObjectPolicy()); - objectStore.open(name); - checkMetadata(); - contextAddress = ContextAddress10; - IndexedStoreContext context = acquireContext(contextAddress); - if (context == null) { - contextAddress = ContextAddress11; - context = acquireContext(contextAddress); - } - if (context == null) { - throw new IndexedStoreException(IndexedStoreException.StoreFormatError); - } - indexDirectoryAddress = context.getIndexDirectoryAddress(); - objectDirectoryAddress = context.getObjectDirectoryAddress(); - context.release(); - indexDirectory = new Index(this, indexDirectoryAddress); - indexDirectoryCursor = indexDirectory.open(); - objectDirectory = new Index(this, objectDirectoryAddress); - objectDirectoryCursor = objectDirectory.open(); - this.name = name; - registry.put(name, this); - } catch (IndexedStoreException e) { - throw e; - } catch (Exception e) { - throw new IndexedStoreException(IndexedStoreException.GenericError, e); + objectStore = new ObjectStore(new IndexedStoreObjectPolicy()); + objectStore.open(name); + checkMetadata(); + contextAddress = ContextAddress10; + IndexedStoreContext context = acquireContext(contextAddress); + if (context == null) { + contextAddress = ContextAddress11; + context = acquireContext(contextAddress); } + if (context == null) { + throw Policy.exception("indexedStore.storeFormatError"); //$NON-NLS-1$ + } + indexDirectoryAddress = context.getIndexDirectoryAddress(); + objectDirectoryAddress = context.getObjectDirectoryAddress(); + context.release(); + indexDirectory = new Index(this, indexDirectoryAddress); + indexDirectoryCursor = indexDirectory.open(); + objectDirectory = new Index(this, objectDirectoryAddress); + objectDirectoryCursor = objectDirectory.open(); + this.name = name; + registry.put(name, this); } - private void putMetadataArea(int i, Buffer b) throws IndexedStoreException { + private void putMetadataArea(int i, Buffer b) throws CoreException { try { objectStore.putMetadataArea(i, b); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.MetadataRequestError, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.metadataRequestError", e); //$NON-NLS-1$ } } /** * Destroys an Index given its name. */ - public synchronized void removeIndex(String indexName) throws IndexedStoreException { + public synchronized void removeIndex(String indexName) throws CoreException { byte[] key = Convert.toUTF8(indexName); indexDirectoryCursor.find(key); if (!indexDirectoryCursor.keyMatches(key)) { - throw new IndexedStoreException(IndexedStoreException.IndexNotFound); + throw Policy.exception("indexedStore.indexNotFound"); //$NON-NLS-1$ } ObjectAddress address = indexDirectoryCursor.getValueAsObjectAddress(); IndexAnchor anchor = acquireAnchor(address); @@ -420,44 +416,40 @@ /** * Removes an object from my store. */ - void removeObject(ObjectAddress address) throws IndexedStoreException { + void removeObject(ObjectAddress address) throws CoreException { try { objectStore.removeObject(address); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotRemoved, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.objectNotRemoved", e); //$NON-NLS-1$ } } /** * Removes the object identified by id from the store. */ - public synchronized void removeObject(ObjectID id) throws IndexedStoreException { + public synchronized void removeObject(ObjectID id) throws CoreException { byte[] key = id.toByteArray(); objectDirectoryCursor.find(key); if (!objectDirectoryCursor.keyMatches(key)) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotFound); + Policy.exception("indexedStore.objectNotFound"); //$NON-NLS-1$ } ObjectAddress address = objectDirectoryCursor.getValueAsObjectAddress(); objectDirectoryCursor.remove(); removeObject(address); } - public synchronized void rollback() throws IndexedStoreException { - try { - objectStore.rollback(); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.StoreNotRolledBack, e); - } + public synchronized void rollback() { + objectStore.rollback(); } /** * Replaces the contents of the object identified by "id" with the byte array "b". */ - public synchronized void updateObject(ObjectID id, byte[] b) throws IndexedStoreException { + public synchronized void updateObject(ObjectID id, byte[] b) throws CoreException { byte[] key = id.toByteArray(); objectDirectoryCursor.find(key); if (!objectDirectoryCursor.keyMatches(key)) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotFound); + Policy.exception("indexedStore.objectNotFound"); //$NON-NLS-1$ } ObjectAddress oldAddress = objectDirectoryCursor.getValueAsObjectAddress(); ObjectAddress newAddress = insertObject(new BinarySmallObject(b)); @@ -468,14 +460,14 @@ /** * Updates an object with a String. */ - public synchronized void updateObject(ObjectID id, String s) throws IndexedStoreException { + public synchronized void updateObject(ObjectID id, String s) throws CoreException { updateObject(id, Convert.toUTF8(s)); } /** * Updates an object with an Insertable. */ - public synchronized void updateObject(ObjectID id, Insertable anObject) throws IndexedStoreException { + public synchronized void updateObject(ObjectID id, Insertable anObject) throws CoreException { updateObject(id, anObject.toByteArray()); } } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreContext.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreContext.java index 44d3017..3d3bfe5 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreContext.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreContext.java
@@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.runtime.CoreException; + class IndexedStoreContext extends IndexedStoreObject { public static final int SIZE = 32; @@ -53,7 +55,7 @@ /** * Constructs a context from a field read from the store. */ - IndexedStoreContext(Field f, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + IndexedStoreContext(Field f, ObjectStore store, ObjectAddress address) throws CoreException { super(f, store, address); } @@ -71,7 +73,7 @@ * Places the contents of the buffer into the fields. * Subclasses should implement and call super. */ - protected void extractValues(Field contents) throws ObjectStoreException { + protected void extractValues(Field contents) throws CoreException { super.extractValues(contents); setFields(contents); openNumber = openNumberField.getInt();
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreException.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreException.java deleted file mode 100644 index fd6d65e..0000000 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreException.java +++ /dev/null
@@ -1,149 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.internal.indexing; - -import org.eclipse.core.internal.utils.Policy; - -public class IndexedStoreException extends StoreException { - - public static final int GenericError = 0; - public static final int EntryKeyLengthError = 1; - public static final int EntryNotRemoved = 2; - public static final int EntryValueLengthError = 3; - public static final int EntryValueNotUpdated = 4; - public static final int IndexNodeNotRetrieved = 5; - public static final int IndexNodeNotStored = 6; - public static final int IndexNodeNotSplit = 7; - public static final int IndexNodeNotCreated = 8; - public static final int IndexExists = 9; - public static final int IndexNotCreated = 10; - public static final int IndexNotFound = 11; - public static final int IndexNotRemoved = 12; - public static final int ObjectExists = 13; - public static final int ObjectNotAcquired = 14; - public static final int ObjectNotCreated = 15; - public static final int ObjectNotFound = 16; - public static final int ObjectNotReleased = 17; - public static final int ObjectNotRemoved = 18; - public static final int ObjectNotUpdated = 19; - public static final int ObjectNotStored = 20; - public static final int ObjectTypeError = 21; - public static final int StoreEmpty = 22; - public static final int StoreFormatError = 23; - public static final int StoreNotCreated = 24; - public static final int StoreNotOpen = 25; - public static final int StoreNotClosed = 26; - public static final int StoreNotFlushed = 27; - public static final int StoreNotOpened = 28; - public static final int StoreNotReadWrite = 29; - public static final int ContextNotAvailable = 30; - public static final int ObjectIDInvalid = 31; - public static final int MetadataRequestError = 32; - public static final int EntryRemoved = 33; - public static final int StoreNotConverted = 34; - public static final int StoreIsOpen = 35; - public static final int StoreNotCommitted = 36; - public static final int StoreNotRolledBack = 37; - - public static String[] messages = new String[40]; - - static { - initializeMessages(); - } - - public int id = GenericError; - - /** - * IndexedStoreException constructor comment. - */ - public IndexedStoreException(int id) { - super(messages[id]); - this.id = id; - } - - /** - * IndexedStoreException constructor comment. - */ - public IndexedStoreException(int id, Throwable e) { - super(messages[id], e); - this.id = id; - } - - /** - * IndexedStoreException constructor comment. - */ - public IndexedStoreException(String s) { - super(s); - id = GenericError; - } - - /** - * Initializes the messages at class load time. - */ - private static void initializeMessages() { - messages[GenericError] = bind("indexedStore.genericError"); //$NON-NLS-1$ - messages[EntryKeyLengthError] = bind("indexedStore.entryKeyLengthError"); //$NON-NLS-1$ - messages[EntryNotRemoved] = bind("indexedStore.entryNotRemoved"); //$NON-NLS-1$ - messages[EntryValueLengthError] = bind("indexedStore.entryValueLengthError"); //$NON-NLS-1$ - messages[EntryValueNotUpdated] = bind("indexedStore.entryValueNotUpdated"); //$NON-NLS-1$ - messages[IndexNodeNotRetrieved] = bind("indexedStore.indexNodeNotRetrieved"); //$NON-NLS-1$ - messages[IndexNodeNotStored] = bind("indexedStore.indexNodeNotStored"); //$NON-NLS-1$ - messages[IndexNodeNotSplit] = bind("indexedStore.indexNodeNotSplit"); //$NON-NLS-1$ - messages[IndexNodeNotCreated] = bind("indexedStore.indexNodeNotCreated"); //$NON-NLS-1$ - messages[IndexExists] = bind("indexedStore.indexExists"); //$NON-NLS-1$ - messages[IndexNotCreated] = bind("indexedStore.indexNotCreated"); //$NON-NLS-1$ - messages[IndexNotFound] = bind("indexedStore.indexNotFound"); //$NON-NLS-1$ - messages[IndexNotRemoved] = bind("indexedStore.indexNotRemoved"); //$NON-NLS-1$ - messages[ObjectExists] = bind("indexedStore.objectExists"); //$NON-NLS-1$ - messages[ObjectNotAcquired] = bind("indexedStore.objectNotAcquired"); //$NON-NLS-1$ - messages[ObjectNotCreated] = bind("indexedStore.objectNotCreated"); //$NON-NLS-1$ - messages[ObjectNotFound] = bind("indexedStore.objectNotFound"); //$NON-NLS-1$ - messages[ObjectNotReleased] = bind("indexedStore.objectNotReleased"); //$NON-NLS-1$ - messages[ObjectNotRemoved] = bind("indexedStore.objectNotRemoved"); //$NON-NLS-1$ - messages[ObjectNotUpdated] = bind("indexedStore.objectNotUpdated"); //$NON-NLS-1$ - messages[ObjectNotStored] = bind("indexedStore.objectNotStored"); //$NON-NLS-1$ - messages[ObjectTypeError] = bind("indexedStore.objectTypeError"); //$NON-NLS-1$ - messages[StoreEmpty] = bind("indexedStore.storeEmpty"); //$NON-NLS-1$ - messages[StoreFormatError] = bind("indexedStore.storeFormatError"); //$NON-NLS-1$ - messages[StoreNotCreated] = bind("indexedStore.storeNotCreated"); //$NON-NLS-1$ - messages[StoreNotOpen] = bind("indexedStore.storeNotOpen"); //$NON-NLS-1$ - messages[StoreNotClosed] = bind("indexedStore.storeNotClosed"); //$NON-NLS-1$ - messages[StoreNotFlushed] = bind("indexedStore.storeNotFlushed"); //$NON-NLS-1$ - messages[StoreNotOpened] = bind("indexedStore.storeNotOpened"); //$NON-NLS-1$ - messages[StoreNotReadWrite] = bind("indexedStore.storeNotReadWrite"); //$NON-NLS-1$ - messages[ContextNotAvailable] = bind("indexedStore.contextNotAvailable"); //$NON-NLS-1$ - messages[ObjectIDInvalid] = bind("indexedStore.objectIDInvalid"); //$NON-NLS-1$ - messages[MetadataRequestError] = bind("indexedStore.metadataRequestError"); //$NON-NLS-1$ - messages[EntryRemoved] = bind("indexedStore.entryRemoved"); //$NON-NLS-1$ - messages[StoreNotConverted] = bind("indexedStore.storeNotConverted"); //$NON-NLS-1$ - messages[StoreIsOpen] = bind("indexedStore.storeIsOpen"); //$NON-NLS-1$ - messages[StoreNotCommitted] = bind("indexedStore.storeNotCommitted"); //$NON-NLS-1$ - messages[StoreNotRolledBack] = bind("indexedStore.storeNotRolledBack"); //$NON-NLS-1$ - } - - private static String bind(String name) { - return Policy.bind(name); - } - - /** - * Creates a printable representation of this exception. - */ - public String toString() { - StringBuffer buffer = new StringBuffer(50); - buffer.append("IndexedStoreException:"); //$NON-NLS-1$ - buffer.append(getMessage()); - if (wrappedException != null) { - buffer.append("\n"); //$NON-NLS-1$ - buffer.append(wrappedException.toString()); - } - return buffer.toString(); - } -} \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObject.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObject.java index 3ea6313..950866f 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObject.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObject.java
@@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + abstract class IndexedStoreObject extends StoredObject { public IndexedStoreObject() { @@ -20,33 +23,33 @@ * Constructs an object from bytes that came from the store. * These bytes include the 2 byte type field. */ - public IndexedStoreObject(Field f, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + public IndexedStoreObject(Field f, ObjectStore store, ObjectAddress address) throws CoreException { super(f, store, address); } /** * Acquires an anchor. */ - protected final IndexAnchor acquireAnchor(ObjectAddress address) throws IndexedStoreException { + protected final IndexAnchor acquireAnchor(ObjectAddress address) throws CoreException { return (IndexAnchor) acquireObject(address); } /** * Acquires a node. */ - protected final IndexNode acquireNode(ObjectAddress address) throws IndexedStoreException { + protected final IndexNode acquireNode(ObjectAddress address) throws CoreException { return (IndexNode) acquireObject(address); } /** * Acquires an object. */ - protected final StoredObject acquireObject(ObjectAddress address) throws IndexedStoreException { + protected final StoredObject acquireObject(ObjectAddress address) throws CoreException { StoredObject object; try { object = store.acquireObject(address); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotAcquired, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.objectNotAcquired", e); //$NON-NLS-1$ } return object; } @@ -54,34 +57,30 @@ /** * Inserts a new object into my store. Subclasses must not override. */ - protected final ObjectAddress insertObject(StoredObject object) throws IndexedStoreException { + protected final ObjectAddress insertObject(StoredObject object) throws CoreException { try { ObjectAddress address = store.insertObject(object); return address; - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotStored, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.objectNotStored", e); //$NON-NLS-1$ } } /** * Releases this object. Subclasses must not override. */ - protected final void release() throws IndexedStoreException { - try { - store.releaseObject(this); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotReleased, e); - } + protected final void release() { + store.releaseObject(this); } /** * Removes an object from my store. Subclasses must not override. */ - protected final void removeObject(ObjectAddress address) throws IndexedStoreException { + protected final void removeObject(ObjectAddress address) throws CoreException { try { store.removeObject(address); - } catch (ObjectStoreException e) { - throw new IndexedStoreException(IndexedStoreException.ObjectNotRemoved, e); + } catch (CoreException e) { + throw Policy.exception("indexedStore.objectNotRemoved", e); //$NON-NLS-1$ } } } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObjectPolicy.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObjectPolicy.java index af1451e..bd13b31 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObjectPolicy.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/IndexedStoreObjectPolicy.java
@@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + public class IndexedStoreObjectPolicy extends AbstractObjectPolicy { /** @@ -24,7 +27,7 @@ * used to create the internal structure of the object. The field begins with a * two byte type code that is used to determine the type of object to create. */ - public StoredObject createObject(Field field, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + public StoredObject createObject(Field field, ObjectStore store, ObjectAddress address) throws CoreException { int offset = StoredObject.TYPE_OFFSET; int length = StoredObject.TYPE_LENGTH; int type = field.subfield(offset, length).getInt(); @@ -43,7 +46,7 @@ object = new BinarySmallObject(field, store, address); break; default : - throw new ObjectStoreException(ObjectStoreException.ObjectTypeFailure); + throw Policy.exception("objectStore.objectTypeFailure"); //$NON-NLS-1$ } return object; }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Log.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Log.java index 0e149b7..1a2cb72 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Log.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/Log.java
@@ -11,6 +11,9 @@ package org.eclipse.core.internal.indexing; import java.io.*; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.*; class Log { @@ -19,11 +22,11 @@ * argument is the name of the page store for which this log will * be created. */ - static void create(String storeName) throws PageStoreException { + static void create(String storeName) throws CoreException { try { new RandomAccessFile(name(storeName), "rw").close(); //$NON-NLS-1$ } catch (IOException e) { - throw new PageStoreException(PageStoreException.LogCreateFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.logCreateFailure"), e));//$NON-NLS-1$ } }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogReader.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogReader.java index 53d9374..796488e 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogReader.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogReader.java
@@ -14,18 +14,21 @@ import java.io.IOException; import java.util.Map; import java.util.TreeMap; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.*; class LogReader { + protected byte[] b4; protected FileInputStream in; - protected PageStore store; - protected byte[] b4; protected byte[] pageBuffer; + protected PageStore store; /** * Returns the Hashmap of the modified pages. */ - public static Map getModifiedPages(PageStore store) throws PageStoreException { + public static Map getModifiedPages(PageStore store) throws CoreException { LogReader reader = new LogReader(store); Map modifiedPages = null; try { @@ -43,17 +46,11 @@ this.b4 = new byte[4]; } - /** - * Open a log for reading. - */ - protected void open(PageStore pageStore) throws PageStoreException { - String name = pageStore.getName(); - if (!Log.exists(name)) - return; + protected int bytesAvailable() throws CoreException { try { - in = new FileInputStream(Log.name(name)); + return in.available(); } catch (IOException e) { - throw new PageStoreException(PageStoreException.LogOpenFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.logReadFailure"), e));//$NON-NLS-1$ } } @@ -73,7 +70,7 @@ /** * Returns the Hashmap of modified pages read from the log. */ - protected Map getModifiedPages() throws PageStoreException { + protected Map getModifiedPages() throws CoreException { Map modifiedPages = new TreeMap(); if (in == null) return modifiedPages; @@ -94,19 +91,25 @@ return modifiedPages; } - public void readBuffer(byte[] buffer) throws PageStoreException { + /** + * Open a log for reading. + */ + protected void open(PageStore pageStore) throws CoreException { + String name = pageStore.getName(); + if (!Log.exists(name)) + return; try { - in.read(buffer); + in = new FileInputStream(Log.name(name)); } catch (IOException e) { - throw new PageStoreException(PageStoreException.LogReadFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.logOpenFailure"), e));//$NON-NLS-1$ } } - protected int bytesAvailable() throws PageStoreException { + public void readBuffer(byte[] buffer) throws CoreException { try { - return in.available(); + in.read(buffer); } catch (IOException e) { - throw new PageStoreException(PageStoreException.LogReadFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.logReadFailure"), e));//$NON-NLS-1$ } }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogWriter.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogWriter.java index 0ebf85c..383be08 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogWriter.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/LogWriter.java
@@ -14,6 +14,9 @@ import java.io.IOException; import java.util.Iterator; import java.util.Map; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.*; class LogWriter { @@ -23,7 +26,7 @@ /** * Puts the modified pages to the log file. */ - public static void putModifiedPages(PageStore pageStore, Map modifiedPages) throws PageStoreException { + public static void putModifiedPages(PageStore pageStore, Map modifiedPages) throws CoreException { LogWriter writer = new LogWriter(); try { writer.open(pageStore); @@ -36,12 +39,12 @@ /** * Opens the log. */ - protected void open(PageStore store) throws PageStoreException { + protected void open(PageStore store) throws CoreException { this.pageStore = store; try { out = new FileOutputStream(Log.name(store.getName())); } catch (IOException e) { - throw new PageStoreException(PageStoreException.LogOpenFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.logOpenFailure"), e));//$NON-NLS-1$ } } @@ -61,7 +64,7 @@ /** * Puts the modified pages into the log. */ - protected void putModifiedPages(Map modifiedPages) throws PageStoreException { + protected void putModifiedPages(Map modifiedPages) throws CoreException { Buffer b4 = new Buffer(4); byte[] pageBuffer = new byte[Page.SIZE]; int numberOfPages = modifiedPages.size(); @@ -78,7 +81,7 @@ write(pageBuffer); } } catch (IOException e) { - throw new PageStoreException(PageStoreException.LogWriteFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.logWriteFailure"), e));//$NON-NLS-1$ } }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectHeader.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectHeader.java index 9e1d427..dc6a00a 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectHeader.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectHeader.java
@@ -10,41 +10,43 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + class ObjectHeader implements Insertable { + private static final int HeaderTagOffset = 0; + private static final int HeaderTagValue = 0xFFFF; + private static final int ObjectLengthOffset = 2; public static final int SIZE = 4; - private static final int HeaderTagValue = 0xFFFF; - private static final int HeaderTagOffset = 0; - private static final int ObjectLengthOffset = 2; private int objectLength; /** * ObjectHeader constructor comment. */ - public ObjectHeader(byte[] buffer) throws ObjectStoreException { + public ObjectHeader(byte[] buffer) throws CoreException { if (buffer.length != SIZE) throw new IllegalArgumentException(); Buffer buf = new Buffer(buffer); - if (buf.getUInt(HeaderTagOffset, 2) != HeaderTagValue) { - throw new ObjectStoreException(ObjectStoreException.ObjectHeaderFailure); - } + if (buf.getUInt(HeaderTagOffset, 2) != HeaderTagValue) + throw Policy.exception("objectStore.objectHeaderFailure"); //$NON-NLS-1$ this.objectLength = buf.getUInt(ObjectLengthOffset, 2); } /** * ObjectHeader constructor comment. */ + public ObjectHeader(Field f) throws CoreException { + this(f.get()); + } + + /** + * ObjectHeader constructor comment. + */ public ObjectHeader(int objectLength) { this.objectLength = objectLength; } - /** - * ObjectHeader constructor comment. - */ - public ObjectHeader(Field f) throws ObjectStoreException { - this(f.get()); - } - public int getObjectLength() { return objectLength; }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectID.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectID.java index b614e2e..9563eda 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectID.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectID.java
@@ -10,15 +10,18 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + public class ObjectID implements Insertable { private static final int Size = 8; private static final int ObjectNumberOffset = 0; private long objectNumber; - public ObjectID(byte[] b) throws IndexedStoreException { + public ObjectID(byte[] b) throws CoreException { if (b.length != Size) { - throw new IndexedStoreException(IndexedStoreException.ObjectIDInvalid); + throw Policy.exception("indexedStore.objectIDInvalid"); //$NON-NLS-1$ } Buffer buf = new Buffer(b); objectNumber = buf.getLong(ObjectNumberOffset, 8);
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectPage.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectPage.java index f2f64bb..977c1e8 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectPage.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectPage.java
@@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.core.internal.indexing; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; + /** An ObjectPage is a page in a page file that contains objects. Objects are byte arrays. An object page contains metainformation about the objects located on that page as well @@ -90,7 +93,7 @@ /** * This method returns the Field mapped over the object for a given object number. */ - public Field getObjectField(int objectNumber) throws ObjectStoreException { + public Field getObjectField(int objectNumber) throws CoreException { int entryOffset = ObjectDirectoryOffset + 2 * objectNumber; int blockOffset = pageBuffer.getUInt(entryOffset, 2); if (blockOffset == 0) @@ -103,12 +106,12 @@ /** * Places an object into a page. The object must have a reservation. */ - public void insertObject(StoredObject object) throws ObjectStoreException { + public void insertObject(StoredObject object) throws CoreException { // ensure that there is space for this object int blockLength = object.length() + ObjectHeader.SIZE; if (getFreeSpace() < blockLength) { - throw new ObjectStoreException(ObjectStoreException.ObjectSizeFailure); + throw Policy.exception("objectStore.objectSizeFailure"); //$NON-NLS-1$ } // make sure the slot is still empty @@ -116,7 +119,7 @@ int entryOffset = ObjectDirectoryOffset + (objectNumber * 2); int blockOffset = pageBuffer.getUInt(entryOffset, 2); if (blockOffset != 0) { - throw new ObjectStoreException(ObjectStoreException.PageVacancyFailure); + throw Policy.exception("objectStore.pageVacancyFailure"); //$NON-NLS-1$ } // place the object into the object space portion of the page @@ -139,12 +142,12 @@ * Reserves space for an object on the page. Records the reservation in the * reservation table. */ - public int reserveObject(StoredObject object, ReservationTable reservations) throws ObjectStoreException { + public int reserveObject(StoredObject object, ReservationTable reservations) throws CoreException { // ensure that there is space for this object, there should be since we check beforehand int blockLength = object.length() + ObjectHeader.SIZE; if (getFreeSpace() < blockLength) { - throw new ObjectStoreException(ObjectStoreException.ObjectSizeFailure); + throw Policy.exception("objectStore.objectSizeFailure"); //$NON-NLS-1$ } // get the reservation for this page from the table, create a new one if necessary @@ -168,7 +171,7 @@ objectNumber = (objectNumber + 1) % MaxEntries; } if (blockOffset != 0) { - throw new ObjectStoreException(ObjectStoreException.PageVacancyFailure); + throw Policy.exception("objectStore.pageVacancyFailure"); //$NON-NLS-1$ } // begin the next search just after where we left off @@ -179,13 +182,13 @@ return objectNumber; } - public void removeObject(int objectNumber) throws ObjectStoreException { + public void removeObject(int objectNumber) throws CoreException { /* check for existence of the object to be removed */ int entryOffset = ObjectDirectoryOffset + 2 * objectNumber; int blockOffset = pageBuffer.getUInt(entryOffset, 2); if (blockOffset == 0) - throw new ObjectStoreException(ObjectStoreException.ObjectExistenceFailure); + throw Policy.exception("objectStore.objectExistenceFailure"); //$NON-NLS-1$ /* remove the object */ pageBuffer.put(entryOffset, 2, 0); // remove its offset from the object table @@ -202,7 +205,7 @@ /** * Updates an object value on the page. An object may not change its size. */ - public void updateObject(StoredObject object) throws ObjectStoreException { + public void updateObject(StoredObject object) throws CoreException { int objectNumber = object.getAddress().getObjectNumber(); @@ -210,13 +213,13 @@ int entryOffset = ObjectDirectoryOffset + 2 * objectNumber; int blockOffset = pageBuffer.getUInt(entryOffset, 2); if (blockOffset == 0) { - throw new ObjectStoreException(ObjectStoreException.ObjectExistenceFailure); + throw Policy.exception("objectStore.objectExistenceFailure"); //$NON-NLS-1$ } /* retrieve the header and check the size */ ObjectHeader header = new ObjectHeader(pageBuffer.get(blockOffset, ObjectHeader.SIZE)); if (header.getObjectLength() != object.length()) { - throw new ObjectStoreException(ObjectStoreException.ObjectSizeFailure); + throw Policy.exception("objectStore.objectSizeFailure"); //$NON-NLS-1$ } /* update in place */ @@ -232,7 +235,7 @@ * of the other parameters of the page remain the same. Resets the number of * used entries to fix an old bug. */ - private void compress() throws ObjectStoreException { + private void compress() throws CoreException { Buffer temp = new Buffer(SIZE); int newBlockOffset = ObjectSpaceOffset; int entryOffset = ObjectDirectoryOffset;
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStore.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStore.java index 777a4b6..b1e571c 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStore.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStore.java
@@ -11,6 +11,8 @@ package org.eclipse.core.internal.indexing; import java.util.*; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.runtime.CoreException; public class ObjectStore implements Observer { @@ -32,11 +34,11 @@ /** * Creates a repository for the pathname. */ - public static void create(String path) throws ObjectStoreException { + public static void create(String path) throws CoreException { try { PageStore.create(path); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.StoreCreateFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.storeCreateFailure", e); //$NON-NLS-1$ } } @@ -65,12 +67,12 @@ /** * Opens an object store. */ - public void open(String name) throws ObjectStoreException { + public void open(String name) throws CoreException { try { pageStore = new PageStore(pagePolicy); pageStore.open(name); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.StoreOpenFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.storeOpenFailure", e); //$NON-NLS-1$ } checkMetadata(); acquiredObjects = new HashMap(); @@ -83,10 +85,10 @@ /** * Closes the object store. */ - public void close() throws ObjectStoreException { + public void close() throws CoreException { try { commit(); - } catch (ObjectStoreException e) { + } catch (CoreException e) { //make sure the page store file gets closed no matter what pageStore.close(false); throw e; @@ -103,19 +105,19 @@ reservations = null; } - public Buffer getMetadataArea(int i) throws ObjectStoreException { + public Buffer getMetadataArea(int i) throws CoreException { try { return new Buffer(pageStore.readMetadataArea(i)); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.MetadataRequestFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.metadataRequestFailure", e); //$NON-NLS-1$ } } - public void putMetadataArea(int i, Buffer buffer) throws ObjectStoreException { + public void putMetadataArea(int i, Buffer buffer) throws CoreException { try { pageStore.writeMetadataArea(i, buffer.getByteArray()); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.MetadataRequestFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.metadataRequestFailure", e); //$NON-NLS-1$ } } @@ -123,7 +125,7 @@ * Checks to see if the metadata stored in the object store matches that expected by this * code. If not, a conversion is necessary. */ - protected void checkMetadata() throws ObjectStoreException { + protected void checkMetadata() throws CoreException { Buffer metadata = getMetadataArea(ObjectStoreMetadataAreaID); Field versionField = metadata.getField(0, 4); int objectStoreVersion = versionField.getInt(); @@ -142,14 +144,14 @@ * Converts the object store from a previous to the current version. * No conversions are yet defined. */ - protected void convert(int fromVersion) throws ObjectStoreException { - throw new ObjectStoreException(ObjectStoreException.StoreConversionFailure); + protected void convert(int fromVersion) throws CoreException { + throw Policy.exception("objectStore.storeConversionFailure"); //$NON-NLS-1$ } /** * Commits the modified object collection to the underlying page store. */ - public void commit() throws ObjectStoreException { + public void commit() throws CoreException { for (Iterator z = acquiredObjects.values().iterator(); z.hasNext();) { StoredObject object = (StoredObject) z.next(); object.notifyObservers(); @@ -181,15 +183,15 @@ reservations.clear(); try { pageStore.commit(); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.PageWriteFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.pageWriteFailure", e); //$NON-NLS-1$ } } /** * Rollback the modified objects collection. */ - public void rollback() throws ObjectStoreException { + public void rollback() { modifiedObjects.clear(); reservations.clear(); phantoms.clear(); @@ -213,9 +215,9 @@ * Returns the StoredObject at a given address. This registers the store as an * observer of changes to this object. */ - public StoredObject acquireObject(ObjectAddress address) throws ObjectStoreException { + public StoredObject acquireObject(ObjectAddress address) throws CoreException { if (phantoms.contains(address)) { - throw new ObjectStoreException(ObjectStoreException.ObjectExistenceFailure); + throw Policy.exception("objectStore.objectExistenceFailure"); //$NON-NLS-1$ } StoredObject object = (StoredObject) acquiredObjects.get(address); if (object == null) { @@ -228,9 +230,9 @@ try { Field f = page.getObjectField(address.getObjectNumber()); if (f == null) - throw new ObjectStoreException(ObjectStoreException.ObjectExistenceFailure); + throw Policy.exception("objectStore.objectExistenceFailure"); //$NON-NLS-1$ object = objectPolicy.createObject(f, this, address); - } catch (ObjectStoreException e) { + } catch (CoreException e) { page.release(); throw e; } @@ -250,7 +252,7 @@ * the standard cache. Objects in the standard cache always maintain a * reference count of 0. */ - public void releaseObject(StoredObject object) throws ObjectStoreException { + public void releaseObject(StoredObject object) { object.removeReference(); if (object.hasReferences()) return; @@ -310,7 +312,7 @@ * Places an object into the store. This assigns it an address. The address * is returned. The object is not observed until it is acquired. */ - // public ObjectAddress insertObject(StoredObject object) throws ObjectStoreException { + // public ObjectAddress insertObject(StoredObject object) throws CoreException { // int bytesNeeded = object.length() + ObjectHeader.SIZE; // ObjectPage page = acquireObjectPageForSize(bytesNeeded); // int objectNumber = page.insertObject(object); @@ -328,7 +330,7 @@ * records the address and the amount of space used. The object is not * actually added to the underlying store until a commit operation is executed. */ - public ObjectAddress insertObject(StoredObject object) throws ObjectStoreException { + public ObjectAddress insertObject(StoredObject object) throws CoreException { int bytesNeeded = object.length() + ObjectHeader.SIZE; ObjectPage page = acquireObjectPageForSize(bytesNeeded); int pageNumber = page.getPageNumber(); @@ -344,12 +346,12 @@ /** * Removes an object from the object store. In doing so, it must remove it from the cache as well. */ - public void removeObject(ObjectAddress address) throws ObjectStoreException { + public void removeObject(ObjectAddress address) throws CoreException { if (phantoms.contains(address)) { - throw new ObjectStoreException(ObjectStoreException.ObjectExistenceFailure); + throw Policy.exception("objectStore.objectExistenceFailure"); //$NON-NLS-1$ } if (acquiredObjects.containsKey(address)) { - throw new ObjectStoreException(ObjectStoreException.ObjectIsLocked); + throw Policy.exception("objectStore.objectIsLocked"); //$NON-NLS-1$ } StoredObject object = (StoredObject) modifiedObjects.get(address); boolean inStore = !reservations.contains(address); @@ -378,7 +380,7 @@ // } // } - protected void updateSpaceMapPage(int objectPageNumber, int freeSpace) throws ObjectStoreException { + protected void updateSpaceMapPage(int objectPageNumber, int freeSpace) throws CoreException { SpaceMapPage p = acquireSpaceMapPage(objectPageNumber); p.setFreeSpace(objectPageNumber, freeSpace); p.release(); @@ -387,12 +389,12 @@ /** * Acquires an object page. This is a convenience method to translate exceptions. */ - protected ObjectPage acquireObjectPage(int pageNumber) throws ObjectStoreException { + protected ObjectPage acquireObjectPage(int pageNumber) throws CoreException { ObjectPage page; try { page = (ObjectPage) pageStore.acquire(pageNumber); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.PageReadFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.pageReadFailure", e); //$NON-NLS-1$ } return page; } @@ -407,7 +409,7 @@ * Since databases are expected to be quite small (<200Mb) we might be able to live with * this simple algorithm. */ - protected ObjectPage acquireObjectPageForSize(int bytesNeeded) throws ObjectStoreException { + protected ObjectPage acquireObjectPageForSize(int bytesNeeded) throws CoreException { int oPageNumber = 0; int numberOfSpans = ((pageStore.numberOfPages() - 1) / ObjectStorePage.SIZE) + 1; for (int i = 0; i <= numberOfSpans; i++) { @@ -424,33 +426,33 @@ } } sPage.release(); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.PageReadFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.pageReadFailure", e); //$NON-NLS-1$ } if (oPageNumber != 0) break; } if (oPageNumber == 0) { - throw new ObjectStoreException(ObjectStoreException.PageReadFailure); + throw Policy.exception("objectStore.pageReadFailure"); //$NON-NLS-1$ } try { ObjectPage oPage = (ObjectPage) pageStore.acquire(oPageNumber); return oPage; - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.PageReadFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.pageReadFailure", e); //$NON-NLS-1$ } } /** * Acquires a space map page. This is a convenience method to translate exceptions. */ - protected SpaceMapPage acquireSpaceMapPage(int objectPageNumber) throws ObjectStoreException { + protected SpaceMapPage acquireSpaceMapPage(int objectPageNumber) throws CoreException { int pageNumber = objectPageNumber & 0xFFFFE000; SpaceMapPage p = null; try { p = (SpaceMapPage) pageStore.acquire(pageNumber); - } catch (PageStoreException e) { - throw new ObjectStoreException(ObjectStoreException.PageReadFailure, e); + } catch (CoreException e) { + throw Policy.exception("objectStore.pageReadFailure", e); //$NON-NLS-1$ } return p; }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStoreException.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStoreException.java deleted file mode 100644 index f65543e..0000000 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStoreException.java +++ /dev/null
@@ -1,89 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.internal.indexing; - -import org.eclipse.core.internal.utils.Policy; - -public class ObjectStoreException extends StoreException { - - public final static int GenericFailure = 0; - public final static int InternalFailure = 1; - public final static int StoreCreateFailure = 10; - public final static int StoreConversionFailure = 11; - public final static int StoreOpenFailure = 12; - public final static int StoreCloseFailure = 13; - public final static int PageReadFailure = 20; - public final static int PageWriteFailure = 21; - public final static int PageVacancyFailure = 22; - public final static int ObjectTypeFailure = 23; - public final static int ObjectSizeFailure = 24; - public final static int ObjectExistenceFailure = 25; - public final static int ObjectHeaderFailure = 26; - public final static int ObjectInsertFailure = 27; - public final static int ObjectRemoveFailure = 28; - public final static int ObjectUpdateFailure = 29; - public final static int ObjectIsLocked = 30; - public final static int MetadataRequestFailure = 40; - - public final static String[] message = new String[50]; - static { - initializeMessages(); - } - - public int id = 0; // exception id - - public ObjectStoreException(int id) { - this(id, null); - } - - public ObjectStoreException(int id, Throwable exception) { - super(message[id], exception); - this.id = id; - } - - public ObjectStoreException(String s) { - this(s, null); - } - - public ObjectStoreException(String s, Throwable exception) { - super(s, exception); - this.id = GenericFailure; - } - - /** - * Initializes the messages at class load time. - */ - private static void initializeMessages() { - message[GenericFailure] = bind("objectStore.genericFailure"); //$NON-NLS-1$ - message[InternalFailure] = bind("objectStore.internalFailure"); //$NON-NLS-1$ - message[StoreCreateFailure] = bind("objectStore.storeCreateFailure"); //$NON-NLS-1$ - message[StoreConversionFailure] = bind("objectStore.storeConversionFailure"); //$NON-NLS-1$ - message[StoreOpenFailure] = bind("objectStore.storeOpenFailure"); //$NON-NLS-1$ - message[StoreCloseFailure] = bind("objectStore.storeCloseFailure"); //$NON-NLS-1$ - message[PageReadFailure] = bind("objectStore.pageReadFailure"); //$NON-NLS-1$ - message[PageWriteFailure] = bind("objectStore.pageWriteFailure"); //$NON-NLS-1$ - message[PageVacancyFailure] = bind("objectStore.pageVacancyFailure"); //$NON-NLS-1$ - message[ObjectTypeFailure] = bind("objectStore.objectTypeFailure"); //$NON-NLS-1$ - message[ObjectSizeFailure] = bind("objectStore.objectSizeFailure"); //$NON-NLS-1$ - message[ObjectExistenceFailure] = bind("objectStore.objectExistenceFailure"); //$NON-NLS-1$ - message[ObjectHeaderFailure] = bind("objectStore.objectHeaderFailure"); //$NON-NLS-1$ - message[ObjectInsertFailure] = bind("objectStore.objectInsertFailure"); //$NON-NLS-1$ - message[ObjectRemoveFailure] = bind("objectStore.objectRemoveFailure"); //$NON-NLS-1$ - message[ObjectUpdateFailure] = bind("objectStore.objectUpdateFailure"); //$NON-NLS-1$ - message[ObjectIsLocked] = bind("objectStore.objectIsLocked"); //$NON-NLS-1$ - message[MetadataRequestFailure] = bind("objectStore.metadataRequestFailure"); //$NON-NLS-1$ - } - - private static String bind(String name) { - return Policy.bind(name); - } - -} \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStorePagePolicy.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStorePagePolicy.java index 4afc767..eb490f7 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStorePagePolicy.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ObjectStorePagePolicy.java
@@ -16,11 +16,8 @@ * @see AbstractPagePolicy#createPage(int, byte[], PageStore) */ public final Page createPage(int pageNumber, byte[] buffer, PageStore pageStore) { - if (pageNumber % Page.SIZE == 0) { + if (pageNumber % Page.SIZE == 0) return new SpaceMapPage(pageNumber, buffer, pageStore); - } else { - return new ObjectPage(pageNumber, buffer, pageStore); - } + return new ObjectPage(pageNumber, buffer, pageStore); } - } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStore.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStore.java index e1631f2..411328f 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStore.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStore.java
@@ -12,38 +12,40 @@ import java.io.*; import java.util.*; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.*; public class PageStore implements Observer { + private static final int CurrentPageStoreVersion = 1; // version 1 private static final int NumberOfMetadataAreas = 16; // NEVER change this private static final int SizeOfMetadataArea = 64; // NEVER change this - private static final int CurrentPageStoreVersion = 1; // version 1 private static final byte[] ZEROES = new byte[1024]; + private Map acquiredPages; + private RandomAccessFile file; + private byte[] metadataBuffer; + private Map modifiedPages; private String name; - private RandomAccessFile file; - private int numberOfPages; + private int numberOfCacheHits; private int numberOfFileReads; private int numberOfFileWrites; + private int numberOfPages; private int numberOfReads; private int numberOfWrites; - private int numberOfCacheHits; - private Map modifiedPages; - private Map acquiredPages; - private int storeOffset; - private AbstractPagePolicy policy; private byte[] pageBuffer; - private byte[] metadataBuffer; + private AbstractPagePolicy policy; + private int storeOffset; /** * Creates the page file on the file system. Creates a file of zero length. */ - public static void create(String fileName) throws PageStoreException { + public static void create(String fileName) throws CoreException { try { - FileOutputStream out = new FileOutputStream(fileName); - out.close(); + new java.io.File(fileName).createNewFile(); } catch (IOException e) { - throw new PageStoreException(PageStoreException.CreateFailure, e); + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("pageStore.createFailure"), e));//$NON-NLS-1$ } } @@ -69,168 +71,6 @@ this.storeOffset = NumberOfMetadataAreas * SizeOfMetadataArea; } - /** - * Acquires a new empty page. - */ - //public Page acquire(IPageFactory pageFactory) throws PageStoreException { - // return acquire(pageFactory, numberOfPages); - //} - /** - * Returns the page that has the given page number from the page file. - */ - //public Page acquire(IPageFactory pageFactory, int pageNumber) throws PageStoreException { - // Page p = null; - // numberOfReads++; - // Integer key = new Integer(pageNumber); - // p = (Page)acquiredPages.get(key); - // if (p != null) { - // numberOfCacheHits++; - // addReference(p); - // return p; - // } - // p = (Page)modifiedPages.get(key); - // if (p != null) { - // numberOfCacheHits++; - // addReference(p); - // return p; - // } - // p = readCache.get(pageNumber); - // if (p != null) { - // numberOfCacheHits++; - // addReference(p); - // return p; - // } - // numberOfPages = Math.max(pageNumber + 1, numberOfPages); - // p = pageFactory.create(this, pageNumber); - // getPageFromFile(pageNumber, p); - // addReference(p); - // return p; - //} - /** - * Adds a reference to a page. - */ - //private void addReference(Page page) { - // Integer key = new Integer(page.getPageNumber()); - // if (!page.hasReferences()) acquiredPages.put(key, page); - // page.addReference(); - //} - /** - * Opens the PageStore. The file is created if necessary. - * This will raise an exception if the - * media on which the file is located is read-only - * or not authorized to the user. - */ - public void open(String name) throws PageStoreException { - this.name = name; - pageBuffer = new byte[Page.SIZE]; - metadataBuffer = new byte[SizeOfMetadataArea]; - if (!exists(name)) - create(name); - try { - this.file = new RandomAccessFile(name, "rw"); //$NON-NLS-1$ - } catch (IOException e) { - throw new PageStoreException(PageStoreException.OpenFailure, e); - } - checkMetadata(); - numberOfPages = numberOfPagesInFile(); - numberOfFileReads = 0; - numberOfFileWrites = 0; - numberOfReads = 0; - numberOfWrites = 0; - numberOfCacheHits = 0; - /* apply any outstanding transaction by reading the log file and applying it */ - modifiedPages = LogReader.getModifiedPages(this); - flush(); - Log.delete(name); - /* prepare for normal operation */ - acquiredPages = new HashMap(); - } - - /** - * Checks to see if the metadata stored in the page store matches that expected by this - * code. If not, a conversion is necessary. - */ - private void checkMetadata() throws PageStoreException { - byte[] md = readMetadataArea(0); - Buffer metadata = new Buffer(md); - Field versionField = metadata.getField(0, 4); - int pageStoreVersion = versionField.getInt(); - if (pageStoreVersion == 0) { - versionField.put(CurrentPageStoreVersion); - writeMetadataArea(0, md); - return; - } - if (pageStoreVersion == CurrentPageStoreVersion) - return; - convertPageStore(pageStoreVersion); - } - - /** - * Converts the page store file from a previous to the current version. - * No conversions are yet defined. - */ - private void convertPageStore(int fromVersion) throws PageStoreException { - throw new PageStoreException(PageStoreException.ConversionFailure); - } - - /** - * Commits all changes and closes the page store. - */ - public void close() { - close(true); - } - - /** - * Closes the page store. - */ - public void close(boolean commit) { - if (commit) { - try { - commit(); - } catch (PageStoreException e) { - // ignore - } - } - try { - file.close(); - } catch (IOException e) { - // ignore - } - file = null; - } - - /** - * Commits all modified pages to the file. - */ - public void commit() throws PageStoreException { - if (modifiedPages.size() == 0) - return; - LogWriter.putModifiedPages(this, modifiedPages); - flush(); - Log.delete(name); - } - - /** - * Throws out the modified pages. - */ - public void rollback() { - modifiedPages.clear(); - } - - /** - * Writes the modified pages to the page file. - */ - private void flush() throws PageStoreException { - if (modifiedPages.size() == 0) - return; - Iterator pageStream = modifiedPages.values().iterator(); - while (pageStream.hasNext()) { - Page page = (Page) pageStream.next(); - writePage(page); - } - modifiedPages.clear(); - } - //public void readFrom(RandomAccessFile file, long offset) throws IOException { // long n = file.length() - offset; // if (n <= 0) { @@ -267,7 +107,7 @@ /** * Opens the PageStore with a cache size of 40. */ - //public void open(String name) throws PageStoreException { + //public void open(String name) throws CoreException { // open(name, 40); //} /** @@ -276,12 +116,12 @@ * media on which the file is located is read-only * or not authorized to the user. */ - //public void open(String name, int cacheSize) throws PageStoreException { + //public void open(String name, int cacheSize) throws CoreException { // if (!exists(name)) create(name); // try { // this.file = new RandomAccessFile(name, "rw"); // } catch (IOException e) { - // throw new PageStoreException(PageStoreException.OpenFailure); + // throw new CoreException(CoreException.OpenFailure); // } // this.name = name; // checkMetadata(); @@ -303,7 +143,7 @@ /** * Acquires the page that has the given page number from the page store. */ - public Page acquire(int pageNumber) throws PageStoreException { + public Page acquire(int pageNumber) throws CoreException { numberOfReads++; Integer key = new Integer(pageNumber); Page page = (Page) acquiredPages.get(key); @@ -325,111 +165,21 @@ } /** - * Releases a page and decrements its reference count. + * Checks to see if the metadata stored in the page store matches that expected by this + * code. If not, a conversion is necessary. */ - public void release(Page page) { - Integer key = new Integer(page.getPageNumber()); - page.removeReference(); - if (page.hasReferences()) + private void checkMetadata() throws CoreException { + byte[] md = readMetadataArea(0); + Buffer metadata = new Buffer(md); + Field versionField = metadata.getField(0, 4); + int pageStoreVersion = versionField.getInt(); + if (pageStoreVersion == 0) { + versionField.put(CurrentPageStoreVersion); + writeMetadataArea(0, md); return; - page.deleteObserver(this); - acquiredPages.remove(key); - } - - /** - * Processes a page update. - */ - public void update(Observable object, Object arg) { - Page page = (Page) object; - Integer key = new Integer(page.getPageNumber()); - modifiedPages.put(key, page); - } - - /** - * Returns the file seek offset for a given page number. - */ - protected long offsetOfPage(int pageNumber) { - return (long) (pageNumber * Page.SIZE) + storeOffset; - } - - protected Page readPage(int pageNumber) throws PageStoreException { - if (!readBuffer(offsetOfPage(pageNumber), pageBuffer)) { - throw new PageStoreException(PageStoreException.ReadFailure); } - numberOfFileReads++; - Page p = policy.createPage(pageNumber, pageBuffer, this); - p.addObserver(this); - return p; - } - - protected void writePage(Page page) throws PageStoreException { - page.toBuffer(pageBuffer); - long fileOffset = offsetOfPage(page.getPageNumber()); - if (!writeBuffer(fileOffset, pageBuffer, 0, pageBuffer.length)) { - throw new PageStoreException(PageStoreException.WriteFailure); - } - numberOfFileWrites++; - } - - /** - * Returns the file seek offset for a given metadata area - */ - protected long offsetOfMetadataArea(int i) { - return (long) i * SizeOfMetadataArea; - } - - public byte[] readMetadataArea(int i) throws PageStoreException { - if (!readBuffer(offsetOfMetadataArea(i), metadataBuffer)) { - throw new PageStoreException(PageStoreException.MetadataRequestFailure); - } - return new Buffer(metadataBuffer).get(0, metadataBuffer.length); - } - - public void writeMetadataArea(int i, byte[] buffer) throws PageStoreException { - if (i < 0 || i >= NumberOfMetadataAreas) - throw new PageStoreException(PageStoreException.MetadataRequestFailure); - if (buffer.length != SizeOfMetadataArea) - throw new PageStoreException(PageStoreException.MetadataRequestFailure); - if (!writeBuffer(offsetOfMetadataArea(i), buffer, 0, buffer.length)) { - throw new PageStoreException(PageStoreException.MetadataRequestFailure); - } - return; - } - - protected boolean readBuffer(long fileOffset, byte[] buffer) { - new Buffer(buffer).clear(); - long fileLength = getFileLength(); - if (fileOffset >= fileLength) - return true; - int bytesToRead = (int) Math.min(buffer.length, (fileLength - fileOffset)); - try { - file.seek(fileOffset); - file.readFully(buffer, 0, bytesToRead); - } catch (IOException e) { - return false; - } - return true; - } - - protected boolean writeBuffer(long fileOffset, byte[] buffer, int offset, int length) { - clearFileToOffset(fileOffset); - try { - file.seek(fileOffset); - file.write(buffer, offset, length); - } catch (IOException e) { - return false; - } - return true; - } - - protected long getFileLength() { - long n = 0; - try { - n = file.length(); - } catch (IOException e) { - return 0; - } - return n; + if (pageStoreVersion != CurrentPageStoreVersion) + throw Policy.exception("pageStore.conversionFailure");//$NON-NLS-1$ } protected void clearFileToOffset(long fileOffset) { @@ -442,10 +192,64 @@ } /** - * Returns the number of pages actually in the underlying file. + * Commits all changes and closes the page store. */ - protected int numberOfPagesInFile() { - return (int) ((getFileLength() - offsetOfPage(0)) / Page.SIZE); + public void close() { + close(true); + } + + /** + * Closes the page store. + */ + public void close(boolean commit) { + if (commit) { + try { + commit(); + } catch (CoreException e) { + // ignore + } + } + try { + file.close(); + } catch (IOException e) { + // ignore + } + file = null; + } + + /** + * Commits all modified pages to the file. + */ + public void commit() throws CoreException { + if (modifiedPages.size() == 0) + return; + LogWriter.putModifiedPages(this, modifiedPages); + flush(); + Log.delete(name); + } + + /** + * Writes the modified pages to the page file. + */ + private void flush() throws CoreException { + if (modifiedPages.size() == 0) + return; + Iterator pageStream = modifiedPages.values().iterator(); + while (pageStream.hasNext()) { + Page page = (Page) pageStream.next(); + writePage(page); + } + modifiedPages.clear(); + } + + protected long getFileLength() { + long n = 0; + try { + n = file.length(); + } catch (IOException e) { + return 0; + } + return n; } /** @@ -489,6 +293,13 @@ return numberOfPages; } + /** + * Returns the number of pages actually in the underlying file. + */ + protected int numberOfPagesInFile() { + return (int) ((getFileLength() - offsetOfPage(0)) / Page.SIZE); + } + /** * Returns the number of read operations that have been done. */ @@ -504,31 +315,122 @@ } /** + * Returns the file seek offset for a given metadata area + */ + protected long offsetOfMetadataArea(int i) { + return (long) i * SizeOfMetadataArea; + } + + /** + * Returns the file seek offset for a given page number. + */ + protected long offsetOfPage(int pageNumber) { + return (long) (pageNumber * Page.SIZE) + storeOffset; + } + + /** + * Opens the PageStore. The file is created if necessary. + * This will raise an exception if the + * media on which the file is located is read-only + * or not authorized to the user. + */ + public void open(String name) throws CoreException { + this.name = name; + pageBuffer = new byte[Page.SIZE]; + metadataBuffer = new byte[SizeOfMetadataArea]; + if (!exists(name)) + create(name); + try { + this.file = new RandomAccessFile(name, "rw"); //$NON-NLS-1$ + } catch (IOException e) { + throw Policy.exception("pageStore.openFailure", e);//$NON-NLS-1$ + } + checkMetadata(); + numberOfPages = numberOfPagesInFile(); + numberOfFileReads = 0; + numberOfFileWrites = 0; + numberOfReads = 0; + numberOfWrites = 0; + numberOfCacheHits = 0; + /* apply any outstanding transaction by reading the log file and applying it */ + modifiedPages = LogReader.getModifiedPages(this); + flush(); + Log.delete(name); + /* prepare for normal operation */ + acquiredPages = new HashMap(); + } + + protected boolean readBuffer(long fileOffset, byte[] buffer) { + new Buffer(buffer); + long fileLength = getFileLength(); + if (fileOffset >= fileLength) + return true; + int bytesToRead = (int) Math.min(buffer.length, (fileLength - fileOffset)); + try { + file.seek(fileOffset); + file.readFully(buffer, 0, bytesToRead); + } catch (IOException e) { + return false; + } + return true; + } + + public byte[] readMetadataArea(int i) throws CoreException { + if (!readBuffer(offsetOfMetadataArea(i), metadataBuffer)) + throw Policy.exception("pageStore.metadataRequestFailure");//$NON-NLS-1$ + return new Buffer(metadataBuffer).get(0, metadataBuffer.length); + } + + protected Page readPage(int pageNumber) throws CoreException { + if (!readBuffer(offsetOfPage(pageNumber), pageBuffer)) + throw Policy.exception("pageStore.readFailure");//$NON-NLS-1$ + numberOfFileReads++; + Page p = policy.createPage(pageNumber, pageBuffer, this); + p.addObserver(this); + return p; + } + + /** + * Releases a page and decrements its reference count. + */ + public void release(Page page) { + Integer key = new Integer(page.getPageNumber()); + page.removeReference(); + if (page.hasReferences()) + return; + page.deleteObserver(this); + acquiredPages.remove(key); + } + + /** + * Throws out the modified pages. + */ + public void rollback() { + modifiedPages.clear(); + } + + /** * Internal test for page log consistency. Throws an exception if * a problem is detected. */ - public void testLogging1() throws PageStoreException { + public void testLogging1() throws CoreException { LogWriter.putModifiedPages(this, modifiedPages); Map testPages = LogReader.getModifiedPages(this); int m = testPages.size(); int n = modifiedPages.size(); - if (m != n) { - throw new PageStoreException("Page set sizes do not match" //$NON-NLS-1$ - + m + " " + n); //$NON-NLS-1$ - } + if (m != n) + throw Policy.exception(Integer.toString(m) + ' ' + n);//Page set sizes do not match Iterator testPagesStream = testPages.values().iterator(); Iterator modifiedPagesStream = modifiedPages.values().iterator(); while (testPagesStream.hasNext()) { Page testPage = (Page) testPagesStream.next(); Page modifiedPage = (Page) modifiedPagesStream.next(); - if (testPage.getPageNumber() != modifiedPage.getPageNumber()) { - throw new PageStoreException("Page number mismatch at " //$NON-NLS-1$ - + testPage.getPageNumber() + " " + modifiedPage.getPageNumber()); //$NON-NLS-1$ - } - if (Buffer.compare(testPage.pageBuffer, modifiedPage.pageBuffer) != 0) { - throw new PageStoreException("Page buffer mismatch at " //$NON-NLS-1$ - + testPage.getPageNumber()); - } + // Page number mismatch + if (testPage.getPageNumber() != modifiedPage.getPageNumber()) + throw Policy.exception(Integer.toString(testPage.getPageNumber()) + ' ' + modifiedPage.getPageNumber()); + // Page buffer mismatch + if (Buffer.compare(testPage.pageBuffer, modifiedPage.pageBuffer) != 0) + throw Policy.exception(Integer.toString(testPage.getPageNumber())); } Log.delete(name); } @@ -537,7 +439,7 @@ * Internal test for applying a page log to the file. Does the * equivalent of a flush. */ - public void testLogging2() throws PageStoreException { + public void testLogging2() throws CoreException { LogWriter.putModifiedPages(this, modifiedPages); modifiedPages = LogReader.getModifiedPages(this); flush(); @@ -550,9 +452,44 @@ * This should look like it does a flush, since the modified pages are written to the * file. */ - public void testLogging3() throws PageStoreException { + public void testLogging3() throws CoreException { LogWriter.putModifiedPages(this, modifiedPages); close(false); open(name); } + + /** + * Processes a page update. + */ + public void update(Observable object, Object arg) { + Page page = (Page) object; + Integer key = new Integer(page.getPageNumber()); + modifiedPages.put(key, page); + } + + protected boolean writeBuffer(long fileOffset, byte[] buffer, int offset, int length) { + clearFileToOffset(fileOffset); + try { + file.seek(fileOffset); + file.write(buffer, offset, length); + } catch (IOException e) { + return false; + } + return true; + } + + public void writeMetadataArea(int i, byte[] buffer) throws CoreException { + if (i < 0 || i >= NumberOfMetadataAreas || buffer.length != SizeOfMetadataArea) + throw Policy.exception("pageStore.metadataRequestFailure");//$NON-NLS-1$ + if (!writeBuffer(offsetOfMetadataArea(i), buffer, 0, buffer.length)) + throw Policy.exception("pageStore.metadataRequestFailure");//$NON-NLS-1$ + } + + protected void writePage(Page page) throws CoreException { + page.toBuffer(pageBuffer); + long fileOffset = offsetOfPage(page.getPageNumber()); + if (!writeBuffer(fileOffset, pageBuffer, 0, pageBuffer.length)) + throw Policy.exception("pageStore.writeFailure");//$NON-NLS-1$ + numberOfFileWrites++; + } } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStoreException.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStoreException.java deleted file mode 100644 index f2f8baf..0000000 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/PageStoreException.java +++ /dev/null
@@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.internal.indexing; - -import org.eclipse.core.internal.utils.Policy; - -public class PageStoreException extends StoreException { - public final static int GenericFailure = 0; - public final static int CreateFailure = 1; - public final static int OpenFailure = 2; - public final static int LengthFailure = 3; - public final static int WriteFailure = 4; - public final static int ReadFailure = 5; - public final static int CommitFailure = 6; - public final static int IntegrityFailure = 7; - public final static int MetadataRequestFailure = 8; - public final static int ConversionFailure = 9; - - public final static int LogCreateFailure = 20; - public final static int LogOpenFailure = 21; - public final static int LogReadFailure = 23; - public final static int LogWriteFailure = 24; - - public final static String[] message = new String[30]; - static { - initializeMessages(); - } - - public int id = 0; // exception id - - public PageStoreException(int id) { - this(id, null); - } - - public PageStoreException(int id, Throwable exception) { - super(message[id], exception); - this.id = id; - } - - public PageStoreException(String s) { - this(s, null); - } - - public PageStoreException(String s, Throwable exception) { - super(s, exception); - this.id = GenericFailure; - } - - /** - * Initialize the messages at class load time. - */ - private static void initializeMessages() { - message[GenericFailure] = bind("pageStore.genericFailure"); //$NON-NLS-1$ - message[CreateFailure] = bind("pageStore.createFailure"); //$NON-NLS-1$ - message[OpenFailure] = bind("pageStore.openFailure"); //$NON-NLS-1$ - message[LengthFailure] = bind("pageStore.lengthFailure"); //$NON-NLS-1$ - message[WriteFailure] = bind("pageStore.writeFailure"); //$NON-NLS-1$ - message[ReadFailure] = bind("pageStore.readFailure"); //$NON-NLS-1$ - message[CommitFailure] = bind("pageStore.commitFailure"); //$NON-NLS-1$ - message[IntegrityFailure] = bind("pageStore.integrityFailure"); //$NON-NLS-1$ - message[MetadataRequestFailure] = bind("pageStore.metadataRequestFailure"); //$NON-NLS-1$ - message[ConversionFailure] = bind("pageStore.conversionFailure"); //$NON-NLS-1$ - message[LogCreateFailure] = bind("pageStore.logCreateFailure"); //$NON-NLS-1$ - message[LogOpenFailure] = bind("pageStore.logOpenFailure"); //$NON-NLS-1$ - message[LogReadFailure] = bind("pageStore.logReadFailure"); //$NON-NLS-1$ - message[LogWriteFailure] = bind("pageStore.logWriteFailure"); //$NON-NLS-1$ - } - - private static String bind(String name) { - return Policy.bind(name); - } - -} \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ReservationTable.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ReservationTable.java index 3763361..cb4cbb6 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ReservationTable.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/ReservationTable.java
@@ -36,6 +36,7 @@ public boolean contains(ObjectAddress address) { int pageNumber = address.getPageNumber(); int objectNumber = address.getObjectNumber(); + //todo can be optimized if (contains(pageNumber)) { if (get(pageNumber).contains(objectNumber)) return true;
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/SpaceMapPage.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/SpaceMapPage.java index bdd53fb..9e8d835 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/SpaceMapPage.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/SpaceMapPage.java
@@ -104,6 +104,7 @@ } protected void materialize() { + //nothing to do } } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoreException.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoreException.java deleted file mode 100644 index 7e84ffe..0000000 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoreException.java +++ /dev/null
@@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.internal.indexing; - -import java.io.PrintStream; -import java.io.PrintWriter; - -public abstract class StoreException extends Exception { - protected Throwable wrappedException; - - public StoreException(String message) { - super(message); - } - - public StoreException(String message, Throwable wrappedException) { - super(message); - this.wrappedException = wrappedException; - } - - /** - * Prints a stack trace out for the exception. - */ - public void printStackTrace() { - printStackTrace(System.err); - } - - /** - * Prints a stack trace out for the exception. - */ - public void printStackTrace(PrintStream output) { - synchronized (output) { - super.printStackTrace(output); - if (wrappedException != null) - wrappedException.printStackTrace(output); - } - } - - /** - * Prints a stack trace out for the exception. - */ - public void printStackTrace(PrintWriter output) { - synchronized (output) { - super.printStackTrace(output); - if (wrappedException != null) - wrappedException.printStackTrace(output); - } - } - -} -
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoredObject.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoredObject.java index d666065..1f2f681 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoredObject.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/indexing/StoredObject.java
@@ -11,16 +11,19 @@ package org.eclipse.core.internal.indexing; import java.util.Observable; +import org.eclipse.core.internal.utils.Policy; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.*; public abstract class StoredObject extends Observable implements Referable, Insertable { public static final int MAXIMUM_OBJECT_SIZE = ObjectStore.MAXIMUM_OBJECT_SIZE; - public static final int TYPE_OFFSET = 0; public static final int TYPE_LENGTH = 2; - - protected ObjectStore store; + public static final int TYPE_OFFSET = 0; protected ObjectAddress address; protected int referenceCount; + + protected ObjectStore store; protected int type; /** @@ -33,38 +36,14 @@ /** * Constructs a new instance from a field. */ - protected StoredObject(Field f, ObjectStore store, ObjectAddress address) throws ObjectStoreException { - if (f.length() < getMinimumSize()) { - throw new ObjectStoreException(ObjectStoreException.ObjectSizeFailure); - } - if (f.length() > getMaximumSize()) { - throw new ObjectStoreException(ObjectStoreException.ObjectSizeFailure); - } + protected StoredObject(Field f, ObjectStore store, ObjectAddress address) throws CoreException { + if (f.length() < getMinimumSize() || f.length() > getMaximumSize()) + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("objectStore.objectSizeFailure"), null));//$NON-NLS-1$ extractValues(f); setStore(store); setAddress(address); } - /** - * Provides a printable representation of this object. Subclasses must implement. - */ - public abstract String toString(); - - /** - * Returns the required type of this class of object. - * Subclasses must override. - */ - protected abstract int getRequiredType(); - - /** - * Returns a byte array value of the object. - */ - public final byte[] toByteArray() { - Field f = new Field(length()); - insertValues(f); - return f.get(); - } - /** * Adds a reference. */ @@ -74,27 +53,13 @@ } /** - * Removes a reference. + * Places the contents of the buffer into the members. + * Subclasses should implement and call super. */ - public final int removeReference() { - if (referenceCount > 0) - referenceCount--; - return referenceCount; - } - - /** - * Tests for existing references. - */ - public final boolean hasReferences() { - return referenceCount > 0; - } - - /** - * Returns the store of the object. - * Subclasses must not override. - */ - public final ObjectStore getStore() { - return store; + protected void extractValues(Field f) throws CoreException { + type = f.subfield(TYPE_OFFSET, TYPE_LENGTH).getInt(); + if (type != getRequiredType()) + throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind("objectStore.objectTypeFailure"), null));//$NON-NLS-1$ } /** @@ -105,32 +70,6 @@ return address; } - public final void setStore(ObjectStore store) { - this.store = store; - } - - public final void setAddress(ObjectAddress address) { - this.address = address; - } - - /** - * Places the contents of the buffer into the members. - * Subclasses should implement and call super. - */ - protected void extractValues(Field f) throws ObjectStoreException { - type = f.subfield(TYPE_OFFSET, TYPE_LENGTH).getInt(); - if (type != getRequiredType()) - throw new ObjectStoreException(ObjectStoreException.ObjectTypeFailure); - } - - /** - * Places the contents of the fields into the buffer. - * Subclasses should implement and call super. - */ - protected void insertValues(Field f) { - f.subfield(TYPE_OFFSET, TYPE_LENGTH).put(type); - } - /** * Returns the maximum size of this object's instance -- including its type field. * Subclasses can override. The default is to have the this be equal to the minimum @@ -149,10 +88,70 @@ } /** + * Returns the required type of this class of object. + * Subclasses must override. + */ + protected abstract int getRequiredType(); + + /** + * Returns the store of the object. + * Subclasses must not override. + */ + public final ObjectStore getStore() { + return store; + } + + /** + * Tests for existing references. + */ + public final boolean hasReferences() { + return referenceCount > 0; + } + + /** + * Places the contents of the fields into the buffer. + * Subclasses should implement and call super. + */ + protected void insertValues(Field f) { + f.subfield(TYPE_OFFSET, TYPE_LENGTH).put(type); + } + + /** * Returns the actual size of this object's instance -- including its type field. * Subclasses should override. */ protected int length() { return getMinimumSize(); } + + /** + * Removes a reference. + */ + public final int removeReference() { + if (referenceCount > 0) + referenceCount--; + return referenceCount; + } + + public final void setAddress(ObjectAddress address) { + this.address = address; + } + + public final void setStore(ObjectStore store) { + this.store = store; + } + + /** + * Returns a byte array value of the object. + */ + public final byte[] toByteArray() { + Field f = new Field(length()); + insertValues(f); + return f.get(); + } + + /** + * Provides a printable representation of this object. Subclasses must implement. + */ + public abstract String toString(); } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStore.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStore.java index dbbd6e9..768906f 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStore.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStore.java
@@ -381,10 +381,6 @@ cursor.close(); removeOldestEntries(removeEntries, maxFileStates); } - } catch (IndexedStoreException e) { - String message = Policy.bind("history.problemsPurging", source.toString(), destination.toString()); //$NON-NLS-1$ - ResourceStatus status = new ResourceStatus(IResourceStatus.FAILED_WRITE_METADATA, source, message, e); - ResourcesPlugin.getPlugin().getLog().log(status); } catch (CoreException e) { String message = Policy.bind("history.problemsPurging", source.toString(), destination.toString()); //$NON-NLS-1$ ResourceStatus status = new ResourceStatus(IResourceStatus.FAILED_WRITE_METADATA, source, message, e); @@ -465,7 +461,7 @@ return result; } - protected void remove(HistoryStoreEntry entry) throws IndexedStoreException { + protected void remove(HistoryStoreEntry entry) throws CoreException { try { Vector objectIds = store.getIndex().getObjectIdentifiersMatching(entry.getKey()); if (objectIds.size() == 1) { @@ -555,7 +551,7 @@ } } - protected void removeOldestEntries(List entries, int maxEntries) throws IndexedStoreException { + protected void removeOldestEntries(List entries, int maxEntries) throws CoreException { // do we have more states than necessary? if (entries.size() <= maxEntries) return;
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStoreEntry.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStoreEntry.java index b143055..5456230 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStoreEntry.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/HistoryStoreEntry.java
@@ -74,7 +74,7 @@ * @param store Indexed history store from which data is to be read. * @param cursor Position from which data is to be read. */ - public static HistoryStoreEntry create(IndexedStoreWrapper store, IndexCursor cursor) throws CoreException, IndexedStoreException { + public static HistoryStoreEntry create(IndexedStoreWrapper store, IndexCursor cursor) throws CoreException { byte[] key = cursor.getKey(); ObjectID valueID = cursor.getValueAsObjectID(); byte[] value = store.getObject(valueID); @@ -151,7 +151,7 @@ /** * Removes this entry from the store. */ - public void remove() throws IndexedStoreException { + public void remove() throws CoreException { if (cursor == null) return; reposition(); @@ -160,7 +160,7 @@ cursor.remove(); } - protected void reposition() throws IndexedStoreException { + protected void reposition() throws CoreException { if (cursor.isSet()) if (compare(cursor.getKey(), key)) return;
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/IHistoryStoreVisitor.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/IHistoryStoreVisitor.java index 3afafbe..41761a0 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/IHistoryStoreVisitor.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/IHistoryStoreVisitor.java
@@ -10,7 +10,8 @@ *******************************************************************************/ package org.eclipse.core.internal.localstore; -import org.eclipse.core.internal.indexing.IndexedStoreException; +import org.eclipse.core.runtime.CoreException; + public interface IHistoryStoreVisitor { /** @@ -18,5 +19,5 @@ * * @param state State to be visited in IndexedStore. */ - public boolean visit(HistoryStoreEntry state) throws IndexedStoreException; + public boolean visit(HistoryStoreEntry state) throws CoreException; } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/properties/IndexedStoreWrapper.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/properties/IndexedStoreWrapper.java index 4a13337..f747646 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/properties/IndexedStoreWrapper.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/properties/IndexedStoreWrapper.java
@@ -116,26 +116,16 @@ } public synchronized Index getIndex() throws CoreException { - Exception problem = null; try { - return getStore().getIndex(INDEX_NAME); - } catch (IndexedStoreException e) { - if (e.id == IndexedStoreException.IndexNotFound) - return createIndex(); - problem = e; - return null; + Index result = getStore().getIndex(INDEX_NAME); + return result == null ? createIndex() : result; } catch (CoreException e) { //just rethrow throw e; } catch (Exception e) { - problem = e; - return null; - } finally { - if (problem != null) { - String message = Policy.bind("indexed.couldNotGetIndex", location.toOSString()); //$NON-NLS-1$ - ResourceStatus status = new ResourceStatus(IResourceStatus.FAILED_READ_LOCAL, location, message, problem); - throw new ResourceException(status); - } + String message = Policy.bind("indexed.couldNotGetIndex", location.toOSString()); //$NON-NLS-1$ + ResourceStatus status = new ResourceStatus(IResourceStatus.FAILED_READ_LOCAL, location, message, e); + throw new ResourceException(status); } }
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java index d43dac1..ab54a5c 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java
@@ -16,64 +16,64 @@ import org.eclipse.core.runtime.*; public class Policy { - public static final long MAX_BUILD_DELAY = 1000; - public static final long MIN_BUILD_DELAY = 100; + private static final int autoBuildBuildWork = 1; + + private static final int autoBuildOpWork = 99; + + public static final boolean buildOnCancel = false; + public static int buildWork; private static String bundleName = "org.eclipse.core.internal.utils.messages";//$NON-NLS-1$ private static ResourceBundle bundle = ResourceBundle.getBundle(bundleName, Locale.getDefault()); - private static final int autoBuildOpWork = 99; - private static final int autoBuildBuildWork = 1; - private static final int manualBuildOpWork = 99; - private static final int manualBuildBuildWork = 1; - - public static final boolean buildOnCancel = false; - public static int opWork; - public static int buildWork; - public static int totalWork; - - // default workspace description values - public static final boolean defaultAutoBuild = true; - public static final boolean defaultSnapshots = true; - public static final int defaultOperationsPerSnapshot = 100; - public static final long defaultSnapshotInterval = 5 * 60 * 1000l;//5 minutes - public static final long defaultDeltaExpiration = 30 * 24 * 3600 * 1000l; // 30 days - public static final long defaultFileStateLongevity = 7 * 24 * 3600 * 1000l; // 7 days - public static final long defaultMaxFileStateSize = 1024 * 1024l; // 1 Mb - public static final int defaultMaxFileStates = 50; - public static final int defaultMaxBuildIterations = 10; - public static final long defaultMaxNotifyDelay = 10000;// 10 seconds + public static boolean DEBUG_AUTO_REFRESH = false; + public static boolean DEBUG_BUILD_DELTA = false; //debug constants public static boolean DEBUG_BUILD_FAILURE = false; - public static boolean DEBUG_NEEDS_BUILD = false; public static boolean DEBUG_BUILD_INVOKING = false; - public static boolean DEBUG_BUILD_DELTA = false; - public static boolean DEBUG_NATURES = false; public static boolean DEBUG_HISTORY = false; + public static boolean DEBUG_NATURES = false; + public static boolean DEBUG_NEEDS_BUILD = false; public static boolean DEBUG_PREFERENCES = false; - public static boolean MONITOR_BUILDERS = false; - public static boolean MONITOR_LISTENERS = false; - // Get timing information for restoring data public static boolean DEBUG_RESTORE = false; public static boolean DEBUG_RESTORE_MARKERS = false; - public static boolean DEBUG_RESTORE_SYNCINFO = false; - public static boolean DEBUG_RESTORE_TREE = false; + public static boolean DEBUG_RESTORE_MASTERTABLE = false; public static boolean DEBUG_RESTORE_METAINFO = false; public static boolean DEBUG_RESTORE_SNAPSHOTS = false; - public static boolean DEBUG_RESTORE_MASTERTABLE = false; + public static boolean DEBUG_RESTORE_SYNCINFO = false; + public static boolean DEBUG_RESTORE_TREE = false; // Get timing information for saving and snapshoting data public static boolean DEBUG_SAVE = false; public static boolean DEBUG_SAVE_MARKERS = false; - public static boolean DEBUG_SAVE_SYNCINFO = false; - public static boolean DEBUG_SAVE_TREE = false; + public static boolean DEBUG_SAVE_MASTERTABLE = false; public static boolean DEBUG_SAVE_METAINFO = false; public static boolean DEBUG_SAVE_SNAPSHOTS = false; - public static boolean DEBUG_SAVE_MASTERTABLE = false; + public static boolean DEBUG_SAVE_SYNCINFO = false; + public static boolean DEBUG_SAVE_TREE = false; - public static boolean DEBUG_AUTO_REFRESH = false; + // default workspace description values + public static final boolean defaultAutoBuild = true; + public static final long defaultDeltaExpiration = 30 * 24 * 3600 * 1000l; // 30 days + public static final long defaultFileStateLongevity = 7 * 24 * 3600 * 1000l; // 7 days + public static final int defaultMaxBuildIterations = 10; + public static final int defaultMaxFileStates = 50; + public static final long defaultMaxFileStateSize = 1024 * 1024l; // 1 Mb + public static final long defaultMaxNotifyDelay = 10000;// 10 seconds + public static final int defaultOperationsPerSnapshot = 100; + public static final long defaultSnapshotInterval = 5 * 60 * 1000l;//5 minutes + public static final boolean defaultSnapshots = true; + private static final int manualBuildBuildWork = 1; + private static final int manualBuildOpWork = 99; + public static final long MAX_BUILD_DELAY = 1000; + public static final long MIN_BUILD_DELAY = 100; + + public static boolean MONITOR_BUILDERS = false; + public static boolean MONITOR_LISTENERS = false; + public static int opWork; + public static int totalWork; static { setupAutoBuildProgress(defaultAutoBuild); @@ -160,6 +160,36 @@ throw new OperationCanceledException(); } + /** + * Print a debug message to the console. + * Pre-pend the message with the current date and the name of the current thread. + */ + public static void debug(String message) { + StringBuffer buffer = new StringBuffer(); + buffer.append(new Date(System.currentTimeMillis())); + buffer.append(" - ["); //$NON-NLS-1$ + buffer.append(Thread.currentThread().getName()); + buffer.append("] "); //$NON-NLS-1$ + buffer.append(message); + System.out.println(buffer.toString()); + } + + /** + * Returns a new CoreException with a translation of the provided message key, + * and optionally the provided nested exception + */ + public static CoreException exception(String key, Exception e) { + return new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, 1, Policy.bind(key), e));//$NON-NLS-1$ + } + + /** + * Returns a new CoreException with a translation of the provided message key, + * and optionally the provided nested exception + */ + public static CoreException exception(String key) { + return exception(key, null); + } + public static IProgressMonitor monitorFor(IProgressMonitor monitor) { if (monitor == null) return new NullProgressMonitor(); @@ -187,18 +217,4 @@ return monitor; return new SubProgressMonitor(monitor, ticks, style); } - - /** - * Print a debug message to the console. - * Pre-pend the message with the current date and the name of the current thread. - */ - public static void debug(String message) { - StringBuffer buffer = new StringBuffer(); - buffer.append(new Date(System.currentTimeMillis())); - buffer.append(" - ["); //$NON-NLS-1$ - buffer.append(Thread.currentThread().getName()); - buffer.append("] "); //$NON-NLS-1$ - buffer.append(message); - System.out.println(buffer.toString()); - } } \ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties index 43665a5..802f56a 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/messages.properties
@@ -277,31 +277,17 @@ ### indexing indexedStore.contextNotAvailable = Error occurred accessing the indexed store context. indexedStore.entryKeyLengthError = Key length > 1024. -indexedStore.entryNotRemoved = Cannot remove an index entry referenced by other cursors. indexedStore.entryRemoved = Element at this cursor has been removed. indexedStore.entryValueLengthError = Value length > 2048. -indexedStore.entryValueNotUpdated = Error occurred updating value in leaf node. -indexedStore.genericError = An error occurred during an indexed store operation. indexedStore.indexExists = Index already exists. indexedStore.indexNodeNotCreated = Index node not created. -indexedStore.indexNodeNotRetrieved = Error occurred getting index node. indexedStore.indexNodeNotSplit = Error occurred splitting an index node. -indexedStore.indexNodeNotStored = Error occurred storing index node. -indexedStore.indexNotCreated = Index was not created. -indexedStore.indexNotFound = Index not found. -indexedStore.indexNotRemoved = Error occurred removing index from the store. indexedStore.metadataRequestError = Error occurred during metadata request processing. -indexedStore.objectExists = Object already exists. indexedStore.objectIDInvalid = ObjectID format is invalid. indexedStore.objectNotAcquired = Object has not been acquired for the intent needed for this operation. -indexedStore.objectNotCreated = Error occurred creating a new object. indexedStore.objectNotFound = Object not found. -indexedStore.objectNotReleased = Cannot release an object that has not been acquired. indexedStore.objectNotRemoved = Error occurred removing an object from the store. indexedStore.objectNotStored = Object was not stored. -indexedStore.objectNotUpdated = Error occurred updating an object. -indexedStore.objectTypeError = Unexpected object type found. -indexedStore.storeEmpty = Could not find root context because store is empty. indexedStore.storeFormatError = Could not find root context because store has invalid format. indexedStore.storeIsOpen = The indexed store is already open. indexedStore.storeNotClosed = Error closing indexed store. @@ -309,36 +295,23 @@ indexedStore.storeNotConverted = The indexed store opened is not the current version and no conversion routine exists. indexedStore.storeNotCreated = Store does not exist and cannot be created. indexedStore.storeNotFlushed = Error flushing indexed store. -indexedStore.storeNotOpen = Store has not been opened. -indexedStore.storeNotOpened = Error occurred opening indexed store. -indexedStore.storeNotReadWrite = Attempted to set a Modify intent for an object in a read-only store. -indexedStore.storeNotRolledBack = Error occurred rolling back the indexed store. -objectStore.genericFailure = Error occurred in object store operation. -objectStore.internalFailure = Internal error occurred in object store operation. objectStore.metadataRequestFailure = Error getting or putting metadata. objectStore.objectExistenceFailure = Object was not found. objectStore.objectHeaderFailure = Object header format is invalid. -objectStore.objectInsertFailure = Error occurred writing object into page. objectStore.objectIsLocked = Operation cannot be performed because the object is being used. -objectStore.objectRemoveFailure = Error occurred removing object from page. objectStore.objectSizeFailure = Object is too large for page. objectStore.objectTypeFailure = Type check failed. -objectStore.objectUpdateFailure = Error updating object. objectStore.pageReadFailure = Error reading page from object store. objectStore.pageVacancyFailure = Object table on page is full. objectStore.pageWriteFailure = Cannot store page in page store. -objectStore.storeCloseFailure = Error occurred during close of object store. objectStore.storeConversionFailure = Error converting object store. objectStore.storeCreateFailure = Error creating object store. objectStore.storeOpenFailure = Error opening object store. -pageStore.commitFailure = Error occurred during commit processing. pageStore.conversionFailure = Error occurred during conversion of the page store file. pageStore.createFailure = Error occurred creating page store file. pageStore.genericFailure = Error occurred during a page store file operation. -pageStore.integrityFailure = Error occurred that compromises the integrity of the page store file. -pageStore.lengthFailure = Error occurred determining page store file length. pageStore.logCreateFailure = Error occurred creating transaction log file. pageStore.logOpenFailure = Error occurred opening transaction log file. pageStore.logReadFailure = Error occurred reading transaction log file.
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AbstractIndexedStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AbstractIndexedStoreTest.java new file mode 100644 index 0000000..dc1a0a8 --- /dev/null +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AbstractIndexedStoreTest.java
@@ -0,0 +1,35 @@ +/********************************************************************** + * Copyright (c) 2004 IBM Corporation and others. All rights reserved. This + * program and the accompanying materials are made available under the terms of + * the Common Public License v1.0 which accompanies this distribution, and is + * available at http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package org.eclipse.core.tests.internal.indexing; + +import junit.framework.TestCase; +import org.eclipse.core.resources.ResourcesPlugin; + +/** + * + */ +public abstract class AbstractIndexedStoreTest extends TestCase { + public AbstractIndexedStoreTest() { + super(); + } + public AbstractIndexedStoreTest(String name) { + super(name); + } + protected String getFileName() { + return ResourcesPlugin.getWorkspace().getRoot().getLocation().append("test.dat").toOSString(); + } + protected void println(String string) { + //don't log anything during tests + } + protected void printHeading(String string) { + //don't log anything during tests + } + +}
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AllTests.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AllTests.java index afc8fd2..2a507d1 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AllTests.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/AllTests.java
@@ -13,22 +13,18 @@ import junit.framework.*; public class AllTests extends TestCase { - public AllTests() { super(null); } - public AllTests(String name) { super(name); } - public static Test suite() { TestSuite suite = new TestSuite(); - suite.addTest(IntegratedFieldTest.suite()); - suite.addTest(IntegratedIndexedStoreTest.suite()); - suite.addTest(IntegratedObjectStoreTest.suite()); - suite.addTest(IntegratedPageStoreTest.suite()); + suite.addTest(BasicFieldTest.suite()); + suite.addTest(BasicIndexedStoreTest.suite()); + suite.addTest(BasicObjectStoreTest.suite()); + suite.addTest(BasicPageStoreTest.suite()); return suite; } - } \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicFieldTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicFieldTest.java index 0605754..9f24dd1 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicFieldTest.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicFieldTest.java
@@ -16,14 +16,11 @@ public class BasicFieldTest extends TestCase { - protected TestEnvironment env; - - public BasicFieldTest(String name, TestEnvironment env) { + public BasicFieldTest(String name) { super(name); - this.env = env; } - public static Test suite(TestEnvironment env) { + public static Test suite() { List names = new Vector(10); names.add("testBuffer"); names.add("testPointer"); @@ -31,7 +28,7 @@ names.add("testFieldArray"); TestSuite suite = new TestSuite(); for (Iterator z = names.iterator(); z.hasNext();) { - suite.addTest(new BasicFieldTest((String) z.next(), env)); + suite.addTest(new BasicFieldTest((String) z.next())); } return suite; } @@ -40,7 +37,6 @@ byte[] b = new byte[256]; Buffer buf = new Buffer(b); int n = buf.length(); - buf.clear(); b[0] = -128; b[1] = -0; b[2] = -0; @@ -90,15 +86,6 @@ assertEquals("t26", 1, Buffer.compare(buf2, buf1)); } - public void testField() throws Exception { - } - - public void testFieldArray() throws Exception { - } - - public void testPointer() throws Exception { - } - public void testFieldDef() throws Exception { byte[] b = new byte[256]; Field f = new Field(b);
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicIndexedStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicIndexedStoreTest.java index 8bef131..7eaff62 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicIndexedStoreTest.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicIndexedStoreTest.java
@@ -14,43 +14,23 @@ import java.util.*; import junit.framework.*; import org.eclipse.core.internal.indexing.*; +import org.eclipse.core.runtime.CoreException; -public class BasicIndexedStoreTest extends TestCase { +public class BasicIndexedStoreTest extends AbstractIndexedStoreTest { - TestEnvironment env; - - public BasicIndexedStoreTest(String name, TestEnvironment env) { - super(name); - this.env = env; - } - - public static Test suite(TestEnvironment env) { + public static Test suite() { + // return new TestSuite(BasicIndexedStoreTest.class); TestSuite suite = new TestSuite(); - suite.addTest(new BasicIndexedStoreTest("testSanity", env)); - suite.addTest(new BasicIndexedStoreTest("testRecovery", env)); - suite.addTest(new BasicIndexedStoreTest("testTransactions", env)); - suite.addTest(new BasicIndexedStoreTest("testIndexInsert", env)); - suite.addTest(new BasicIndexedStoreTest("testIndexCursorOperations", env)); - suite.addTest(new BasicIndexedStoreTest("testIndexRemove", env)); - suite.addTest(new BasicIndexedStoreTest("testIndexOrdering", env)); - suite.addTest(new BasicIndexedStoreTest("testIndexReplace", env)); - suite.addTest(new BasicIndexedStoreTest("testObjectUpdate", env)); - suite.addTest(new BasicIndexedStoreTest("testObjectPerformance", env)); - suite.addTest(new BasicIndexedStoreTest("testMultiCursorSearch", env)); - suite.addTest(new BasicIndexedStoreTest("testMultiCursorUpdate", env)); - suite.addTest(new BasicIndexedStoreTest("testMultiCursorRemove1", env)); - suite.addTest(new BasicIndexedStoreTest("testMultiCursorRemove2", env)); - suite.addTest(new BasicIndexedStoreTest("testIndexSplit", env)); - suite.addTest(new BasicIndexedStoreTest("test1GCE9JD", env)); - suite.addTest(new BasicIndexedStoreTest("testObjectLife", env)); + suite.addTest(new BasicIndexedStoreTest("testIndexInsert")); return suite; } - private int random(int lo, int hi) { - double t0 = Math.random(); - double t1 = (hi + 1 - lo) * t0 + lo; - double t2 = Math.floor(t1); - return (int) t2; + public BasicIndexedStoreTest() { + this(""); + } + + public BasicIndexedStoreTest(String name) { + super(name); } /** @@ -65,6 +45,7 @@ return a.toString(); } + /** * Insert entries with the specified key length into the index. Compare the ordering after insertion. * Key values are 0 to numberOfEntries-1. @@ -72,9 +53,9 @@ * That is, all values equivalent to 0 are inserted first, then all values equivalent to 1, ... */ private void insertAndCompare(int keySize, int numberOfEntries, int skipValue) throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); store.createIndex("Index"); Index index = store.getIndex("Index"); String key; @@ -91,7 +72,7 @@ } store.close(); - store.open(env.getFileName()); + store.open(getFileName()); index = store.getIndex("Index"); IndexCursor c = index.open(); c.findFirstEntry(); @@ -104,14 +85,21 @@ store.close(); } + private int random(int lo, int hi) { + double t0 = Math.random(); + double t1 = (hi + 1 - lo) * t0 + lo; + double t2 = Math.floor(t1); + return (int) t2; + } + /** * Test for index store mess up recorded in PR 1GCE9JD */ public void test1GCE9JD() throws Exception { IndexedStore store = null; - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { String a = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>.<classpath>. <classpathentry kind=\"src\" path=\"\"/>. <classpathentry kind=\"output\" path=\"\"/>.</classpath>"; store.createIndex("index"); @@ -127,9 +115,9 @@ * This tests basic cursor insertion, location, and removal operations. */ public void testIndexCursorOperations() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { /* Create an index */ @@ -265,9 +253,9 @@ * Also tests many small insertions. */ public void testIndexOrdering() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { store.createIndex("Index"); Index index = store.getIndex("Index"); @@ -286,7 +274,7 @@ } /* run the index, testing the key order */ - store.open(env.getFileName()); + store.open(getFileName()); try { Index index = store.getIndex("Index"); IndexCursor c = index.open(); @@ -313,9 +301,9 @@ int limit = 200; int keySize = 500; int valueSize = 100; - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { store.createIndex("Index"); Index index = store.getIndex("Index"); @@ -347,11 +335,11 @@ * Tests the replacement of values of items in an index. */ public void testIndexReplace() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); int n = 5000; int i; - store.open(env.getFileName()); + store.open(getFileName()); try { Index index = store.createIndex("Index"); String key; @@ -401,17 +389,17 @@ int i; Vector key = new Vector(n); - env.println("Generating..."); + println("Generating..."); for (i = 0; i < n; i++) { key.addElement(generateString(l, i)); } - env.println("...Done"); + println("...Done"); - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - env.println("Inserting..."); - store.open(env.getFileName()); + println("Inserting..."); + store.open(getFileName()); try { Index index = store.createIndex("Index"); for (i = 0; i < n; i++) { @@ -423,10 +411,10 @@ } finally { store.close(); } - env.println("...Done"); + println("...Done"); - env.println("Retrieving by cursor..."); - store.open(env.getFileName()); + println("Retrieving by cursor..."); + store.open(getFileName()); try { Index index = store.getIndex("Index"); IndexCursor c = index.open(); @@ -442,10 +430,10 @@ } finally { store.close(); } - env.println("...Done"); + println("...Done"); - env.println("Retrieving by key..."); - store.open(env.getFileName()); + println("Retrieving by key..."); + store.open(getFileName()); try { Index index = store.getIndex("Index"); IndexCursor c = index.open(); @@ -460,7 +448,7 @@ } finally { store.close(); } - env.println("...Done"); + println("...Done"); } /** @@ -470,12 +458,12 @@ * Make sure that all the cursors are adjusted correctly. */ public void testMultiCursorRemove1() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); int keySize = 10; String key; int n = 10; /* number of entries & cursors */ - store.open(env.getFileName()); + store.open(getFileName()); try { Index index = store.createIndex("Index"); @@ -520,13 +508,13 @@ * invalid until repositioned. */ public void testMultiCursorRemove2() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); int keySize = 10; String key; int n = 10; // number of entries - store.open(env.getFileName()); + store.open(getFileName()); try { /* create and populate an index */ @@ -544,103 +532,89 @@ /* Remove the entry at the first cursor and test the second cursor for results */ c1.remove(); - int id = 0; try { c2.remove(); - } catch (IndexedStoreException e) { - id = e.id; + fail("remove test"); + } catch (CoreException e) { + //should fail } - assertEquals("remove test", IndexedStoreException.EntryRemoved, id); - - id = 0; try { c2.getKey(); - } catch (IndexedStoreException e) { - id = e.id; + fail("get key test"); + } catch (CoreException e) { + //should fail } - assertEquals("get key test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.getValue(); - } catch (IndexedStoreException e) { - id = e.id; + fail("get value test"); + } catch (CoreException e) { + //should fail } - assertEquals("get value test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.updateValue("123"); - } catch (IndexedStoreException e) { - id = e.id; + fail("update value test"); + } catch (CoreException e) { + //should fail } - assertEquals("update value test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.isAtEnd(); - } catch (IndexedStoreException e) { - id = e.id; + fail("isAtEnd test"); + } catch (CoreException e) { + //should fail } - assertEquals("isAtEnd test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.isAtBeginning(); - } catch (IndexedStoreException e) { - id = e.id; + fail("isAtBeginning test"); + } catch (CoreException e) { + //should fail } - assertEquals("isAtBeginning test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.isSet(); - } catch (IndexedStoreException e) { - id = e.id; + fail("isSet test"); + } catch (CoreException e) { + //should fail } - assertEquals("isSet test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.next(); - } catch (IndexedStoreException e) { - id = e.id; + fail("move next test"); + } catch (CoreException e) { + //should fail } - assertEquals("move next test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.previous(); - } catch (IndexedStoreException e) { - id = e.id; + fail("move previous test"); + } catch (CoreException e) { + //should fail } - assertEquals("move previous test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.keyEquals(""); - } catch (IndexedStoreException e) { - id = e.id; + fail("key equals test"); + } catch (CoreException e) { + //should fail } - assertEquals("key equals test", IndexedStoreException.EntryRemoved, id); - id = 0; try { c2.keyMatches(""); - } catch (IndexedStoreException e) { - id = e.id; + fail("key matches test"); + } catch (CoreException e) { + //should fail } - assertEquals("key matches test", IndexedStoreException.EntryRemoved, id); c2.reset(); - id = 0; try { c2.next(); - } catch (IndexedStoreException e) { - id = e.id; + fail("reset test"); + } catch (CoreException e) { + //should fail } - assertEquals("reset test", 0, id); - assertEquals("positioning test", c1.getValueAsString(), c2.getValueAsString()); } finally { @@ -656,9 +630,9 @@ int keySize = 5; int n = 10; /* number of cursors */ - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { @@ -736,7 +710,7 @@ * This tests adjustments due to node splitting. */ public void testMultiCursorUpdate() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); int keySize = 1000; int valueSize1 = 0; @@ -745,7 +719,7 @@ int n = 10; /* number of cursors */ /* create and populate an index, all keys and values are unique */ - store.open(env.getFileName()); + store.open(getFileName()); try { Index index = store.createIndex("Index"); for (int i = 0; i < n; i++) { @@ -786,15 +760,73 @@ } } + /** + * Tests the creating, updating, and deleting of objects in the store. + * This test generates object names and objects, stores the names in an + * index and the objects as blobs. Deletions and updates are done as well. + */ + public void testObjectLife() throws Exception { + int n = 50000; + IndexedStore.delete(getFileName()); + IndexedStore store = new IndexedStore(); + store.open(getFileName()); + try { + Index index = store.createIndex("index"); + IndexCursor cursor = index.open(); + ObjectID id = null; + String name = null; + String value = null; + Random r = new Random(100); // same seed should generate the same test on the same VM + for (int i = 0; i < n; i++) { + int k = Math.abs(r.nextInt()); + int k1 = k % 100; // used to gen name + int k2 = k % 2; // used to gen operation + name = "Object" + generateString(20, k1); + value = "Value" + k1; + cursor.find(name); + if (cursor.keyEquals(name)) { + id = cursor.getValueAsObjectID(); + String foundValue = store.getObjectAsString(id); + assertEquals(value, foundValue); + switch (k2) { + case 0 : + // delete object named x if it exists + println(" Deleting " + name); + store.removeObject(id); + cursor.remove(); + break; + case 1 : + println(" Updating " + name); + store.updateObject(id, value); + break; + default : + // no operation + println(" Nothing"); + } + } else { + println(" Inserting " + name); + id = store.createObject(value); + index.insert(name, id); + } + if (i % 20 == 19) { + println(" Commit"); + store.commit(); + } + } + } finally { + store.close(); + } + } + /** * Timed test for creation and retrieval of 100000 simple objects. */ public void testObjectPerformance() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); HashSet ids = new HashSet(); - store.open(env.getFileName()); + store.open(getFileName()); try { int n = 100000; byte[] a = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef".getBytes(); @@ -805,12 +837,12 @@ store.commit(); } long t1 = System.currentTimeMillis(); - env.println("Time to create = " + ((t1 - t0) / 1000)); + println("Time to create = " + ((t1 - t0) / 1000)); } finally { store.close(); } - store.open(env.getFileName()); + store.open(getFileName()); try { Iterator idStream = ids.iterator(); long t0 = System.currentTimeMillis(); @@ -818,7 +850,7 @@ store.getObject((ObjectID) idStream.next()); } long t1 = System.currentTimeMillis(); - env.println("Time to retrieve = " + ((t1 - t0) / 1000)); + println("Time to retrieve = " + ((t1 - t0) / 1000)); } finally { store.close(); } @@ -831,9 +863,9 @@ */ public void testObjectUpdate() throws Exception { int n = 1000; - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { String s = ""; ObjectID id = store.createObject(s); @@ -852,80 +884,21 @@ } /** - * Tests the creating, updating, and deleting of objects in the store. - * This test generates object names and objects, stores the names in an - * index and the objects as blobs. Deletions and updates are done as well. - */ - public void testObjectLife() throws Exception { - int n = 50000; - IndexedStore.delete(env.getFileName()); - IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); - try { - Index index = store.createIndex("index"); - IndexCursor cursor = index.open(); - ObjectID id = null; - String name = null; - String value = null; - Random r = new Random(100); // same seed should generate the same test on the same VM - for (int i = 0; i < n; i++) { - env.print(i, 8); - int k = Math.abs(r.nextInt()); - int k1 = k % 100; // used to gen name - int k2 = k % 2; // used to gen operation - name = "Object" + generateString(20, k1); - value = "Value" + k1; - cursor.find(name); - if (cursor.keyEquals(name)) { - id = cursor.getValueAsObjectID(); - String foundValue = store.getObjectAsString(id); - assertEquals(value, foundValue); - switch (k2) { - case 0 : - // delete object named x if it exists - env.println(" Deleting " + name); - store.removeObject(id); - cursor.remove(); - break; - case 1 : - env.println(" Updating " + name); - store.updateObject(id, value); - break; - default : - // no operation - env.println(" Nothing"); - } - } else { - env.println(" Inserting " + name); - id = store.createObject(value); - index.insert(name, id); - } - if (i % 20 == 19) { - env.println(" Commit"); - store.commit(); - } - } - } finally { - store.close(); - } - } - - /** * Tests simple recovery APIs. */ public void testRecovery() throws Exception { IndexedStore store = null; - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { try { - store.open(env.getFileName()); - } catch (IndexedStoreException e) { - if (e.id != IndexedStoreException.StoreIsOpen) - fail("expected exception did not occur"); + store.open(getFileName()); + fail("expected exception did not occur"); + } catch (CoreException e) { + //should fail } - IndexedStore store2 = IndexedStore.find(env.getFileName()); + IndexedStore store2 = IndexedStore.find(getFileName()); if (store2 == null) fail("store looks like its not open"); assertSame(store, store2); @@ -938,9 +911,9 @@ * Tests simple creation and deletion of an IndexedStore. */ public void testSanity() throws Exception { - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); IndexedStore store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); store.close(); } @@ -949,18 +922,18 @@ */ public void testTransactions() throws Exception { IndexedStore store = null; - IndexedStore.delete(env.getFileName()); + IndexedStore.delete(getFileName()); store = new IndexedStore(); - store.open(env.getFileName()); + store.open(getFileName()); try { store.createIndex("Index"); store.getIndex("Index"); store.rollback(); try { - store.getIndex("Index"); - } catch (IndexedStoreException e) { - if (e.id != IndexedStoreException.IndexNotFound) + if (store.getIndex("Index") != null) fail("expected exception was not thrown"); + } catch (CoreException e) { + fail("expected exception was not thrown"); } store.createIndex("Index"); store.getIndex("Index");
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicObjectStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicObjectStoreTest.java index b2c8b72..58ec46c 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicObjectStoreTest.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicObjectStoreTest.java
@@ -16,26 +16,16 @@ import org.eclipse.core.internal.indexing.ObjectAddress; import org.eclipse.core.internal.indexing.ObjectStore; -public class BasicObjectStoreTest extends TestCase { +public class BasicObjectStoreTest extends AbstractIndexedStoreTest { protected Vector addresses; - protected TestEnvironment env; - public BasicObjectStoreTest(String name, TestEnvironment env) { - super(name); - this.env = env; + public static Test suite() { + return new TestSuite(BasicObjectStoreTest.class); } - public static Test suite(TestEnvironment env) { - TestSuite suite = new TestSuite(); - suite.addTest(new BasicObjectStoreTest("testSanity", env)); - suite.addTest(new BasicObjectStoreTest("testInsertRemove", env)); - suite.addTest(new BasicObjectStoreTest("testPopulate", env)); - suite.addTest(new BasicObjectStoreTest("testUpdate", env)); - suite.addTest(new BasicObjectStoreTest("testIdentity", env)); - suite.addTest(new BasicObjectStoreTest("testRemove", env)); - suite.addTest(new BasicObjectStoreTest("testLarge", env)); - return suite; + public BasicObjectStoreTest(String name) { + super(name); } /** @@ -53,7 +43,7 @@ // populate an object store with 256 copies of a particular string public void populate(String string) throws Exception { ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); try { addresses = new Vector(); for (int i = 0; i < 255; i++) { @@ -70,11 +60,11 @@ // test object identity public void testIdentity() throws Exception { - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); String s = "000011112222"; populate(s); ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); try { s = "aaaabbbbcccc"; int n = addresses.size(); @@ -101,9 +91,9 @@ */ public void testInsertRemove() throws Exception { String string = "---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*"; - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); try { for (int i = 0; i < 1000; i++) { TestObject object = new TestObject(string.getBytes()); @@ -119,14 +109,14 @@ // put some big objects in public void testLarge() throws Exception { - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); StringBuffer buf = new StringBuffer(3500); while (buf.length() < 3500) buf.append("---*---*---*---*"); String s = buf.toString(); byte[] b1 = s.getBytes(); ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); try { addresses = new Vector(); for (int i = 0; i < (16 * 1024); i++) { @@ -151,14 +141,14 @@ // populate and check the contents of the database public void testPopulate() throws Exception { - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); ObjectStore store = new ObjectStore(new TestObjectPolicy()); StringBuffer buffer = new StringBuffer(4096); String fragment = "---*---*---*---*"; for (int j = 0; j < 64; j++) { String s = buffer.toString(); populate(s); - store.open(env.getFileName()); + store.open(getFileName()); try { int n = addresses.size(); for (int i = 0; i < n; i++) { @@ -177,11 +167,11 @@ // remove all the objects public void testRemove() throws Exception { - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); String s = "000011112222"; populate(s); ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); try { int n = addresses.size(); for (int i = 0; i < n; i++) { @@ -196,20 +186,20 @@ // open and close public void testSanity() throws Exception { - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); store.close(); return; } // update the objects and check the contents again, object size does not change public void testUpdate() throws Exception { - ObjectStore.delete(env.getFileName()); + ObjectStore.delete(getFileName()); String s = "000011112222"; populate(s); ObjectStore store = new ObjectStore(new TestObjectPolicy()); - store.open(env.getFileName()); + store.open(getFileName()); try { s = "aaaabbbbcccc"; int n = addresses.size();
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicPageStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicPageStoreTest.java index 28226ef..3607cc9 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicPageStoreTest.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/BasicPageStoreTest.java
@@ -14,31 +14,14 @@ import junit.framework.*; import org.eclipse.core.internal.indexing.PageStore; -public class BasicPageStoreTest extends TestCase { +public class BasicPageStoreTest extends AbstractIndexedStoreTest{ - protected TestEnvironment env; - - public BasicPageStoreTest(String name, TestEnvironment env) { + public BasicPageStoreTest(String name) { super(name); - this.env = env; } - public static Test suite(TestEnvironment env) { - TestSuite suite = new TestSuite(); - suite.addTest(new BasicPageStoreTest("testCreate", env)); - suite.addTest(new BasicPageStoreTest("testDelete", env)); - suite.addTest(new BasicPageStoreTest("testWrite", env)); - suite.addTest(new BasicPageStoreTest("testLogging1", env)); - suite.addTest(new BasicPageStoreTest("testLogging2", env)); - suite.addTest(new BasicPageStoreTest("testLogging3", env)); - suite.addTest(new BasicPageStoreTest("testWriteLarge", env)); - suite.addTest(new BasicPageStoreTest("testWriteHuge", env)); - suite.addTest(new BasicPageStoreTest("testReadOnly", env)); - suite.addTest(new BasicPageStoreTest("testCacheHitsSequential", env)); - suite.addTest(new BasicPageStoreTest("testCacheHitsCircular", env)); - suite.addTest(new BasicPageStoreTest("testCacheHitsRandom", env)); - suite.addTest(new BasicPageStoreTest("testRandomReadWrite", env)); - return suite; + public static Test suite() { + return new TestSuite(BasicPageStoreTest.class); } // check a byte array against a value @@ -60,9 +43,9 @@ * Creates an initialized 128 page store. */ public int initializeStore() throws Exception { - PageStore.delete(env.getFileName()); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); int n = 128; for (int i = 0; i < n; i++) { TestPage p = (TestPage) store.acquire(i); @@ -74,23 +57,23 @@ } void printStats(PageStore store) throws Exception { - env.println("Number of pages = " + store.numberOfPages()); - env.println("Number of writes = " + store.numberOfFileWrites()); - env.println("Number of file reads = " + store.numberOfFileReads()); - env.println("Number of cache reads = " + store.numberOfCacheHits()); - env.println("Number of reads = " + store.numberOfReads()); - env.println("Cache hit ratio = " + (float) store.numberOfCacheHits() / (float) store.numberOfReads()); + println("Number of pages = " + store.numberOfPages()); + println("Number of writes = " + store.numberOfFileWrites()); + println("Number of file reads = " + store.numberOfFileReads()); + println("Number of cache reads = " + store.numberOfCacheHits()); + println("Number of reads = " + store.numberOfReads()); + println("Cache hit ratio = " + (float) store.numberOfCacheHits() / (float) store.numberOfReads()); } /** * Test cache performance using a circular reference pattern. */ public void testCacheHitsCircular() throws Exception { - env.printHeading("testCacheHitsCircular"); + printHeading("testCacheHitsCircular"); initializeStore(); PageStore store = new PageStore(new TestPagePolicy()); - env.println("Testing 41 of 40"); - store.open(env.getFileName()); + println("Testing 41 of 40"); + store.open(getFileName()); for (int j = 0; j < 100; j++) { for (int i = 0; i < 41; i++) { TestPage p = (TestPage) store.acquire(i); @@ -100,8 +83,8 @@ } printStats(store); store.close(); - env.println("Testing 40 of 40"); - store.open(env.getFileName()); + println("Testing 40 of 40"); + store.open(getFileName()); for (int j = 0; j < 100; j++) { for (int i = 0; i < 40; i++) { TestPage p = (TestPage) store.acquire(i); @@ -117,12 +100,12 @@ * Test the effect of increasing cache sizes */ public void testCacheHitsRandom() throws Exception { - env.printHeading("testCacheHitsRandom"); - PageStore.delete(env.getFileName()); + printHeading("testCacheHitsRandom"); + PageStore.delete(getFileName()); int n = initializeStore(); for (int m = 0; m <= n; m += 16) { PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); Random r = new Random(100); for (int i = 0; i < 1000; i++) { TestPage p = (TestPage) store.acquire(Math.abs(r.nextInt() % n)); @@ -137,10 +120,10 @@ * Checks the performance of sequential access. */ public void testCacheHitsSequential() throws Exception { - env.printHeading("testCacheHitsSequential"); + printHeading("testCacheHitsSequential"); int n = initializeStore(); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); for (int i = 0; i < n; i++) { TestPage p = (TestPage) store.acquire(i); assertTrue(p.check((byte) i)); @@ -153,27 +136,27 @@ /** */ public void testCreate() throws Exception { - env.printHeading("testCreate"); - PageStore.create(env.getFileName()); - assertTrue(PageStore.exists(env.getFileName())); + printHeading("testCreate"); + PageStore.create(getFileName()); + assertTrue(PageStore.exists(getFileName())); } /** */ public void testDelete() throws Exception { - env.printHeading("testDelete"); - PageStore.delete(env.getFileName()); - assertTrue(!PageStore.exists(env.getFileName())); + printHeading("testDelete"); + PageStore.delete(getFileName()); + assertTrue(!PageStore.exists(getFileName())); } /** * Tests the log. */ public void testLogging1() throws Exception { - env.printHeading("testLogging1"); - PageStore.delete(env.getFileName()); + printHeading("testLogging1"); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); testLogPopulate(store); store.testLogging1(); testLogValidate(store); @@ -184,10 +167,10 @@ * Tests the log. */ public void testLogging2() throws Exception { - env.printHeading("testLogging2"); - PageStore.delete(env.getFileName()); + printHeading("testLogging2"); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); testLogPopulate(store); store.testLogging2(); testLogValidate(store); @@ -198,10 +181,10 @@ * Tests the log. */ public void testLogging3() throws Exception { - env.printHeading("testLogging3"); - PageStore.delete(env.getFileName()); + printHeading("testLogging3"); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); testLogPopulate(store); store.testLogging3(); testLogValidate(store); @@ -234,14 +217,14 @@ * Tests random reading & writing. */ public void testRandomReadWrite() throws Exception { - env.printHeading("testRandomReadWrite"); - PageStore.delete(env.getFileName()); + printHeading("testRandomReadWrite"); + PageStore.delete(getFileName()); int n = 128; byte[] value = new byte[n]; for (int i = 0; i < n; i++) value[i] = 0; PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); Random r = new Random(100); for (int i = 0; i < 2000; i++) { int k = Math.abs(r.nextInt() % n); @@ -259,11 +242,11 @@ * Tests read-only access on the store. */ public void testReadOnly() throws Exception { - env.printHeading("testReadOnly"); - PageStore.delete(env.getFileName()); + printHeading("testReadOnly"); + PageStore.delete(getFileName()); int n = initializeStore(); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); assertTrue(store.numberOfPages() == n); for (int i = 0; i < n; i++) { TestPage p = (TestPage) store.acquire(i); @@ -278,10 +261,10 @@ * Adds & checks 128 8K pages (1 meg) to the page file. */ public void testWrite() throws Exception { - env.printHeading("testWrite"); - PageStore.delete(env.getFileName()); + printHeading("testWrite"); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); writeBlock(store); printStats(store); store.close(); @@ -291,10 +274,10 @@ * Adds a 64 meg chunk to the page file. */ public void testWriteHuge() throws Exception { - env.printHeading("testWriteHuge"); - PageStore.delete(env.getFileName()); + printHeading("testWriteHuge"); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); for (int i = 0; i < 64; i++) writeBlock(store); printStats(store); @@ -305,10 +288,10 @@ * Adds a 16 meg chunk to the page file. */ public void testWriteLarge() throws Exception { - env.printHeading("testWriteLarge"); - PageStore.delete(env.getFileName()); + printHeading("testWriteLarge"); + PageStore.delete(getFileName()); PageStore store = new PageStore(new TestPagePolicy()); - store.open(env.getFileName()); + store.open(getFileName()); for (int i = 0; i < 16; i++) writeBlock(store); printStats(store);
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedFieldTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedFieldTest.java deleted file mode 100644 index 2f64e25..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedFieldTest.java +++ /dev/null
@@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.framework.Test; - -public class IntegratedFieldTest { - - public static Test suite() { - TestEnvironment env = new IntegratedTestEnvironment(); - return BasicFieldTest.suite(env); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedIndexedStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedIndexedStoreTest.java deleted file mode 100644 index d952786..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedIndexedStoreTest.java +++ /dev/null
@@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.framework.Test; - -public class IntegratedIndexedStoreTest { - - public static Test suite() { - TestEnvironment env = new IntegratedTestEnvironment(); - return BasicIndexedStoreTest.suite(env); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedObjectStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedObjectStoreTest.java deleted file mode 100644 index 5a9a709..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedObjectStoreTest.java +++ /dev/null
@@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.framework.Test; - -public class IntegratedObjectStoreTest { - - public static Test suite() { - TestEnvironment env = new IntegratedTestEnvironment(); - return BasicObjectStoreTest.suite(env); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedPageStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedPageStoreTest.java deleted file mode 100644 index 37f3705..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedPageStoreTest.java +++ /dev/null
@@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.framework.Test; - -public class IntegratedPageStoreTest { - - public static Test suite() { - TestEnvironment env = new IntegratedTestEnvironment(); - return BasicPageStoreTest.suite(env); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedTestEnvironment.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedTestEnvironment.java deleted file mode 100644 index 89c9e3a..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/IntegratedTestEnvironment.java +++ /dev/null
@@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import org.eclipse.core.tests.harness.EclipseWorkspaceTest; - -public class IntegratedTestEnvironment extends EclipseWorkspaceTest implements TestEnvironment { - - public String getFileName() { - return getWorkspace().getRoot().getLocation().append("test.dat").toOSString(); - } - - public void print(String s) { - } - - public void print(int n, int width) { - } - - public void println(String s) { - } - - public void printHeading(String s) { - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneFieldTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneFieldTest.java deleted file mode 100644 index 68c68a3..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneFieldTest.java +++ /dev/null
@@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.textui.TestRunner; - -public class StandAloneFieldTest { - - public static void main(String[] args) { - TestRunner.run(BasicFieldTest.suite(new StandAloneTestEnvironment())); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneIndexedStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneIndexedStoreTest.java deleted file mode 100644 index 5398c4e..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneIndexedStoreTest.java +++ /dev/null
@@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.textui.TestRunner; - -public class StandAloneIndexedStoreTest { - - public static void main(String[] args) { - TestRunner.run(BasicIndexedStoreTest.suite(new StandAloneTestEnvironment())); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneObjectStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneObjectStoreTest.java deleted file mode 100644 index f023fa2..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneObjectStoreTest.java +++ /dev/null
@@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.textui.TestRunner; - -public class StandAloneObjectStoreTest { - - public static void main(String[] args) { - TestRunner.run(BasicObjectStoreTest.suite(new StandAloneTestEnvironment())); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAlonePageStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAlonePageStoreTest.java deleted file mode 100644 index d6fae4c..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAlonePageStoreTest.java +++ /dev/null
@@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import junit.textui.TestRunner; - -public class StandAlonePageStoreTest { - - public static void main(String[] args) { - TestRunner.run(BasicPageStoreTest.suite(new StandAloneTestEnvironment())); - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneTestEnvironment.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneTestEnvironment.java deleted file mode 100644 index 321f0c1..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/StandAloneTestEnvironment.java +++ /dev/null
@@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -import java.io.*; - -public class StandAloneTestEnvironment implements TestEnvironment { - - protected final static String sep = File.separator; - protected final static String driveLetter = "c:"; - protected final static String directoryName = driveLetter + sep + "tests" + sep; - protected final static String fileName = directoryName + "test.dat"; - - private PrintWriter out; - - public StandAloneTestEnvironment() { - // out = new PrintWriter(System.out, true); - try { - out = new PrintWriter(new FileWriter(directoryName + sep + "test.txt"), true); - } catch (IOException e) { - } - } - - public String getFileName() { - return fileName; - } - - public void print(String s) { - if (out != null) - out.print(s); - } - - public void print(int n, int width) { - StringBuffer b = new StringBuffer(width); - String s = Integer.toString(n); - if (s.length() > width) { - for (int i = 0; i < width; i++) - b.append("#"); - } else { - for (int i = 0; i < width - s.length(); i++) - b.append(" "); - b.append(s); - } - print(b.toString()); - } - - public void println(String s) { - if (out != null) - out.println(s); - } - - public void printHeading(String s) { - if (out != null) { - out.println(); - out.println(s); - } - } - -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestEnvironment.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestEnvironment.java deleted file mode 100644 index a89d1a1..0000000 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestEnvironment.java +++ /dev/null
@@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.tests.internal.indexing; - -public interface TestEnvironment { - - /** - * Returns the file name which will be used as a target for a - * particular test suite. This will be the name of an IndexedStore, - * an ObjectStore, or a PageStore file. - */ - public String getFileName(); - - /** - * Prints a string on an output stream. All testcase strings are informational only. - */ - public void print(String s); - - /** - * Prints a string on an output stream. All testcase strings are informational only. - */ - public void println(String s); - - /** - * Prints a number on an output stream. All testcase strings are informational only. - */ - public void print(int n, int width); - - /** - * Prints a blank line first then a full line - */ - public void printHeading(String s); -} \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObject.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObject.java index e2b13be..a57515b 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObject.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObject.java
@@ -11,6 +11,7 @@ package org.eclipse.core.tests.internal.indexing; import org.eclipse.core.internal.indexing.*; +import org.eclipse.core.runtime.CoreException; class TestObject extends StoredObject { @@ -28,7 +29,7 @@ /** * Standard constructor -- constructs an object from bytes that came from the store. */ - TestObject(Field buffer, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + TestObject(Field buffer, ObjectStore store, ObjectAddress address) throws CoreException { super(buffer, store, address); } @@ -45,7 +46,7 @@ * Places the contents of the buffer into the fields. * Subclasses should implement and call super. */ - protected void extractValues(Field buffer) throws ObjectStoreException { + protected void extractValues(Field buffer) throws CoreException { super.extractValues(buffer); value = buffer.subfield(2).get(); }
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObjectPolicy.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObjectPolicy.java index 4759a60..67217cb 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObjectPolicy.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestObjectPolicy.java
@@ -11,21 +11,13 @@ package org.eclipse.core.tests.internal.indexing; import org.eclipse.core.internal.indexing.*; +import org.eclipse.core.runtime.CoreException; public class TestObjectPolicy extends AbstractObjectPolicy { - - /** - * Constructor for TestObjectPolicy + /* (non-Javadoc) + * @see org.eclipse.core.internal.indexing.AbstractObjectPolicy#createObject(org.eclipse.core.internal.indexing.Field, org.eclipse.core.internal.indexing.ObjectStore, org.eclipse.core.internal.indexing.ObjectAddress) */ - public TestObjectPolicy() { - super(); - } - - /** - * @see ObjectPolicy#createObject(Field, ObjectStore, ObjectAddress) - */ - public StoredObject createObject(Field field, ObjectStore store, ObjectAddress address) throws ObjectStoreException { + public StoredObject createObject(Field field, ObjectStore store, ObjectAddress address) throws CoreException { return new TestObject(field, store, address); } - } \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestPagePolicy.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestPagePolicy.java index 5a641cb..e8c86a7 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestPagePolicy.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/indexing/TestPagePolicy.java
@@ -13,12 +13,10 @@ import org.eclipse.core.internal.indexing.*; public class TestPagePolicy extends AbstractPagePolicy { - - /** - * @see PageStorePolicy#createPage(int, byte[], PageStore) + /* (non-Javadoc) + * @see org.eclipse.core.internal.indexing.AbstractPagePolicy#createPage(int, byte[], org.eclipse.core.internal.indexing.PageStore) */ public Page createPage(int pageNumber, byte[] buffer, PageStore pageStore) { return new TestPage(pageNumber, buffer, pageStore); } - } \ No newline at end of file
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/HistoryStoreTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/HistoryStoreTest.java index e20bb30..a6dfe3a 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/HistoryStoreTest.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/localstore/HistoryStoreTest.java
@@ -2312,7 +2312,7 @@ assertTrue("1.3", myListener.hasBeenTriggered()); } - private void removeHistoryStoreEntry(IndexedStoreWrapper store, HistoryStoreEntry entry) throws IndexedStoreException { + private void removeHistoryStoreEntry(IndexedStoreWrapper store, HistoryStoreEntry entry) throws CoreException { // This method provided as a convenience for removing a HistoryStoreEntry. // It is pirated directly from HistoryStore.remove(HistoryStoreEntry) // which is a protected method.