View Javadoc

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  }