1 /* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.tradefed.config; 18 19 import com.android.tradefed.build.BuildRetrievalError; 20 import com.android.tradefed.build.IBuildProvider; 21 import com.android.tradefed.command.ICommandOptions; 22 import com.android.tradefed.config.filter.GlobalTestFilter; 23 import com.android.tradefed.device.IDeviceRecovery; 24 import com.android.tradefed.device.IDeviceSelection; 25 import com.android.tradefed.device.TestDeviceOptions; 26 import com.android.tradefed.device.metric.IMetricCollector; 27 import com.android.tradefed.log.ILeveledLogOutput; 28 import com.android.tradefed.postprocessor.IPostProcessor; 29 import com.android.tradefed.result.ILogSaver; 30 import com.android.tradefed.result.ITestInvocationListener; 31 import com.android.tradefed.result.skipped.SkipManager; 32 import com.android.tradefed.retry.IRetryDecision; 33 import com.android.tradefed.suite.checker.ISystemStatusChecker; 34 import com.android.tradefed.targetprep.ITargetPreparer; 35 import com.android.tradefed.targetprep.multi.IMultiTargetPreparer; 36 import com.android.tradefed.testtype.IRemoteTest; 37 import com.android.tradefed.testtype.coverage.CoverageOptions; 38 import com.android.tradefed.util.keystore.IKeyStoreClient; 39 40 import java.io.File; 41 import java.io.IOException; 42 import java.io.PrintStream; 43 import java.io.PrintWriter; 44 import java.util.Collection; 45 import java.util.List; 46 import java.util.Set; 47 48 /** 49 * Configuration information for a TradeFederation invocation. 50 * 51 * Each TradeFederation invocation has a single {@link IConfiguration}. An {@link IConfiguration} 52 * stores all the delegate objects that should be used during the invocation, and their associated 53 * {@link Option}'s 54 */ 55 public interface IConfiguration { 56 57 /** Returns the name of the configuration. */ getName()58 public String getName(); 59 60 /** 61 * Gets the {@link IBuildProvider} from the configuration. 62 * 63 * @return the {@link IBuildProvider} provided in the configuration 64 */ getBuildProvider()65 public IBuildProvider getBuildProvider(); 66 67 /** 68 * Gets the {@link ITargetPreparer}s from the configuration. 69 * 70 * @return the {@link ITargetPreparer}s provided in order in the configuration 71 */ getTargetPreparers()72 public List<ITargetPreparer> getTargetPreparers(); 73 74 /** 75 * Gets the {@link ITargetPreparer}s from the configuration. 76 * 77 * @return the {@link ITargetPreparer}s provided in order in the configuration 78 */ getLabPreparers()79 public List<ITargetPreparer> getLabPreparers(); 80 81 /** 82 * Gets the {@link IRemoteTest}s to run from the configuration. 83 * 84 * @return the tests provided in the configuration 85 */ getTests()86 public List<IRemoteTest> getTests(); 87 88 /** 89 * Gets the {@link ITestInvocationListener}s to use from the configuration. 90 * 91 * @return the {@link ITestInvocationListener}s provided in the configuration. 92 */ getTestInvocationListeners()93 public List<ITestInvocationListener> getTestInvocationListeners(); 94 95 /** 96 * Gets the {@link IDeviceRecovery} to use from the configuration. 97 * 98 * @return the {@link IDeviceRecovery} provided in the configuration. 99 */ getDeviceRecovery()100 public IDeviceRecovery getDeviceRecovery(); 101 102 /** 103 * Gets the {@link TestDeviceOptions} to use from the configuration. 104 * 105 * @return the {@link TestDeviceOptions} provided in the configuration. 106 */ getDeviceOptions()107 public TestDeviceOptions getDeviceOptions(); 108 109 /** 110 * Gets the {@link ILeveledLogOutput} to use from the configuration. 111 * 112 * @return the {@link ILeveledLogOutput} provided in the configuration. 113 */ getLogOutput()114 public ILeveledLogOutput getLogOutput(); 115 116 /** 117 * Gets the {@link ILogSaver} to use from the configuration. 118 * 119 * @return the {@link ILogSaver} provided in the configuration. 120 */ getLogSaver()121 public ILogSaver getLogSaver(); 122 123 /** Returns the {@link IRetryDecision} used for the invocation. */ getRetryDecision()124 public IRetryDecision getRetryDecision(); 125 126 /** 127 * Gets the {@link IMultiTargetPreparer}s from the configuration. 128 * 129 * @return the {@link IMultiTargetPreparer}s provided in order in the configuration 130 */ getMultiTargetPreparers()131 public List<IMultiTargetPreparer> getMultiTargetPreparers(); 132 133 /** 134 * Gets the {@link IMultiTargetPreparer}s from the configuration that should be executed before 135 * any of the devices target_preparers. 136 * 137 * @return the {@link IMultiTargetPreparer}s provided in order in the configuration 138 */ getMultiPreTargetPreparers()139 public List<IMultiTargetPreparer> getMultiPreTargetPreparers(); 140 141 /** 142 * Gets the {@link ISystemStatusChecker}s from the configuration. 143 * 144 * @return the {@link ISystemStatusChecker}s provided in order in the configuration 145 */ getSystemStatusCheckers()146 public List<ISystemStatusChecker> getSystemStatusCheckers(); 147 148 /** Gets the {@link IMetricCollector}s from the configuration. */ getMetricCollectors()149 public List<IMetricCollector> getMetricCollectors(); 150 151 /** Gets the {@link IPostProcessor}s from the configuration. */ getPostProcessors()152 public List<IPostProcessor> getPostProcessors(); 153 154 /** 155 * Gets the {@link ICommandOptions} to use from the configuration. 156 * 157 * @return the {@link ICommandOptions} provided in the configuration. 158 */ getCommandOptions()159 public ICommandOptions getCommandOptions(); 160 161 /** Returns the {@link ConfigurationDescriptor} provided in the configuration. */ getConfigurationDescription()162 public ConfigurationDescriptor getConfigurationDescription(); 163 164 /** 165 * Gets the {@link IDeviceSelection} to use from the configuration. 166 * 167 * @return the {@link IDeviceSelection} provided in the configuration. 168 */ getDeviceRequirements()169 public IDeviceSelection getDeviceRequirements(); 170 171 /** 172 * Gets the {@link CoverageOptions} to use from the configuration. 173 * 174 * @return the {@link CoverageOptions} provided in the configuration. 175 */ getCoverageOptions()176 public CoverageOptions getCoverageOptions(); 177 178 /** Gets the {@link GlobalTestFilter} for the invocation. */ getGlobalFilters()179 public GlobalTestFilter getGlobalFilters(); 180 181 /** Gets the {@link SkipManager} for the invocation. */ getSkipManager()182 public SkipManager getSkipManager(); 183 184 /** 185 * Generic interface to get the configuration object with the given type name. 186 * 187 * @param typeName the unique type of the configuration object 188 * 189 * @return the configuration object or <code>null</code> if the object type with given name 190 * does not exist. 191 */ getConfigurationObject(String typeName)192 public Object getConfigurationObject(String typeName); 193 194 /** 195 * Generic interface to get all the object of one given type name across devices. 196 * 197 * @param typeName the unique type of the configuration object 198 * @return The list of configuration objects of the given type. 199 */ getAllConfigurationObjectsOfType(String typeName)200 public Collection<Object> getAllConfigurationObjectsOfType(String typeName); 201 202 /** 203 * Similar to {@link #getConfigurationObject(String)}, but for configuration 204 * object types that support multiple objects. 205 * 206 * @param typeName the unique type name of the configuration object 207 * 208 * @return the list of configuration objects or <code>null</code> if the object type with 209 * given name does not exist. 210 */ getConfigurationObjectList(String typeName)211 public List<?> getConfigurationObjectList(String typeName); 212 213 /** 214 * Gets the {@link IDeviceConfiguration}s from the configuration. 215 * 216 * @return the {@link IDeviceConfiguration}s provided in order in the configuration 217 */ getDeviceConfig()218 public List<IDeviceConfiguration> getDeviceConfig(); 219 220 /** 221 * Return the {@link IDeviceConfiguration} associated to the name provided, null if not found. 222 */ getDeviceConfigByName(String nameDevice)223 public IDeviceConfiguration getDeviceConfigByName(String nameDevice); 224 225 /** 226 * Inject a option value into the set of configuration objects. 227 * <p/> 228 * Useful to provide values for options that are generated dynamically. 229 * 230 * @param optionName the option name 231 * @param optionValue the option value 232 * @throws ConfigurationException if failed to set the option's value 233 */ injectOptionValue(String optionName, String optionValue)234 public void injectOptionValue(String optionName, String optionValue) 235 throws ConfigurationException; 236 237 /** 238 * Inject a option value into the set of configuration objects. 239 * <p/> 240 * Useful to provide values for options that are generated dynamically. 241 * 242 * @param optionName the option name 243 * @param optionKey the optional key for map options, or null 244 * @param optionValue the map option value 245 * @throws ConfigurationException if failed to set the option's value 246 */ injectOptionValue(String optionName, String optionKey, String optionValue)247 public void injectOptionValue(String optionName, String optionKey, String optionValue) 248 throws ConfigurationException; 249 250 /** 251 * Inject a option value into the set of configuration objects. 252 * <p/> 253 * Useful to provide values for options that are generated dynamically. 254 * 255 * @param optionName the option name 256 * @param optionKey the optional key for map options, or null 257 * @param optionValue the map option value 258 * @param optionSource the source config that provided this option value 259 * @throws ConfigurationException if failed to set the option's value 260 */ injectOptionValueWithSource(String optionName, String optionKey, String optionValue, String optionSource)261 public void injectOptionValueWithSource(String optionName, String optionKey, String optionValue, 262 String optionSource) throws ConfigurationException; 263 264 /** 265 * Inject multiple option values into the set of configuration objects. 266 * <p/> 267 * Useful to inject many option values at once after creating a new object. 268 * 269 * @param optionDefs a list of option defs to inject 270 * @throws ConfigurationException if failed to set option values 271 */ injectOptionValues(List<OptionDef> optionDefs)272 public void injectOptionValues(List<OptionDef> optionDefs) throws ConfigurationException; 273 274 /** 275 * Inject multiple option values into the set of configuration objects without throwing if one 276 * of the option cannot be applied. 277 * 278 * <p>Useful to inject many option values at once after creating a new object. 279 * 280 * @param optionDefs a list of option defs to inject 281 * @throws ConfigurationException if failed to create the {@link OptionSetter} 282 */ safeInjectOptionValues(List<OptionDef> optionDefs)283 public void safeInjectOptionValues(List<OptionDef> optionDefs) throws ConfigurationException; 284 285 /** 286 * Create a shallow copy of this object. 287 * 288 * @return a {link IConfiguration} copy 289 */ clone()290 public IConfiguration clone(); 291 292 /** 293 * Create a base clone from {@link #clone()} then deep clone the list of given config object. 294 * 295 * @param objectToDeepClone The list of configuration object to deep clone. 296 * @param client The keystore client. 297 * @return The partially deep cloned config. 298 * @throws ConfigurationException 299 */ partialDeepClone(List<String> objectToDeepClone, IKeyStoreClient client)300 public IConfiguration partialDeepClone(List<String> objectToDeepClone, IKeyStoreClient client) 301 throws ConfigurationException; 302 303 /** 304 * Replace the current {@link IBuildProvider} in the configuration. 305 * 306 * @param provider the new {@link IBuildProvider} 307 */ setBuildProvider(IBuildProvider provider)308 public void setBuildProvider(IBuildProvider provider); 309 310 /** 311 * Set the {@link ILeveledLogOutput}, replacing any existing value. 312 * 313 * @param logger 314 */ setLogOutput(ILeveledLogOutput logger)315 public void setLogOutput(ILeveledLogOutput logger); 316 317 /** 318 * Set the {@link IRetryDecision}, replacing any existing value. 319 * 320 * @param decisionRetry 321 */ setRetryDecision(IRetryDecision decisionRetry)322 public void setRetryDecision(IRetryDecision decisionRetry); 323 324 /** 325 * Set the {@link ILogSaver}, replacing any existing value. 326 * 327 * @param logSaver 328 */ setLogSaver(ILogSaver logSaver)329 public void setLogSaver(ILogSaver logSaver); 330 331 /** 332 * Set the {@link IDeviceRecovery}, replacing any existing value. 333 * 334 * @param recovery 335 */ setDeviceRecovery(IDeviceRecovery recovery)336 public void setDeviceRecovery(IDeviceRecovery recovery); 337 338 /** 339 * Set the {@link ITargetPreparer}, replacing any existing value. 340 * 341 * @param preparer 342 */ setTargetPreparer(ITargetPreparer preparer)343 public void setTargetPreparer(ITargetPreparer preparer); 344 345 /** 346 * Set the list of {@link ITargetPreparer}s, replacing any existing value. 347 * 348 * @param preparers 349 */ setTargetPreparers(List<ITargetPreparer> preparers)350 public void setTargetPreparers(List<ITargetPreparer> preparers); 351 352 /** 353 * Set the {@link ITargetPreparer}, replacing any existing value. 354 * 355 * @param preparer 356 */ setLabPreparer(ITargetPreparer preparer)357 public void setLabPreparer(ITargetPreparer preparer); 358 359 /** 360 * Set the list of {@link ITargetPreparer}s, replacing any existing value. 361 * 362 * @param preparers 363 */ setLabPreparers(List<ITargetPreparer> preparers)364 public void setLabPreparers(List<ITargetPreparer> preparers); 365 366 /** 367 * Set a {@link IDeviceConfiguration}, replacing any existing value. 368 * 369 * @param deviceConfig 370 */ setDeviceConfig(IDeviceConfiguration deviceConfig)371 public void setDeviceConfig(IDeviceConfiguration deviceConfig); 372 373 /** 374 * Set the {@link IDeviceConfiguration}s, replacing any existing value. 375 * 376 * @param deviceConfigs 377 */ setDeviceConfigList(List<IDeviceConfiguration> deviceConfigs)378 public void setDeviceConfigList(List<IDeviceConfiguration> deviceConfigs); 379 380 /** 381 * Convenience method to set a single {@link IRemoteTest} in this configuration, replacing any 382 * existing values 383 * 384 * @param test 385 */ setTest(IRemoteTest test)386 public void setTest(IRemoteTest test); 387 388 /** 389 * Set the list of {@link IRemoteTest}s in this configuration, replacing any 390 * existing values 391 * 392 * @param tests 393 */ setTests(List<IRemoteTest> tests)394 public void setTests(List<IRemoteTest> tests); 395 396 /** 397 * Set the list of {@link IMultiTargetPreparer}s in this configuration, replacing any 398 * existing values 399 * 400 * @param multiTargPreps 401 */ setMultiTargetPreparers(List<IMultiTargetPreparer> multiTargPreps)402 public void setMultiTargetPreparers(List<IMultiTargetPreparer> multiTargPreps); 403 404 /** 405 * Convenience method to set a single {@link IMultiTargetPreparer} in this configuration, 406 * replacing any existing values 407 * 408 * @param multiTargPrep 409 */ setMultiTargetPreparer(IMultiTargetPreparer multiTargPrep)410 public void setMultiTargetPreparer(IMultiTargetPreparer multiTargPrep); 411 412 /** 413 * Set the list of {@link IMultiTargetPreparer}s in this configuration that should be executed 414 * before any of the devices target_preparers, replacing any existing values 415 * 416 * @param multiPreTargPreps 417 */ setMultiPreTargetPreparers(List<IMultiTargetPreparer> multiPreTargPreps)418 public void setMultiPreTargetPreparers(List<IMultiTargetPreparer> multiPreTargPreps); 419 420 /** 421 * Convenience method to set a single {@link IMultiTargetPreparer} in this configuration that 422 * should be executed before any of the devices target_preparers, replacing any existing values 423 * 424 * @param multiPreTargPreps 425 */ setMultiPreTargetPreparer(IMultiTargetPreparer multiPreTargPreps)426 public void setMultiPreTargetPreparer(IMultiTargetPreparer multiPreTargPreps); 427 428 /** 429 * Set the list of {@link ISystemStatusChecker}s in this configuration, replacing any 430 * existing values 431 * 432 * @param systemCheckers 433 */ setSystemStatusCheckers(List<ISystemStatusChecker> systemCheckers)434 public void setSystemStatusCheckers(List<ISystemStatusChecker> systemCheckers); 435 436 /** 437 * Convenience method to set a single {@link ISystemStatusChecker} in this configuration, 438 * replacing any existing values 439 * 440 * @param systemChecker 441 */ setSystemStatusChecker(ISystemStatusChecker systemChecker)442 public void setSystemStatusChecker(ISystemStatusChecker systemChecker); 443 444 /** 445 * Set the list of {@link ITestInvocationListener}s, replacing any existing values 446 * 447 * @param listeners 448 */ setTestInvocationListeners(List<ITestInvocationListener> listeners)449 public void setTestInvocationListeners(List<ITestInvocationListener> listeners); 450 451 /** 452 * Convenience method to set a single {@link ITestInvocationListener} 453 * 454 * @param listener 455 */ setTestInvocationListener(ITestInvocationListener listener)456 public void setTestInvocationListener(ITestInvocationListener listener); 457 458 /** Set the list of {@link IMetricCollector}s, replacing any existing values. */ setDeviceMetricCollectors(List<IMetricCollector> collectors)459 public void setDeviceMetricCollectors(List<IMetricCollector> collectors); 460 461 /** Set the list of {@link IPostProcessor}s, replacing any existing values. */ setPostProcessors(List<IPostProcessor> processors)462 public void setPostProcessors(List<IPostProcessor> processors); 463 464 /** 465 * Set the {@link ICommandOptions}, replacing any existing values 466 * 467 * @param cmdOptions 468 */ setCommandOptions(ICommandOptions cmdOptions)469 public void setCommandOptions(ICommandOptions cmdOptions); 470 471 /** 472 * Set the {@link IDeviceSelection}, replacing any existing values 473 * 474 * @param deviceSelection 475 */ setDeviceRequirements(IDeviceSelection deviceSelection)476 public void setDeviceRequirements(IDeviceSelection deviceSelection); 477 478 /** 479 * Set the {@link TestDeviceOptions}, replacing any existing values 480 */ setDeviceOptions(TestDeviceOptions deviceOptions)481 public void setDeviceOptions(TestDeviceOptions deviceOptions); 482 483 /** Set the {@link CoverageOptions}, replacing any existing values. */ setCoverageOptions(CoverageOptions coverageOptions)484 public void setCoverageOptions(CoverageOptions coverageOptions); 485 486 /** 487 * Generic method to set the config object with the given name, replacing any existing value. 488 * 489 * @param name the unique name of the config object type. 490 * @param configObject the config object 491 * @throws ConfigurationException if the configObject was not the correct type 492 */ setConfigurationObject(String name, Object configObject)493 public void setConfigurationObject(String name, Object configObject) 494 throws ConfigurationException; 495 496 /** 497 * Generic method to set the config object list for the given name, replacing any existing 498 * value. 499 * 500 * @param name the unique name of the config object type. 501 * @param configList the config object list 502 * @throws ConfigurationException if any objects in the list are not the correct type 503 */ setConfigurationObjectList(String name, List<?> configList)504 public void setConfigurationObjectList(String name, List<?> configList) 505 throws ConfigurationException; 506 507 /** Returns whether or not a configured device is tagged isFake=true or not. */ isDeviceConfiguredFake(String deviceName)508 public boolean isDeviceConfiguredFake(String deviceName); 509 510 /** 511 * Set the config {@link Option} fields with given set of command line arguments 512 * <p/> 513 * {@link ArgsOptionParser} for expected format 514 * 515 * @param listArgs the command line arguments 516 * @return the unconsumed arguments 517 */ setOptionsFromCommandLineArgs(List<String> listArgs)518 public List<String> setOptionsFromCommandLineArgs(List<String> listArgs) 519 throws ConfigurationException; 520 521 /** 522 * Set the config {@link Option} fields with given set of command line arguments 523 * <p/> 524 * See {@link ArgsOptionParser} for expected format 525 * 526 * @param listArgs the command line arguments 527 * @param keyStoreClient {@link IKeyStoreClient} to use. 528 * @return the unconsumed arguments 529 */ setOptionsFromCommandLineArgs(List<String> listArgs, IKeyStoreClient keyStoreClient)530 public List<String> setOptionsFromCommandLineArgs(List<String> listArgs, 531 IKeyStoreClient keyStoreClient) 532 throws ConfigurationException; 533 534 /** 535 * Set the config {@link Option} fields with given set of command line arguments using a best 536 * effort approach. 537 * 538 * <p>See {@link ArgsOptionParser} for expected format 539 * 540 * @param listArgs the command line arguments 541 * @param keyStoreClient {@link IKeyStoreClient} to use. 542 * @return the unconsumed arguments 543 */ setBestEffortOptionsFromCommandLineArgs( List<String> listArgs, IKeyStoreClient keyStoreClient)544 public List<String> setBestEffortOptionsFromCommandLineArgs( 545 List<String> listArgs, IKeyStoreClient keyStoreClient) throws ConfigurationException; 546 547 /** 548 * Outputs a command line usage help text for this configuration to given printStream. 549 * 550 * @param importantOnly if <code>true</code> only print help for the important options 551 * @param out the {@link PrintStream} to use. 552 * @throws ConfigurationException 553 */ printCommandUsage(boolean importantOnly, PrintStream out)554 public void printCommandUsage(boolean importantOnly, PrintStream out) 555 throws ConfigurationException; 556 557 /** 558 * Validate option values. 559 * <p/> 560 * Currently this will just validate that all mandatory options have been set 561 * 562 * @throws ConfigurationException if config is not valid 563 */ validateOptions()564 public void validateOptions() throws ConfigurationException; 565 566 /** 567 * Resolve options of {@link File} pointing to a remote location. This requires {@link 568 * #cleanConfigurationData()} to be called to clean up the files. 569 * 570 * @param resolver the {@link DynamicRemoteFileResolver} to resolve the files 571 * @throws BuildRetrievalError 572 * @throws ConfigurationException 573 */ resolveDynamicOptions(DynamicRemoteFileResolver resolver)574 public void resolveDynamicOptions(DynamicRemoteFileResolver resolver) 575 throws ConfigurationException, BuildRetrievalError; 576 577 /** Delete any files that was downloaded to resolved Option fields of remote files. */ cleanConfigurationData()578 public void cleanConfigurationData(); 579 580 /** Add files that must be cleaned during {@link #cleanConfigurationData()} */ addFilesToClean(Set<File> toBeCleaned)581 public void addFilesToClean(Set<File> toBeCleaned); 582 583 /** Get the list of files that will be cleaned during {@link #cleanConfigurationData()} */ getFilesToClean()584 public Set<File> getFilesToClean(); 585 586 /** Get the option names that did not change any values */ getInopOptions()587 public Set<String> getInopOptions(); 588 589 /** 590 * Sets the command line used to create this {@link IConfiguration}. 591 * This stores the whole command line, including the configuration name, 592 * unlike setOptionsFromCommandLineArgs. 593 * 594 * @param arrayArgs the command line 595 */ setCommandLine(String[] arrayArgs)596 public void setCommandLine(String[] arrayArgs); 597 598 /** 599 * Gets the command line used to create this {@link IConfiguration}. 600 * 601 * @return the command line used to create this {@link IConfiguration}. 602 */ getCommandLine()603 public String getCommandLine(); 604 605 /** 606 * Gets the expanded XML file for the config with all options shown for this 607 * {@link IConfiguration} as a {@link String}. 608 * 609 * @param output the writer to print the xml to. 610 * @throws IOException 611 */ dumpXml(PrintWriter output)612 public void dumpXml(PrintWriter output) throws IOException; 613 614 /** 615 * Gets the expanded XML file for the config with all options shown for this {@link 616 * IConfiguration} minus the objects filters by their key name. 617 * 618 * <p>Filter example: {@link Configuration#TARGET_PREPARER_TYPE_NAME}. 619 * 620 * @param output the writer to print the xml to. 621 * @param excludeFilters the list of object type that should not be dumped. 622 * @throws IOException 623 */ dumpXml(PrintWriter output, List<String> excludeFilters)624 public void dumpXml(PrintWriter output, List<String> excludeFilters) throws IOException; 625 626 /** 627 * Gets the expanded XML file for the config with all options shown for this {@link 628 * IConfiguration} minus the objects filters by their key name. 629 * 630 * <p>Filter example: {@link Configuration#TARGET_PREPARER_TYPE_NAME}. 631 * 632 * @param output the writer to print the xml to. 633 * @param excludeFilters the list of object type that should not be dumped. 634 * @param printDeprecatedOptions Whether or not to print options marked as deprecated 635 * @throws IOException 636 */ dumpXml( PrintWriter output, List<String> excludeFilters, boolean printDeprecatedOptions, boolean printUnchangedOptions)637 public void dumpXml( 638 PrintWriter output, 639 List<String> excludeFilters, 640 boolean printDeprecatedOptions, 641 boolean printUnchangedOptions) 642 throws IOException; 643 } 644