001: /*
002: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
003: */
004: package com.tc.object.logging;
005:
006: import com.tc.object.config.LockDefinition;
007:
008: import java.util.Collection;
009:
010: /**
011: * Logging interface for the DSO class loading/adaption system
012: */
013: public interface InstrumentationLogger {
014:
015: ///////////////////////////////
016: // logging options
017: ///////////////////////////////
018:
019: /**
020: * Determine whether to log when a class is included for instrumentation (checked
021: * before calls to {@link #classIncluded(String)}).
022: * @return True if should log
023: */
024: boolean classInclusion();
025:
026: /**
027: * Determine whether to log when a lock is inserted (checked before calls to
028: * {@link #autolockInserted(String, String, String, LockDefinition)} or
029: * {@link #lockInserted(String, String, String, LockDefinition[])}).
030: * @return True if should log
031: */
032: boolean lockInsertion();
033:
034: /**
035: * Determine whether to log when a root is inserted (checked before calls to
036: * {@link #rootInserted(String, String, String, boolean)}).
037: * @return True if should log
038: */
039: boolean rootInsertion();
040:
041: /**
042: * Determine whether to log when a DMI call is inserted (checked before calls
043: * to {@link #distMethodCallInserted(String, String, String)}).
044: * @return True if should log
045: */
046: boolean distMethodCallInsertion();
047:
048: /**
049: * Determine whether to log transient root warnings (checked before calls to
050: * {@link #transientRootWarning(String, String)).
051: * @return True if should log
052: */
053: boolean transientRootWarning();
054:
055: ///////////////////////////////
056: // log methods
057: ///////////////////////////////
058:
059: /**
060: * Log class that is being instrumented
061: * @param className Class name
062: */
063: void classIncluded(String className);
064:
065: /**
066: * Log that auto lock was inserted
067: * @param className The class name
068: * @param methodName The method name
069: * @param methodDesc Method descriptor
070: * @param lockDef The lock definition
071: */
072: void autolockInserted(String className, String methodName,
073: String methodDesc, LockDefinition lockDef);
074:
075: /**
076: * Log that lock was inserted
077: * @param className The class name
078: * @param methodName The method name
079: * @param methodDesc Method descriptor
080: * @param locks The lock definitions
081: */
082: void lockInserted(String className, String methodName,
083: String methodDesc, LockDefinition[] locks);
084:
085: /**
086: * Log that a subclass of a logically managed class cannot be instrumented
087: * @param className The class
088: * @param logicalSuperClasses All logical super classes that prevent className from being instrumented
089: */
090: void subclassOfLogicallyManagedClasses(String className,
091: Collection logicalSuperClasses);
092:
093: /**
094: * Log that the transient property is being ignored for a root
095: * @param className Class name
096: * @param fieldName Transient field name
097: */
098: void transientRootWarning(String className, String fieldName);
099:
100: /**
101: * Log that a root was inserted
102: * @param className The class name
103: * @param fieldName The root field
104: * @param desc Method descriptor
105: * @param isStatic True if static root
106: */
107: void rootInserted(String className, String fieldName, String desc,
108: boolean isStatic);
109:
110: /**
111: * Log that a DMI call was inserted.
112: * @param className The class name
113: * @param methodName The method name
114: * @param desc The method descriptor
115: */
116: void distMethodCallInserted(String className, String methodName,
117: String desc);
118: }
|