1 28 29 package com.idaremedia.antx.capture; 30 31 import com.idaremedia.antx.AntX; 32 import com.idaremedia.antx.AntXFixture; 33 import com.idaremedia.antx.FixtureAdministrator; 34 import com.idaremedia.antx.FixtureOverlays; 35 import com.idaremedia.antx.FixtureIds; 36 import com.idaremedia.antx.KillMethod; 37 import com.idaremedia.antx.KillMethodSkeleton; 38 import com.idaremedia.antx.apis.ProblemHandler; 39 import com.idaremedia.antx.helpers.Strings; 40 41 54 55 public final class CapturedLogs implements FixtureAdministrator 56 { 57 private static final String WHOAMI_ = "CapturedLogs"; 58 59 60 63 public static final String ANTLOG= 64 FixtureIds.ANT_LOGS_RECORDER; 65 66 67 70 public static final String SYSTEM= 71 FixtureIds.SYSTEM_STREAMS_RECORDER; 72 73 74 75 80 public static LogsRecorder getRecorder() 81 { 82 FixtureOverlays context = FixtureOverlays.getContextInstance(); 83 return (LogsRecorder)context.nearest(ANTLOG); 84 } 85 86 87 88 93 public static LogsRecorder getRecorderNoNull() 94 { 95 LogsRecorder r = getRecorder(); 96 return (r!=null) ? r : EmptyLogs.INSTANCE; 97 } 98 99 100 101 110 public static LogsRecorder installRecorder(LogsRecorder lr, 111 ProblemHandler noInstallHandler) 112 { 113 if (lr==null) { 114 throw new IllegalArgumentException 115 (AntX.uistrs().get("brul.logs.nul.recorder")); 116 } 117 return (LogsRecorder)FixtureOverlays.installIfNot 118 (ANTLOG, lr, noInstallHandler, WHOAMI_); 119 } 120 121 122 123 130 public static void unwindRecorder(ProblemHandler noUninstallHandler) 131 { 132 FixtureOverlays.uninstallIfIs(ANTLOG,noUninstallHandler,WHOAMI_); 133 } 134 135 136 137 143 public static LogsRecorder getStdIORecorder() 144 { 145 FixtureOverlays context = FixtureOverlays.getContextInstance(); 146 return (LogsRecorder)context.nearest(SYSTEM); 147 } 148 149 150 151 158 public static LogsRecorder getStdIORecorderNoNull() 159 { 160 LogsRecorder r = getStdIORecorder(); 161 return (r!=null) ? r : EmptyLogs.INSTANCE; 162 } 163 164 165 166 176 public static LogsRecorder installStdIORecorder(LogsRecorder lr, 177 ProblemHandler noInstallHandler) 178 { 179 if (lr==null) { 180 throw new IllegalArgumentException 181 (AntX.uistrs().get("brul.logs.nul.recorder")); 182 } 183 return (LogsRecorder)FixtureOverlays.installIfNot 184 (SYSTEM, lr, noInstallHandler, WHOAMI_); 185 } 186 187 188 189 197 public static void unwindStdIORecorder(ProblemHandler noUninstallHandler) 198 { 199 FixtureOverlays.uninstallIfIs(SYSTEM,noUninstallHandler,WHOAMI_); 200 } 201 202 203 204 205 private CapturedLogs() 206 { } 207 208 209 210 217 static { 218 AntXFixture.setKillMethod 219 (SYSTEM, 220 new String [] {"stdio","stdout","stderr"}, 221 new KillMethodSkeleton(SYSTEM, WHOAMI_)); 222 223 AntXFixture.setKillMethod 224 (ANTLOG, 225 new String [] {"antlogs"}, 226 new KillMethodSkeleton(ANTLOG, WHOAMI_)); 227 228 229 AntXFixture.setKillMethod 231 (FixtureIds.CAPTURED_LOG_OUTPUTS, 232 new String [] {"iocapture", "outputrecorders"}, 233 new KillMethod() { 234 public boolean kill(ProblemHandler from) { 235 FixtureOverlays iteration = FixtureOverlays.getContextInstance(); 236 synchronized(iteration) { 237 iteration.clear(CapturedLogs.ANTLOG); 238 iteration.clear(CapturedLogs.SYSTEM); 239 } 240 return true; 241 } 242 public boolean kill(String target, ProblemHandler from) { 243 if (Strings.ALL.equals(target)) { 244 return kill(from); 245 } 246 return true; 247 } 248 } 249 ); 250 } 251 } 252 253 254 | Popular Tags |