01: package org.apache.lucene.store;
02:
03: /**
04: * Licensed to the Apache Software Foundation (ASF) under one or more
05: * contributor license agreements. See the NOTICE file distributed with
06: * this work for additional information regarding copyright ownership.
07: * The ASF licenses this file to You under the Apache License, Version 2.0
08: * (the "License"); you may not use this file except in compliance with
09: * the License. You may obtain a copy of the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS,
15: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16: * See the License for the specific language governing permissions and
17: * limitations under the License.
18: */
19:
20: import java.io.IOException;
21:
22: /**
23: * <p>Base class for Locking implementation. {@link Directory} uses
24: * instances of this class to implement locking.</p>
25: *
26: * <p>Note that there are some useful tools to verify that
27: * your LockFactory is working correctly: {@link
28: * VerifyingLockFactory}, {@link LockStressTest}, {@link
29: * LockVerifyServer}.</p>
30: *
31: * @see LockVerifyServer
32: * @see LockStressTest
33: * @see VerifyingLockFactory
34: */
35:
36: public abstract class LockFactory {
37:
38: protected String lockPrefix = "";
39:
40: /**
41: * Set the prefix in use for all locks created in this
42: * LockFactory. This is normally called once, when a
43: * Directory gets this LockFactory instance. However, you
44: * can also call this (after this instance is assigned to
45: * a Directory) to override the prefix in use. This
46: * is helpful if you're running Lucene on machines that
47: * have different mount points for the same shared
48: * directory.
49: */
50: public void setLockPrefix(String lockPrefix) {
51: this .lockPrefix = lockPrefix;
52: }
53:
54: /**
55: * Get the prefix in use for all locks created in this LockFactory.
56: */
57: public String getLockPrefix() {
58: return this .lockPrefix;
59: }
60:
61: /**
62: * Return a new Lock instance identified by lockName.
63: * @param lockName name of the lock to be created.
64: */
65: public abstract Lock makeLock(String lockName);
66:
67: /**
68: * Attempt to clear (forcefully unlock and remove) the
69: * specified lock. Only call this at a time when you are
70: * certain this lock is no longer in use.
71: * @param lockName name of the lock to be cleared.
72: */
73: abstract public void clearLock(String lockName) throws IOException;
74: }
|