X-Git-Url: https://git.mdrn.pl/pylucene.git/blobdiff_plain/a2e61f0c04805cfcb8706176758d1283c7e3a55c..aaeed5504b982cf3545252ab528713250aa33eed:/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/store/LockFactory.java diff --git a/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/store/LockFactory.java b/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/store/LockFactory.java new file mode 100755 index 0000000..22ea6d4 --- /dev/null +++ b/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/store/LockFactory.java @@ -0,0 +1,74 @@ +package org.apache.lucene.store; + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.IOException; + +/** + *

Base class for Locking implementation. {@link Directory} uses + * instances of this class to implement locking.

+ * + *

Note that there are some useful tools to verify that + * your LockFactory is working correctly: {@link + * VerifyingLockFactory}, {@link LockStressTest}, {@link + * LockVerifyServer}.

+ * + * @see LockVerifyServer + * @see LockStressTest + * @see VerifyingLockFactory + */ + +public abstract class LockFactory { + + protected String lockPrefix = null; + + /** + * Set the prefix in use for all locks created in this + * LockFactory. This is normally called once, when a + * Directory gets this LockFactory instance. However, you + * can also call this (after this instance is assigned to + * a Directory) to override the prefix in use. This + * is helpful if you're running Lucene on machines that + * have different mount points for the same shared + * directory. + */ + public void setLockPrefix(String lockPrefix) { + this.lockPrefix = lockPrefix; + } + + /** + * Get the prefix in use for all locks created in this LockFactory. + */ + public String getLockPrefix() { + return this.lockPrefix; + } + + /** + * Return a new Lock instance identified by lockName. + * @param lockName name of the lock to be created. + */ + public abstract Lock makeLock(String lockName); + + /** + * Attempt to clear (forcefully unlock and remove) the + * specified lock. Only call this at a time when you are + * certain this lock is no longer in use. + * @param lockName name of the lock to be cleared. + */ + abstract public void clearLock(String lockName) throws IOException; +}