|
Glassfish example source code file (FlashlightUtils.java)
The Glassfish FlashlightUtils.java source code/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.glassfish.flashlight; import com.sun.enterprise.config.serverbeans.MonitoringService; import com.sun.enterprise.util.LocalStringManagerImpl; import com.sun.logging.LogDomains; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.*; import java.util.logging.Logger; import org.glassfish.api.monitoring.DTraceContract; import org.glassfish.external.probe.provider.annotations.Probe; import org.glassfish.external.probe.provider.annotations.ProbeParam; import org.glassfish.flashlight.impl.core.FlashlightProbeProvider; import org.glassfish.flashlight.provider.FlashlightProbe; import org.jvnet.hk2.component.Habitat; /** * Note that you MUST call an initilizer for this class for DTrace! * Why? We do not want the overhead of being a Service that implements a Contract * which is what you need to get a habitat object! * * // TODO -- just make this a Service and inject the habitat and simplify the code a bit! * @author Byron Nevins */ public class FlashlightUtils { private static final Logger logger = LogDomains.getLogger(FlashlightUtils.class, LogDomains.MONITORING_LOGGER); private FlashlightUtils() { // All static. No instances allowed. } public static void initialize(Habitat h, MonitoringService mc) { // only do once -- ignore multiple calls... synchronized(LOCK) { if(habitat == null) { habitat = h; monConfig = mc; setDTraceEnabled(Boolean.parseBoolean(monConfig.getDtraceEnabled())); setMonitoringEnabled(Boolean.parseBoolean(monConfig.getMonitoringEnabled())); // order mattrs. the next method is depending on the previous //methods having been run already... setDTraceAvailabilty(); } } } public static void setDTraceEnabled(boolean b) { ok(); dtraceEnabled = b; } public static void setMonitoringEnabled(boolean b) { ok(); monitoringEnabled = b; } public static boolean isMonitoringEnabled() { ok(); return monitoringEnabled; } public static boolean isDtraceAvailable() { ok(); if(dt == null) return false; if(!dtraceEnabled) return false; if(!monitoringEnabled) return false; return true; } /** This only reveals whether it is enabled in domain.xml * isDtraceAvailable() checks this AND a few other things * @return */ public static boolean isDtraceEnabled() { return dtraceEnabled; } static public DTraceContract getDtraceEngine() { return isDtraceAvailable() ? dt : null; } private static void setDTraceAvailabilty() { ok(); dt = habitat.getByContract(DTraceContract.class); if(dt == null) { logDTraceAvailability(false, false); } else if(!dt.isSupported()) { dt = null; logDTraceAvailability(true, false); } // else dt is available!! else { logDTraceAvailability(true, true); } } /** bnevins -- I see 2 exact copies of this big chunk of code -- so I moved it here! * bnevins Oct 18, 2009 -- I can't see any reason why we FORCE users to annotate every single * parameter! We should just make a name up if they don't provide one. Since such * names are not saved to the byte code it can't have any runtime effect. * @param method * @return */ public static String[] getParamNames(Method method) { Class<?>[] paramTypes = method.getParameterTypes(); String[] paramNames = new String[paramTypes.length]; Annotation[][] allAnns = method.getParameterAnnotations(); int index = 0; for (Annotation[] paramAnns : allAnns) { paramNames[index] = getParamName(paramAnns, paramTypes, index); ++index; } return paramNames; } /** * return the Methods in the clazz that are annotated as Probe. * Note that we use getMethods() not getDeclaredMethods() * This allows a hierarchy of Probe Providers * @param clazz * @return a List of legal Methods null will never be returned. */ public static List<Method> getProbeMethods(Class clazz) { List<Method> list = new LinkedList Other Glassfish examples (source code examples)Here is a short list of links related to this Glassfish FlashlightUtils.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.