001 /* 002 * This file is part of the Jikes RVM project (http://jikesrvm.org). 003 * 004 * This file is licensed to You under the Eclipse Public License (EPL); 005 * You may not use this file except in compliance with the License. You 006 * may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/eclipse-1.0.php 009 * 010 * See the COPYRIGHT.txt file distributed with this work for information 011 * regarding copyright ownership. 012 */ 013 package org.vmutil.options; 014 015 import org.vmmagic.pragma.Uninterruptible; 016 017 /** 018 * An option that has a simple string value. 019 */ 020 public class StringOption extends Option { 021 // values 022 protected String defaultValue; 023 protected String value; 024 025 /** 026 * Create a new string option. 027 * 028 * @param set The option set this option belongs to. 029 * @param name The space separated name for the option. 030 * @param desc The purpose of the option 031 * @param defaultValue The default value of the option. 032 */ 033 protected StringOption(OptionSet set, String name, String desc, String defaultValue) { 034 super(set, STRING_OPTION, name, desc); 035 this.value = this.defaultValue = defaultValue; 036 } 037 038 /** 039 * Read the current value of the option. 040 * 041 * @return The option value. 042 */ 043 @Uninterruptible 044 public String getValue() { 045 return this.value; 046 } 047 048 /** 049 * Read the default value of the option 050 * 051 * @return The default value. 052 */ 053 @Uninterruptible 054 public String getDefaultValue() { 055 return this.defaultValue; 056 } 057 058 /** 059 * Update the value of the option, echoing the change if the echoOptions 060 * option is set. This method also calls the validate method to allow 061 * subclasses to perform any required validation. 062 * 063 * @param value The new value for the option. 064 */ 065 public void setValue(String value) { 066 this.value = value; 067 validate(); 068 set.logChange(this); 069 } 070 071 /** 072 * Modify the default value of the option. 073 * 074 * @param value The new default value for the option. 075 */ 076 public void setDefaultValue(String value) { 077 this.value = this.defaultValue = value; 078 } 079 }