001package org.javasimon; 002 003import org.javasimon.callback.CompositeCallback; 004 005import java.util.Collection; 006import java.util.Collections; 007 008/** 009 * {@link Manager} implementation that does nothing or returns {@code null} or {@link NullSimon} as expected 010 * from manager in disabled state. Does not support {@link #enable()}/{@link #disable()} - for this 011 * use {@link SwitchingManager}. 012 * 013 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a> 014 */ 015public final class DisabledManager implements Manager { 016 017 /** 018 * Returns "Null Simon" that always returns empty/null values and cannot measure anything. 019 * Null Simon returned by this method is neither {@link Stopwatch} nor {@link Counter}. 020 * 021 * @param name ignored 022 * @return null Simon 023 */ 024 @Override 025 public Simon getSimon(String name) { 026 return NullSimon.INSTANCE; 027 } 028 029 @Override 030 public void destroySimon(String name) { 031 } 032 033 @Override 034 public void clear() { 035 } 036 037 @Override 038 public CompositeCallback callback() { 039 return null; 040 } 041 042 @Override 043 public ManagerConfiguration configuration() { 044 return null; 045 } 046 047 /** 048 * Returns "Null Counter" that always returns empty/null values and cannot measure anything. 049 * 050 * @param name ignored 051 * @return null Counter 052 */ 053 @Override 054 public Counter getCounter(String name) { 055 return NullCounter.INSTANCE; 056 } 057 058 /** 059 * Returns "Null Stopwatch" that always returns empty/null values and cannot measure anything. 060 * 061 * @param name ignored 062 * @return null Stopwatch 063 */ 064 @Override 065 public Stopwatch getStopwatch(String name) { 066 return NullStopwatch.INSTANCE; 067 } 068 069 /** 070 * Returns "Null Simon" that always returns empty/null values and cannot measure anything. 071 * Null Simon returned by this method is neither {@link Stopwatch} nor {@link Counter}. 072 * 073 * @return null Simon 074 */ 075 @Override 076 public Simon getRootSimon() { 077 return NullSimon.INSTANCE; 078 } 079 080 @Override 081 public Collection<String> getSimonNames() { 082 return Collections.emptyList(); 083 } 084 085 @Override 086 public Collection<Simon> getSimons(SimonFilter simonFilter) { 087 return Collections.emptyList(); 088 } 089 090 /** Throws {@link UnsupportedOperationException}. */ 091 @Override 092 public void enable() { 093 throw new UnsupportedOperationException("Only SwitchingManager supports this operation."); 094 } 095 096 /** Throws {@link UnsupportedOperationException}. */ 097 @Override 098 public void disable() { 099 throw new UnsupportedOperationException("Only SwitchingManager supports this operation."); 100 } 101 102 /** 103 * Returns false. 104 * 105 * @return false 106 */ 107 @Override 108 public boolean isEnabled() { 109 return false; 110 } 111 112 /** 113 * Does nothing here. 114 * 115 * @param message not used 116 */ 117 @Override 118 public void message(String message) { 119 } 120 121 /** 122 * Does nothing here. 123 * 124 * @param message not used 125 * @param cause not used 126 */ 127 @Override 128 public void warning(String message, Exception cause) { 129 } 130 131 @Override 132 public long nanoTime() { 133 return 0; 134 } 135 136 @Override 137 public long milliTime() { 138 return 0; 139 } 140 141 @Override 142 public long millisForNano(long nanos) { 143 return 0; 144 } 145}