All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.enterprise.admin.monitor.stats.MutableTimeStatisticImpl Maven / Gradle / Ivy

There is a newer version: 8.0.0-JDK17-M9
Show newest version
/*
 * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package com.sun.enterprise.admin.monitor.stats;
import org.glassfish.j2ee.statistics.TimeStatistic;
import org.glassfish.j2ee.statistics.Statistic;


/**
 * An implementation of {@link MutableTimeStatistic} that eases the various
 * statistical calculations.
 *
 * @author Kedar Mhaswade
 * @since S1AS8.0
 * @version $Revision: 1.2 $
 */
public class MutableTimeStatisticImpl implements TimeStatistic, MutableTimeStatistic {

    private final TimeStatistic initial;
    private long methodCount;
    private long min;
    private long max;
    private long total; //possibility of an overflow?
    private long lastSampleTime;

    /**
     * Constructs an instance of this class from its immutable equivalent. Note that there are
     * some constraints on the parameter passed:
     * 
    *
  • The maxTime, minTime and totTime of param must be same
  • *
* * @param instance of (immutable) {@link TimeStatistic} */ public MutableTimeStatisticImpl(TimeStatistic initial) { this.initial = initial; methodCount = initial.getCount(); min = initial.getMinTime(); max = initial.getMaxTime(); total = initial.getTotalTime(); final boolean minMax = min == max; final boolean minTot = min == total; if (! (minMax && minTot)) { throw new IllegalArgumentException("Invalid initial values: " + min + ", " + max + ", " + total); } lastSampleTime = initial.getLastSampleTime(); } /** * Increments the count of operation execution by 1 and also increases the time * consumed. A successful execution of method will have all the data updated as: *
    *
  • method count ++
  • *
  • max time, min time and total time are accordingly adjusted
  • *
* * @param current long indicating time in whatever unit this statistic is calculated */ @Override public void incrementCount(long current) { if (methodCount == 0) { total = max = min = current; } else { total += current; max = current >= max ? current : max; min = current >= min ? min : current; } methodCount++; lastSampleTime = System.currentTimeMillis(); } /** * Resets the Statistic. Calling this method has following effect: *
    *
  • Initial state of this Statistic is restored as far as Count, Minimum/Maximum * and Total time of execution is considered.
  • *
*/ @Override public void reset() { methodCount = initial.getCount(); min = initial.getMinTime(); max = initial.getMaxTime(); total = initial.getTotalTime(); lastSampleTime = initial.getLastSampleTime(); } /** * This method is the essence of this class. Returns the unmodifiable view * of this instance. * * @return an instance of {@link TimeStatistic} */ @Override public Statistic unmodifiableView() { return new TimeStatisticImpl( this.methodCount, this.max, this.min, this.total, initial.getName(), initial.getUnit(), initial.getDescription(), initial.getStartTime(), this.lastSampleTime ); } @Override public Statistic modifiableView() { return ( this ); } @Override public long getCount() { return ( this.methodCount); } @Override public String getDescription() { return ( initial.getDescription() ); } @Override public long getLastSampleTime() { return ( this.lastSampleTime ); } @Override public long getMaxTime() { return ( this.max ); } @Override public long getMinTime() { return ( this.min ); } @Override public String getName() { return ( initial.getName() ); } @Override public long getStartTime() { return ( initial.getStartTime() ); } @Override public long getTotalTime() { return ( this.total ); } @Override public String getUnit() { return ( initial.getUnit() ); } /* hack: bug 5045413 */ public void setDescription (final String s) { try { ((StatisticImpl)this.initial).setDescription(s); } catch(final Exception e) { } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy