org.glassfish.gmbal.impl.TimerAnnotationHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of webservices-rt Show documentation
Show all versions of webservices-rt Show documentation
This module contains the Metro runtime code.
/*
* Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.glassfish.gmbal.impl;
import java.util.Map;
import java.util.Set;
import org.glassfish.gmbal.Description;
import org.glassfish.gmbal.IncludeSubclass;
import org.glassfish.gmbal.InheritedAttribute;
import org.glassfish.gmbal.ManagedAttribute;
import org.glassfish.gmbal.ManagedData;
import org.glassfish.gmbal.ManagedObject;
import org.glassfish.gmbal.ManagedObjectManager;
import org.glassfish.gmbal.ManagedOperation;
import org.glassfish.gmbal.NameValue;
import org.glassfish.pfl.tf.timer.impl.TimerFactoryImpl;
import org.glassfish.pfl.tf.timer.spi.Controllable;
import org.glassfish.pfl.tf.timer.spi.LogEventHandler;
import org.glassfish.pfl.tf.timer.spi.Named;
import org.glassfish.pfl.tf.timer.spi.Statistics;
import org.glassfish.pfl.tf.timer.spi.StatsEventHandler;
import org.glassfish.pfl.tf.timer.spi.Timer;
import org.glassfish.pfl.tf.timer.spi.TimerEventController;
import org.glassfish.pfl.tf.timer.spi.TimerEventControllerBase;
import org.glassfish.pfl.tf.timer.spi.TimerEventHandler;
import org.glassfish.pfl.tf.timer.spi.TimerFactory;
import org.glassfish.pfl.tf.timer.spi.TimerGroup;
/** This class provides nested classes that carry the needed Gmbal annotations
* for the various Timer classes and interface, and a method for registering all
* of these annotations in gmbal.
*
* @author ken_admin
*/
public class TimerAnnotationHelper {
public interface ManagedNamed extends Named {
@ManagedAttribute
@Description( "TimerFactory that created this Timer or TimerGroup" )
@Override
TimerFactory factory() ;
@ManagedAttribute
@NameValue
@Description( "Name of this Timer or TimerGroup" )
@Override
String name() ;
}
@ManagedObject
@IncludeSubclass( { Timer.class, TimerGroup.class, TimerFactory.class } )
public interface ManagedControllable extends Controllable, ManagedNamed {
@ManagedAttribute
@Description( "The purpose of the Timer or TimerGroup" )
@Override
String description() ;
@ManagedAttribute
@Description( "An internal identifier for the Timer or TimerGroup" )
@Override
int id() ;
@ManagedAttribute
@Description( "Set of Timers or TimerGroups contained in a TimerGroup" )
@Override
Set extends Controllable> contents() ;
@ManagedOperation
@Description( "Enable this Timer, or all Timers and TimerGroups "
+ "contained in this TimerGroup" )
@Override
void enable() ;
@ManagedOperation
@Description( "Disable this Timer, or all Timers and TimerGroups "
+ "contained in this TimerGroup" )
@Override
void disable() ;
@ManagedOperation
@Description( "True if this Timer or TimerGroup is enabled" )
@Override
boolean isEnabled() ;
}
@ManagedData
@Description( "Statistics recorded for a series of time intervals" )
public class ManagedStatistics extends Statistics {
public ManagedStatistics( long count, double min, double max,
double average, double standardDeviation ) {
super( count, min, max, average, standardDeviation ) ;
}
@ManagedAttribute
@Description( "Total number of intervals recorded" )
@Override
public long count() { return super.count() ; }
@ManagedAttribute
@Description( "Minimum interval duration recorded" )
@Override
public double min() { return super.min() ; }
@ManagedAttribute
@Description( "Maximum interval duration recorded" )
@Override
public double max() { return super.max() ; }
@ManagedAttribute
@Description( "Average interval duration recorded" )
@Override
public double average() { return super.average() ; }
@ManagedAttribute
@Description( "Standard deviation of all durations recorded" )
@Override
public double standardDeviation() { return super.standardDeviation() ; }
}
public interface ManagedTimerEventHandler extends TimerEventHandler,
ManagedNamed {
}
@ManagedObject
@Description( "TimerEventHandler that records all TimerEvents in a log" )
@InheritedAttribute( methodName="iterator",
description="TimerEvents contained in this log in order of occurrence" )
public interface ManagedLogEventHandler extends LogEventHandler,
ManagedTimerEventHandler {
@ManagedOperation
@Description( "Discard all recorded timer events" )
@Override
void clear() ;
}
@ManagedObject
@Description( "TimerEventHandler that accumulates statistics on events" )
public interface ManagedStatsEventHandler extends StatsEventHandler,
ManagedTimerEventHandler {
@ManagedAttribute
@Description( "A table giving statistics for each activated Timer "
+ "that had at least one TimerEvent" )
@Override
Map stats() ;
@ManagedOperation
@Description( "Discard all statistics on all Timers" )
@Override
void clear() ;
}
@ManagedObject
@Description( "A simple TimerEventHandler that just displays TimerEvents "
+ "as they occur" )
public class TracingEventHandler
extends TimerFactoryImpl.TracingEventHandler
implements ManagedTimerEventHandler {
public TracingEventHandler( TimerFactory factory, String name ) {
super( factory, name ) ;
}
}
@ManagedObject
@Description( "A timer represents a particular action that has a "
+ "duration from ENTER to EXIT" )
public interface ManagedTimer extends Timer, ManagedControllable {
@ManagedAttribute
@Description( "True if this Timer is enabled, and can generate "
+ "TimerEvents" )
@Override
boolean isActivated() ;
}
@ManagedObject
@Description( "Controls entering and exiting Timers" )
public class ManagedTimerEventController extends TimerEventController
implements ManagedNamed {
public ManagedTimerEventController( TimerFactory factory, String name ) {
super( factory, name ) ;
}
@ManagedOperation
@Description( "Enter a particular Timer" )
@Override
public void enter( Timer timer ) {
super.enter( timer ) ;
}
@ManagedOperation
@Description( "Exit a particular Timer" )
@Override
public void exit( Timer timer ) {
super.exit( timer ) ;
}
}
@ManagedObject
@Description( "A group of Timers or other TimerGroups, "
+ "which may be enabled or disabled together" )
public interface ManagedTimerGroup extends TimerGroup, ManagedControllable {
@ManagedOperation
@Description( "Add a new Timer or TimerGroup to this TimerGroup" )
@Override
boolean add( Controllable con ) ;
@ManagedOperation
@Description( "Remove a new Timer or TimerGroup from this TimerGroup" )
@Override
boolean remove( Controllable con ) ;
}
@ManagedObject
@Description( "The Factory used to create and managed all objects "
+ "in the Timer framework" )
public interface ManagedTimerFactory extends TimerFactory, ManagedTimerGroup {
@ManagedAttribute
@Description( "The total number of Controllabled IDs in use" )
@Override
int numberOfIds() ;
@ManagedOperation
@Description( "Look up a Timer or TimerGroup by its ID" )
@Override
Controllable getControllable( int id ) ;
@ManagedOperation
@Description( "Create a new LogEventHandler" )
@Override
LogEventHandler makeLogEventHandler( String name ) ;
@ManagedOperation
@Description( "Create a new TracingEventHandler" )
@Override
TimerEventHandler makeTracingEventHandler( String name ) ;
@ManagedOperation
@Description( "Create a new StatsEventHandler" )
@Override
StatsEventHandler makeStatsEventHandler( String name ) ;
@ManagedOperation
@Description( "Create a new Multi-Threaded StatsEventHandler" )
@Override
StatsEventHandler makeMultiThreadedStatsEventHandler( String name ) ;
@ManagedOperation
@Description( "Remove the TimerEventHandler from this factory" )
@Override
void removeTimerEventHandler( TimerEventHandler handler ) ;
@ManagedOperation
@Description( "Create a new Timer" )
@Override
Timer makeTimer( String name, String description ) ;
@ManagedAttribute
@Description( "All timers contained in this factory" )
@Override
Map timers() ;
@ManagedOperation
@Description( "Create a new TimerGroup" )
@Override
TimerGroup makeTimerGroup( String name, String description ) ;
@ManagedAttribute
@Description( "All timers contained in this factory" )
@Override
Map timerGroups() ;
@ManagedOperation
@Description( "Create a new TimerEventController" )
@Override
TimerEventController makeController( String name ) ;
@ManagedOperation
@Description( "Remote the TimerEventController from this factory" )
@Override
void removeController( TimerEventControllerBase controller ) ;
@ManagedAttribute
@Description( "All explicitly enabled Timers and TimerGroups" )
@Override
Set extends Controllable> enabledSet() ;
@ManagedAttribute
@Description( "All activated Timers" )
@Override
Set activeSet() ;
}
public static void registerTimerClasses( ManagedObjectManager mom ) {
for (Class> cls : TimerAnnotationHelper.class.getDeclaredClasses()) {
mom.addInheritedAnnotations(cls);
}
}
}