Package org.glassfish.pfl.basic.logex
Class WrapperGenerator
java.lang.Object
org.glassfish.pfl.basic.logex.WrapperGenerator
Given an annotated interface, return a Proxy that implements that interface.
Interface must be annotated with @ExceptionWrapper( String idPrefix, String loggerName ).
id prefix defaults to empty, loggerName defaults to the package name of the annotated
class.
Also, note that this returned wrapper will always implement the MessageInfo interface, which provides a way to capture all of the messages and IDs used in the interface. This is used to generate resource bundles. In order for this to work, it is required that the interface declare a field
public static final [class name] self = ExceptionWrapper.makeWrapper( ... ) ;
This is necessary because the extension mechanism allows the construction of message IDs that cannot be predicted based on the annotations alone.
The behavior of the implementation of each method on the interface is determined in part by its return type as follows:
- void. Such a method can only log a message. Must have @Log, @Message is optional.
- String. Such a method may log a message, and also returns the message. Both @Log and @Message are optional.
- A subclass of Exception. Such a method may log a message, and also returns an exception containing the message. Both @Log and @Message are optional.
- @Message( String value ). This defines the message to be placed in a resource
bundle (generated at build time by a separate tool). The key to the resource
bundle is
<loggerName>.<methodName>
. The message is prepended with the idPrefix and the id from the @Log annotation (if @Log is present, otherwise nothing is prepended to the message). If this annotation is not present, a default message is created from the method name and the arguments. - @Log( LogLevel level, int id ). The presence of this annotation indicates that a log record must be generated, and logger IF the appropriate logger is enabled at the given level (note that LogLevel is an enum used for the annotation, each member of which returns the java.util.logging.Level from a getLevel() method).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Extension API available to override the default behavior of the WrapperGenerator.static class
Convenience base class for implementations of Extension that don't need to override every method.static interface
Hidden interface implemented by the result of the makeWrapper call.(package private) static enum
(package private) static class
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final AnnotationAnalyzer
(package private) static final String
(package private) static final WrapperGenerator.Extension
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static WrapperGenerator.ReturnType
classifyReturnType
(Method method) (package private) static int
findAnnotatedParameter
(Annotation[][] pannos, Class<? extends Annotation> cls) (package private) static String
getMessage
(Method method, String prefix, WrapperGenerator.Extension extension) getMessageMap
(Class<?> cls, WrapperGenerator.Extension extension) (package private) static String
getMessageOrKey
(Logger logger, Method method, WrapperGenerator.Extension extension) (package private) static String
(package private) static String
getStandardLoggerName
(Class<?> cls) static String
getStandardLogId
(Method method) Expose the standard log ID for the method.(package private) static Object[]
getWithSkip
(Object[] args, int skip) (package private) static Object
handleFullLogging
(Log log, Method method, WrapperGenerator.ReturnType rtype, Logger logger, String idPrefix, Object[] messageParams, Throwable cause, WrapperGenerator.Extension extension) (package private) static String
handleMessageOnly
(Method method, WrapperGenerator.Extension extension, Logger logger, Object[] messageParams) (package private) static boolean
isMajorLevel
(Level level) (package private) static LogRecord
makeLogRecord
(Level level, String key, Object[] args, Logger logger) (package private) static Throwable
makeStandardException
(String msg, Method method) static <T> T
makeWrapper
(Class<T> cls) Given an interface annotated with @ExceptionWrapper, return a proxy implementing the interface.static <T> T
makeWrapper
(Class<T> cls, WrapperGenerator.Extension extension) Given an interface annotated with @ExceptionWrapper, return a proxy implementing the interface.(package private) static boolean
needStackTrace
(Level level, Method method) (package private) static void
trimStackTrace
(Throwable exc, LogRecord lrec)
-
Field Details
-
stdExtension
-
aa
-
cihiName
-
-
Constructor Details
-
WrapperGenerator
private WrapperGenerator()
-
-
Method Details
-
getStandardLogId
Expose the standard log ID for the method. This is simply the annotated value in the @Log annotation: it is not processed in any way.- Parameters:
method
- The method for which the ID is requested.- Returns:
- The ID (as a string), or null if no @Log annotation is present.
-
makeStandardException
-
getStandardLoggerName
-
findAnnotatedParameter
-
getWithSkip
-
getMsgKey
-
getMessageMap
-
getMessage
-
getMessageOrKey
-
handleMessageOnly
static String handleMessageOnly(Method method, WrapperGenerator.Extension extension, Logger logger, Object[] messageParams) -
classifyReturnType
-
makeLogRecord
-
trimStackTrace
-
isMajorLevel
-
needStackTrace
-
handleFullLogging
static Object handleFullLogging(Log log, Method method, WrapperGenerator.ReturnType rtype, Logger logger, String idPrefix, Object[] messageParams, Throwable cause, WrapperGenerator.Extension extension) -
makeWrapper
Given an interface annotated with @ExceptionWrapper, return a proxy implementing the interface.- Type Parameters:
T
- The annotated interface type.- Parameters:
cls
- The class of the annotated interface.- Returns:
- An instance of the interface.
-
makeWrapper
Given an interface annotated with @ExceptionWrapper, return a proxy implementing the interface.- Type Parameters:
T
- The annotated interface type.- Parameters:
cls
- The class of the annotated interface.extension
- The extension instance used to override the default behavior.- Returns:
- An instance of the interface.
-