001package org.cache2k.impl.util; 002 003/* 004 * #%L 005 * cache2k core package 006 * %% 007 * Copyright (C) 2000 - 2015 headissue GmbH, Munich 008 * %% 009 * This program is free software: you can redistribute it and/or modify 010 * it under the terms of the GNU General Public License as 011 * published by the Free Software Foundation, either version 3 of the 012 * License, or (at your option) any later version. 013 * 014 * This program is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 * GNU General Public License for more details. 018 * 019 * You should have received a copy of the GNU General Public 020 * License along with this program. If not, see 021 * <http://www.gnu.org/licenses/gpl-3.0.html>. 022 * #L% 023 */ 024 025/** 026 * Base class of all classes that contain code constants. For each 027 * cache2k implementation class constants a centralized within an inner class. 028 * The rationale behind this is explained in the following. 029 * 030 * <p/>Wisely chosen constants are sometimes buried within the code. 031 * These are the so called "magic numbers". So lets give them a default 032 * place. 033 * 034 * <p/>There may be a need to change such a "constant". This provides a simple system 035 * wide mechanism to change a parameter, aka "tune" it. So, this can be used for 036 * performance optimizations. It may be also possible to provide a tuning 037 * set that goes tunes towards execution time or towards space efficiency. 038 * 039 * <p/>Testing: Some code has operations that happen very seldom, e.g. for 040 * reorganizing. For testing purposes we can trigger these situations by 041 * de-tuning. 042 * 043 * <p/>If there is a constant need to change a constant, please open a change 044 * request. Either it is better to change the tunable constant to a real parameter 045 * or a assign it to another value which fits the general purpose better. 046 * 047 * @author Jens Wilke; created: 2014-04-27 048 */ 049public class TunableConstants implements Cloneable { 050 051 @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException") 052 @Override 053 public Object clone() { 054 try { 055 Object o = super.clone(); 056 return o; 057 } catch (CloneNotSupportedException e) { 058 throw new UnsupportedOperationException("never happens", e); 059 } 060 } 061 062}