Mercurial > hg > blitz_jmxagent
view src/net/scatterspace/blitz/jmx/AbstractStatsImpl.java @ 2:1850f751d9de
Catching remote exceptions
author | Dominic Cleal <dominic-cleal@cdo2.com> |
---|---|
date | Thu, 11 Dec 2008 13:08:11 +0000 |
parents | e59e6471ce44 |
children |
line wrap: on
line source
/** * Copyright (c) 2008 CDO2 Limited. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of CDO2 Limited nor the names of its contributors * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY CDO2 LIMITED ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package net.scatterspace.blitz.jmx; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.logging.Level; import java.util.logging.Logger; import org.dancres.blitz.remote.StatsAdmin; import org.dancres.blitz.stats.Stat; public abstract class AbstractStatsImpl<T extends Stat> { private Logger log_ = Logger.getLogger(getClass().getName()); private StatsAdmin admin_; private Class<? extends Stat> statClazz_; public AbstractStatsImpl(StatsAdmin admin, Class<T> stat) { admin_ = admin; statClazz_ = stat; } @SuppressWarnings("unchecked") protected Collection<T> getStatistics() { Stat[] allStats; try { allStats = admin_.getStats(); } catch (RemoteException e) { log_.log(Level.WARNING, "Remote exception while getting stats", e); return Collections.emptyList(); } Collection<T> ret = new ArrayList<T>(); for (Stat stat : allStats) { if (statClazz_.isInstance(stat)) { ret.add((T) statClazz_.cast(stat)); } } return ret; } @Override public String toString() { String name = getClass().getSimpleName(); if (name.endsWith("Impl")) { name = name.substring(0, name.length() - 4); } return "type=" + name; } }