1 package net.krecan.m2_proxy.resource;
2
3 import net.krecan.m2_proxy.Resource;
4
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7
8 /***
9 * Abstract resource implementation.
10 * Takes care about logicalName and release flag
11 * @author Lukas Krecan
12 *
13 */
14 public abstract class AbstractResource implements Resource {
15
16 private String logicalName;
17
18 /***
19 * Flag whether the resource was relesed
20 */
21 private boolean released = false;
22
23 private static final Log LOG = LogFactory.getLog(AbstractResource.class);
24
25
26 public AbstractResource(String logicalName) {
27 super();
28 this.logicalName = logicalName;
29 }
30
31 public String getLogicalName() {
32 return logicalName;
33 }
34 public void setLogicalName(String logicalName) {
35 this.logicalName = logicalName;
36 }
37 /***
38 * Returns true, if the resource was already released
39 * @return
40 */
41 public boolean isReleased() {
42 return released;
43 }
44 protected void setReleased(boolean released) {
45 this.released = released;
46 }
47 /***
48 * Finalizer. Checks if the resource wasreleased. If it wasnot released, there is an error
49 * somewhere in the resource handling.
50 */
51 protected void finalize() throws Throwable {
52 if (!released)
53 {
54 LOG.error(getClass().getName()+": Resource "+getLogicalName()+" is not released when the finalize method is called.");
55 release();
56 }
57 super.finalize();
58 }
59 }