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 }