/* * Copyright 2012-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.glowroot.agent.plugin.jdbc; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableMultimap; import org.glowroot.agent.plugin.api.Agent; import org.glowroot.agent.plugin.api.config.ConfigListener; import org.glowroot.agent.plugin.api.config.ConfigService; // this is public so it can be called from other plugins public class JdbcPluginProperties { private static final ConfigService configService = Agent.getConfigService("jdbc"); // visibility is provided by memoryBarrier in org.glowroot.config.ConfigService private static int stackTraceThresholdMillis; private static volatile ImmutableMultimap<String, Integer> displayBinaryParameterAsHex = ImmutableMultimap.of(); static { configService.registerConfigListener(new ConfigListener() { @Override public void onChange() { Double value = configService.getDoubleProperty("stackTraceThresholdMillis").value(); stackTraceThresholdMillis = value == null ? Integer.MAX_VALUE : value.intValue(); } }); } private JdbcPluginProperties() {} // this can always be called multiple times with the same sql if want to display multiple // parameters in the same sql as hex // // this is public so it can be called from other plugins public static void setDisplayBinaryParameterAsHex(String sql, int parameterIndex) { HashMultimap<String, Integer> mutableMultimap = HashMultimap.create(displayBinaryParameterAsHex); mutableMultimap.put(sql, parameterIndex); displayBinaryParameterAsHex = ImmutableMultimap.copyOf(mutableMultimap); } static int stackTraceThresholdMillis() { return stackTraceThresholdMillis; } static boolean displayBinaryParameterAsHex(String sql, int parameterIndex) { return displayBinaryParameterAsHex.containsEntry(sql, parameterIndex); } }