1
2
3
4
5 package org.sourceforge.jemm.database.debug;
6
7 import java.util.Arrays;
8
9 import org.apache.log4j.Logger;
10 import org.sourceforge.jemm.database.ClassId;
11 import org.sourceforge.jemm.database.ClassInfo;
12 import org.sourceforge.jemm.database.ClientId;
13 import org.sourceforge.jemm.database.ClientThreadId;
14 import org.sourceforge.jemm.database.Database;
15 import org.sourceforge.jemm.database.DatabaseDebugIF;
16 import org.sourceforge.jemm.database.EnumId;
17 import org.sourceforge.jemm.database.EnumInfo;
18 import org.sourceforge.jemm.database.GetObjectResp;
19 import org.sourceforge.jemm.database.LockAcquiredListener;
20 import org.sourceforge.jemm.database.ObjectSyncData;
21 import org.sourceforge.jemm.database.ObjectSyncResp;
22 import org.sourceforge.jemm.database.StructureModifiedException;
23 import org.sourceforge.jemm.lifecycle.TypeRequest;
24 import org.sourceforge.jemm.lifecycle.TypeResponse;
25 import org.sourceforge.jemm.types.ID;
26
27
28
29
30
31
32
33 public class DebugDatabase implements Database {
34 Logger logger = Logger.getLogger(DebugDatabase.class);
35 private final Database underlyingDatabase;
36
37 public DebugDatabase(Database underlyingDatabase) {
38 this.underlyingDatabase = underlyingDatabase;
39 }
40
41 @Override
42 public void acquireLock(ClientThreadId threadId, ID jemmId) {
43 logger.debug("aquireLock(" + threadId + "," + jemmId + ")");
44 underlyingDatabase.acquireLock(threadId, jemmId);
45 }
46
47 @Override
48 public ClassInfo getClassInfo(ClientId clientId, ClassId classId) {
49 logger.debug("getClassInfo(" + clientId + "," + classId + ")");
50 return underlyingDatabase.getClassInfo(clientId, classId);
51 }
52
53 @Override
54 public DatabaseDebugIF getDebugInterface() {
55 logger.debug("getDebugInterface() - NOT SUPPORTED");
56 return null;
57 }
58
59 @Override
60 public EnumInfo getEnumInfo(ClientId clientId, EnumId enumId) {
61 logger.debug("getEnumInfo(" + clientId + "," + enumId + ")");
62 return underlyingDatabase.getEnumInfo(clientId, enumId);
63 }
64
65 @Override
66 public GetObjectResp getObject(ClientId clientId, ID jemmId) {
67 logger.debug("getObject(" + clientId + "," + jemmId + ")");
68 return underlyingDatabase.getObject(clientId, jemmId);
69 }
70
71 @Override
72 public ID getRoot(ClientId clientId, String rootName) {
73 logger.debug("getRoot(" + clientId + ",\"" + rootName + "\")");
74 return underlyingDatabase.getRoot(clientId, rootName);
75 }
76
77 @Override
78 public ID newObject(ClientId clientId, ClassId classId) {
79 logger.debug("newObject(" + clientId + "," + classId + ")");
80 return underlyingDatabase.newObject(clientId, classId);
81 }
82
83 @Override
84 public void referenceCleared(ClientId clientId, ID... ids) {
85 logger.debug("referenceCleared(" + clientId + "," + Arrays.toString(ids) + ")");
86 underlyingDatabase.referenceCleared(clientId, ids);
87 }
88
89 @Override
90 public ClassId registerClass(ClientId clientId,
91 ClassInfo classInfo) throws StructureModifiedException {
92 logger.debug("registerClass(" + clientId + "," + classInfo + ")");
93 return underlyingDatabase.registerClass(clientId, classInfo);
94 }
95
96 @Override
97 public EnumId registerEnum(ClientId clientId,
98 EnumInfo enumInfo) throws StructureModifiedException {
99 logger.debug("registerEnum(" + clientId + "," + enumInfo + ")");
100 return underlyingDatabase.registerEnum(clientId, enumInfo);
101 }
102
103 @Override
104 public void releaseLock(ClientThreadId threadId, ID jemmId) {
105 logger.debug("releaseLock(" + threadId + "," + jemmId + ")");
106 underlyingDatabase.releaseLock(threadId,jemmId);
107 }
108
109 @Override
110 public void removeLockAcquiredListener(ClientId clientId) {
111 logger.debug("removeLockAcquiredListener(" + clientId + ")");
112
113 underlyingDatabase.removeLockAcquiredListener(clientId);
114 }
115
116 class DebugLockAcquiredListener implements LockAcquiredListener {
117
118 final ClientId clientId;
119 final LockAcquiredListener clientListener;
120
121 public DebugLockAcquiredListener(ClientId clientId,LockAcquiredListener clientListener) {
122 this.clientId = clientId;
123 this.clientListener = clientListener;
124 }
125 @Override
126 public void lockAcquired(ClientThreadId threadId, ID object) {
127 logger.debug("lock aquired notification(" + threadId + "," + object + ")");
128 clientListener.lockAcquired(threadId, object);
129 }
130 }
131
132 @Override
133 public void setClientLockAcquiredListener(ClientId clientId, LockAcquiredListener listener) {
134 logger.debug("setClientLockAcquiredListener(" + clientId + "," + listener + ")");
135 underlyingDatabase.setClientLockAcquiredListener(clientId,
136 new DebugLockAcquiredListener(clientId,listener));
137 }
138
139 @Override
140 public void setRoot(ClientId clientId, String rootName, ID newValue) {
141 logger.debug("setRoot(" + clientId + ",\"" + rootName + "\"," + newValue + ")");
142 underlyingDatabase.setRoot(clientId,rootName,newValue);
143 }
144
145 @Override
146 public ID setRootIfNull(ClientId clientId, String rootName, ID newValue) {
147 logger.debug("setRootIfNull(" + clientId + ",\"" + rootName + "\"," + newValue + ")");
148 return underlyingDatabase.setRootIfNull(clientId,rootName,newValue);
149 }
150
151 @Override
152 public ObjectSyncResp synchroniseObject(ClientId clientId, ID jemmId,
153 ObjectSyncData syncData) {
154 logger.debug("synchroniseObject(" + clientId + "," + jemmId + "," + syncData + ")");
155 return underlyingDatabase.synchroniseObject(clientId, jemmId, syncData);
156 }
157
158 @Override
159 public void clientDisconnect(ClientId clientId) {
160 logger.debug("clientDisconnect(" + clientId + ")");
161 underlyingDatabase.clientDisconnect(clientId);
162 }
163
164 @Override
165 public TypeResponse<?> processTypeRequest(ClientId clientId,
166 ClassId classId, ID objId, TypeRequest<?> request) {
167
168 logger.debug("processTypeRequest(" + clientId + "," + classId + "," + objId + ","
169 + request + ")");
170 return underlyingDatabase.processTypeRequest(clientId, classId, objId, request);
171 }
172 }