Author: vgritsenko Date: Fri Aug 10 21:18:09 2007 New Revision: 564832 URL: http://svn.apache.org/viewvc?view=rev&rev=564832 Log: Removed throws from DBObject.isOpened() method. Cleanup.
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java xml/xindice/trunk/java/src/org/apache/xindice/core/CollectionManager.java xml/xindice/trunk/java/src/org/apache/xindice/core/Container.java xml/xindice/trunk/java/src/org/apache/xindice/core/DBObject.java xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java xml/xindice/trunk/java/src/org/apache/xindice/core/filer/Paged.java xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexManager.java xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java Fri Aug 10 21:18:09 2007 @@ -209,22 +209,24 @@ } + private String name; private String canonicalName; + private Collection parent; + // Object ID Stuff - private int collectionId; + private final Object oidMutex = new Object(); + private String oidTemplate; + private long documentId; + + private boolean internalSymbols; + private SymbolTable symbols; + private File collectionRoot; private boolean compressed; - private long documentId; - private DocumentCache documentCache; private Filer filer; - private IndexManager indexManager; private InlineMetaService inlineMetaService; - private boolean internalSymbols; - private String name; - private final Object oidMutex = new Object(); - private String oidTemplate; - private Collection parent; - private SymbolTable symbols; + private DocumentCache documentCache; + private IndexManager indexManager; // document keys identity map private final Map identityMap = new WeakHashMap(); @@ -235,10 +237,10 @@ } /** - * @param parentCollection + * @param parent parent collection */ - public Collection(Collection parentCollection) { - this.parent = parentCollection; + public Collection(Collection parent) { + this.parent = parent; } private void checkFiler(int faultCode) throws DBException { @@ -246,17 +248,25 @@ throw new DBException(faultCode, "Collection '" + name + "' cannot store resources (no filer)"); } + if (!filer.isOpened()) { + throw new DBException(FaultCodes.COL_COLLECTION_CLOSED, + "Collection '" + name + "' is closed."); + } } /** * @see org.apache.xindice.core.DBObject#close() */ public boolean close() throws DBException { + // Close children collections first + super.close(); + + // Close its own filer if (filer != null) { indexManager.close(); filer.close(); } - super.close(); + return true; } @@ -272,7 +282,7 @@ } /** - * @see org.apache.xindice.core.CollectionManager#createCollection(java.lang.String, org.apache.xindice.util.Configuration) + * @see CollectionManager#createCollection(String, Configuration) */ public final Collection createCollection(String path, Configuration config) throws DBException { Collection col = super.createCollection(path, config); @@ -348,11 +358,6 @@ * @see org.apache.xindice.core.DBObject#drop() */ public boolean drop() throws DBException { - if (this == getDatabase()) { - throw new DBException(FaultCodes.DBE_CANNOT_DROP, - "You cannot drop the database"); - } - DBObserver.getInstance().dropCollection(this); // Drop the meta if necessary @@ -1050,14 +1055,20 @@ /** * Returns whether or not meta data is enabled. + * * @return boolean whether or not meta data is enabled. */ public boolean isMetaEnabled() { return getDatabase().isMetaEnabled(); } - public boolean isOpened() throws DBException { - return true; + public boolean isOpened() { + // Collection without filer is always open ... for now. + if (filer == null) { + return true; + } + + return filer.isOpened(); } /** @@ -1421,12 +1432,13 @@ this.canonicalName = canonicalName; // Calculate The OID Template - collectionId = Math.abs(canonicalName.hashCode()); StringBuffer sb = new StringBuffer("00000000000000000000000000000000"); String host = Integer.toString(host_id, 16); - String collection = Integer.toString(collectionId, 16); sb.insert(8 - host.length(), host); + + String collection = Integer.toString(Math.abs(canonicalName.hashCode()), 16); sb.insert(16 - collection.length(), collection); + sb.setLength(32); oidTemplate = sb.toString(); } @@ -1516,8 +1528,8 @@ internalSymbols = (symConfig != null); if (internalSymbols) { if (log.isTraceEnabled()) { - log.trace(localDebugHeader - + "Internal symbols=<" + TextWriter.toString(symConfig.getElement()) + ">"); + log.trace(localDebugHeader + + "Internal symbols=<" + TextWriter.toString(symConfig.getElement()) + ">"); } try { Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/CollectionManager.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/CollectionManager.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/CollectionManager.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/CollectionManager.java Fri Aug 10 21:18:09 2007 @@ -41,10 +41,11 @@ private static final Log log = LogFactory.getLog(CollectionManager.class); - private static final String COLLECTION = "collection"; private static final String COLLECTIONS = "collections"; + private static final String COLLECTION = "collection"; + private static final String NAME = "name"; + private static final String[] EMPTY_STRINGS = new String[0]; - private static final String NAME = "name"; private final Map collections = Collections.synchronizedMap(new HashMap()); private Configuration config; @@ -54,8 +55,7 @@ } /** - * - * @param collection + * @param collection a collection to add */ protected void addCollection(Collection collection) { this.collections.put(collection.getName(), collection); @@ -65,6 +65,7 @@ * Returns number of child collections * * @return number of collections + * @throws DBException never */ public final long countCollections() throws DBException { return (long) collections.size(); @@ -77,6 +78,7 @@ * @param path The relative path of the Collection * @param cfg The Collection's configuration * @return The newly created Collection + * @throws DBException if operation failed */ public Collection createCollection(String path, Configuration cfg) throws DBException { if (path == null || "".equals(path)) { @@ -97,25 +99,19 @@ continue; } - if (st.hasMoreTokens()) { - cm = (CollectionManager) cm.collections.get(path); - } else { + if (!st.hasMoreTokens()) { return cm.createCollection(path, cfg); } + + cm = (CollectionManager) cm.collections.get(path); } throw new DBException(FaultCodes.COL_COLLECTION_NOT_FOUND, "Parent Collection '" + path + "' doesn't exist"); } - if (path.indexOf('/') != -1) { - throw new DBException(FaultCodes.COL_CANNOT_CREATE, "Name cannot contain '/'"); - } - - Collection collection = new Collection((Collection) this); + // Get collection name and do a check String n = cfg.getAttribute(NAME); - - // Do a name check to see if all is well if (n == null || n.trim().equals("")) { throw new DBException(FaultCodes.COL_CANNOT_CREATE, "No name specified in collection configuration"); @@ -126,7 +122,8 @@ "Name does not match with path name"); } - synchronized(collections) { + Collection collection = new Collection((Collection) this); + synchronized (collections) { try { if (getCollection(n) != null) { throw new DBException(FaultCodes.COL_DUPLICATE_COLLECTION, @@ -149,6 +146,7 @@ throw new DBException(FaultCodes.COL_CANNOT_CREATE, "Error Creating Collection '" + path + "'", e); } + return collection; } } @@ -176,6 +174,7 @@ * * @param collection The Collection to drop * @return Whether or not the Collection was dropped + * @throws DBException if operation failed */ public boolean dropCollection(Collection collection) throws DBException { if (collection == null) { @@ -224,6 +223,7 @@ * * @param path The Collection path * @return The Collection (or null) + * @throws DBException if operation failed */ public Collection getCollection(String path) throws DBException { if (path == null) { @@ -234,20 +234,25 @@ CollectionManager cm = this; StringTokenizer st = new StringTokenizer(path, "/"); while (cm != null && st.hasMoreTokens()) { - path = st.nextToken(); + path = st.nextToken().trim(); + if (path.length() == 0) { + continue; + } + cm = (CollectionManager) cm.collections.get(path); } + return (Collection) cm; - } else { - return (Collection) collections.get(path); } + + return (Collection) collections.get(path); } /** * @return The collections map */ protected Map getCollections() { - return this.collections; + return Collections.unmodifiableMap(this.collections); } /** @@ -262,9 +267,12 @@ * Strings. * * @return The Collection list + * @throws DBException never */ public final String[] listCollections() throws DBException { - return (String[]) collections.keySet().toArray(EMPTY_STRINGS); + synchronized (collections) { + return (String[]) collections.keySet().toArray(EMPTY_STRINGS); + } } /** Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Container.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/Container.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/Container.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/Container.java Fri Aug 10 21:18:09 2007 @@ -87,4 +87,3 @@ */ void commit(Document document) throws DBException; } - Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/DBObject.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/DBObject.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/DBObject.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/DBObject.java Fri Aug 10 21:18:09 2007 @@ -36,6 +36,7 @@ * DBObject, such as disk files, etc. * * @return Whether or not the DBObject was created + * @throws DBException if operation failed */ boolean create() throws DBException; @@ -43,6 +44,7 @@ * open opens the DBObject * * @return Whether or not the DBObject was opened + * @throws DBException if operation failed */ boolean open() throws DBException; @@ -51,7 +53,7 @@ * * @return The open status of the DBObject */ - boolean isOpened() throws DBException; + boolean isOpened(); /** * exists returns whether or not a physical representation of this @@ -60,6 +62,7 @@ * perform a connection check. * * @return Whether or not the physical resource exists + * @throws DBException if operation failed */ boolean exists() throws DBException; @@ -69,6 +72,7 @@ * references to the DBObject in its own context. * * @return Whether or not the DBObject was dropped + * @throws DBException if operation failed */ boolean drop() throws DBException; @@ -76,6 +80,7 @@ * close closes the DBObject * * @return Whether or not the DBObject was closed + * @throws DBException if operation failed */ boolean close() throws DBException; } Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/Database.java Fri Aug 10 21:18:09 2007 @@ -446,4 +446,16 @@ // observer DBObserver.getInstance().setDatabaseConfig(this, getCollections(), config); } + + + /** + * Database can not be dropped. + * + * @return nothing. + * @throws DBException Always throws DBE_CANNOT_DROP fault code. + */ + public boolean drop() throws DBException { + throw new DBException(FaultCodes.DBE_CANNOT_DROP, + "You cannot drop the database"); + } } Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/filer/Paged.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/filer/Paged.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/filer/Paged.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/filer/Paged.java Fri Aug 10 21:18:09 2007 @@ -666,6 +666,7 @@ "Error closing " + file.getName(), e); } } + return true; } Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexManager.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexManager.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexManager.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexManager.java Fri Aug 10 21:18:09 2007 @@ -206,7 +206,7 @@ */ public synchronized void close() { // wait for all scheduled tasks to finish - synchronized(lock) { + synchronized (lock) { while (taskCount > 0) { try { lock.wait(); @@ -215,6 +215,7 @@ } } } + // close all indexers for (Iterator i = indexes.values().iterator(); i.hasNext(); ) { Indexer idx = (Indexer) i.next(); Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java?view=diff&rev=564832&r1=564831&r2=564832 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java Fri Aug 10 21:18:09 2007 @@ -895,7 +895,7 @@ * * @return true if open, false otherwise */ - public synchronized boolean isOpened() throws DBException { + public synchronized boolean isOpened() { return itsValues != null && itsOpen; }