View Javadoc

1   /**
2    * 
3    */
4   package org.sourceforge.jemm.database.components;
5   
6   import org.sourceforge.jemm.database.ClientId;
7   import org.sourceforge.jemm.database.DatabaseDebugIF;
8   import org.sourceforge.jemm.database.components.interfaces.DBClientRefHandler;
9   import org.sourceforge.jemm.database.components.interfaces.DBGarbageSweeper;
10  import org.sourceforge.jemm.database.components.interfaces.DBObjectHandler;
11  import org.sourceforge.jemm.types.ID;
12  
13  /**
14   * 
15   * @author Rory Graves
16   */
17  public class DefaultDBDebugHandler implements DatabaseDebugIF {
18  	private final DBObjectHandler objectHandler;
19  	private final DBClientRefHandler clientRefHandler;
20  	private final DBGarbageSweeper gcHandler;
21  
22  	/**
23  	 * Creates a debug handler for a database.
24  	 * 
25  	 * @param objectHandler The core object handler.
26  	 * @param clientRefHandler The client reference handler.
27  	 * @param gcHandler The database garbage sweeper.
28  	 */
29  	public DefaultDBDebugHandler(DBObjectHandler objectHandler,
30  			DBClientRefHandler clientRefHandler, DBGarbageSweeper gcHandler) {
31  		this.objectHandler = objectHandler;
32  		this.clientRefHandler = clientRefHandler;
33  		this.gcHandler = gcHandler;
34  	}
35  
36  	@Override
37  	public boolean isClientReferenceHeld(ClientId clientId, ID id) {
38  		return clientRefHandler.hasReference(clientId, id);
39  	}
40  
41  	@Override public void triggerGCCycle() {
42  		gcHandler.runGCCycle();
43  	}
44  
45  	@Override public int getObjectCount() {
46  		return objectHandler.getObjectCount();
47  	}
48  
49  	@Override public int noLocksHeld() {
50  		return objectHandler.getNoLocksHeld();
51  	}
52  }