/* * Copyright (C) 2012 Facebook, Inc. * * 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 com.facebook.stats.mx; /** * String wrapper that can memoize and efficiently do prepend/append/INSERT * * For use with counters that need a default and a dynamic one (ex: per- * category) */ public interface StatType { /** * * @return the current key */ public String getKey(); /** * * @param suffix - append ".suffix" * @return returns getKey() + suffix */ public StatType append(String suffix); /** * * @param prefix - prepend "prefix." * @return returns prefix + getKey() */ public StatType prepend(String prefix); /** * will create StatType such that * * getKey() = prefix + value + suffix * * but leaves the internal prefix + suffix the same. ex: * * materialize("x").materialize("y").getKey() = prefix + "y" + suffix * * @param value - string to use as replacement value * @return new StatType on which getKey() returns as specified */ public StatType materialize(String value); }