Author: jflesch
Date: 2008-02-13 21:31:43 +0000 (Wed, 13 Feb 2008)
New Revision: 17877
Modified:
trunk/freenet/src/freenet/config/BooleanOption.java
trunk/freenet/src/freenet/config/Config.java
trunk/freenet/src/freenet/config/IntOption.java
trunk/freenet/src/freenet/config/LongOption.java
trunk/freenet/src/freenet/config/Option.java
trunk/freenet/src/freenet/config/ShortOption.java
trunk/freenet/src/freenet/config/StringArrOption.java
trunk/freenet/src/freenet/config/StringOption.java
trunk/freenet/src/freenet/config/SubConfig.java
trunk/freenet/src/freenet/node/fcp/ConfigData.java
trunk/freenet/src/freenet/node/fcp/GetConfig.java
trunk/freenet/src/freenet/node/fcp/ModifyConfig.java
Log:
Config / FCP : ConfigData message can now also specify the type of data
expected for each field (number, string, boolean, etc)
Modified: trunk/freenet/src/freenet/config/BooleanOption.java
===================================================================
--- trunk/freenet/src/freenet/config/BooleanOption.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/BooleanOption.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -14,7 +14,7 @@
public BooleanOption(SubConfig conf, String optionName, boolean
defaultValue, int sortOrder,
boolean expert, boolean forceWrite, String shortDesc,
String longDesc, BooleanCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_BOOLEAN);
this.defaultValue = defaultValue;
this.cb = cb;
this.currentValue = defaultValue;
Modified: trunk/freenet/src/freenet/config/Config.java
===================================================================
--- trunk/freenet/src/freenet/config/Config.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/Config.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -17,6 +17,7 @@
public static final int CONFIG_REQUEST_TYPE_FORCE_WRITE_FLAG = 5;
public static final int CONFIG_REQUEST_TYPE_SHORT_DESCRIPTION = 6;
public static final int CONFIG_REQUEST_TYPE_LONG_DESCRIPTION = 7;
+ public static final int CONFIG_REQUEST_TYPE_DATA_TYPE = 8;
protected final LinkedHashMap configsByPrefix;
Modified: trunk/freenet/src/freenet/config/IntOption.java
===================================================================
--- trunk/freenet/src/freenet/config/IntOption.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/IntOption.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -18,7 +18,7 @@
public IntOption(SubConfig conf, String optionName, int defaultValue,
String defaultValueString,
int sortOrder, boolean expert, boolean forceWrite,
String shortDesc, String longDesc, IntCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_NUMBER);
this.defaultValue = defaultValue;
this.cb = cb;
this.currentValue = defaultValue;
@@ -27,7 +27,7 @@
public IntOption(SubConfig conf, String optionName, String
defaultValueString,
int sortOrder, boolean expert, boolean forceWrite,
String shortDesc, String longDesc, IntCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_NUMBER);
this.defaultValue = Fields.parseInt(defaultValueString);
this.cb = cb;
this.currentValue = defaultValue;
Modified: trunk/freenet/src/freenet/config/LongOption.java
===================================================================
--- trunk/freenet/src/freenet/config/LongOption.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/LongOption.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -18,7 +18,7 @@
public LongOption(SubConfig conf, String optionName, long defaultValue,
String defaultValueString,
int sortOrder, boolean expert, boolean forceWrite,
String shortDesc, String longDesc, LongCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_NUMBER);
this.defaultValue = defaultValue;
this.cb = cb;
this.currentValue = defaultValue;
@@ -27,7 +27,7 @@
public LongOption(SubConfig conf, String optionName, String
defaultValueString,
int sortOrder, boolean expert, boolean forceWrite,
String shortDesc, String longDesc, LongCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_NUMBER);
this.defaultValue = Fields.parseLong(defaultValueString);
this.cb = cb;
this.currentValue = defaultValue;
Modified: trunk/freenet/src/freenet/config/Option.java
===================================================================
--- trunk/freenet/src/freenet/config/Option.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/Option.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -25,7 +25,15 @@
/** The configCallback associated to the Option */
final ConfigCallback cb;
- Option(SubConfig config, String name, ConfigCallback cb, int sortOrder,
boolean expert, boolean forceWrite, String shortDesc, String longDesc) {
+ public final static int DATA_TYPE_STRING = 0;
+ public final static int DATA_TYPE_NUMBER = 1;
+ public final static int DATA_TYPE_BOOLEAN = 2;
+ public final static int DATA_TYPE_STRING_ARRAY = 3;
+
+ /** Data type : used to make it possible to make user inputs more
friendly in FCP apps */
+ final int dataType;
+
+ Option(SubConfig config, String name, ConfigCallback cb, int sortOrder,
boolean expert, boolean forceWrite, String shortDesc, String longDesc, int
dataType) {
this.config = config;
this.name = name;
this.cb = cb;
@@ -34,6 +42,7 @@
this.shortDesc = shortDesc;
this.longDesc = longDesc;
this.forceWrite = forceWrite;
+ this.dataType = dataType;
}
/**
@@ -84,6 +93,20 @@
public int getSortOrder(){
return sortOrder;
}
+
+ public int getDataType() {
+ return dataType;
+ }
+
+ public String getDataTypeStr() {
+ switch(dataType) {
+ case(DATA_TYPE_STRING): return "string";
+ case(DATA_TYPE_NUMBER): return "number";
+ case(DATA_TYPE_BOOLEAN): return "boolean";
+ case(DATA_TYPE_STRING_ARRAY): return "stringArray";
+ default: return null;
+ }
+ }
/**
* Is this option set to the default?
Modified: trunk/freenet/src/freenet/config/ShortOption.java
===================================================================
--- trunk/freenet/src/freenet/config/ShortOption.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/ShortOption.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -12,7 +12,7 @@
public ShortOption(SubConfig conf, String optionName, short
defaultValue, int sortOrder,
boolean expert, boolean forceWrite, String shortDesc,
String longDesc, ShortCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_NUMBER);
this.defaultValue = defaultValue;
this.cb = cb;
this.currentValue = defaultValue;
Modified: trunk/freenet/src/freenet/config/StringArrOption.java
===================================================================
--- trunk/freenet/src/freenet/config/StringArrOption.java 2008-02-13
19:53:35 UTC (rev 17876)
+++ trunk/freenet/src/freenet/config/StringArrOption.java 2008-02-13
21:31:43 UTC (rev 17877)
@@ -18,7 +18,7 @@
public StringArrOption(SubConfig conf, String optionName, String[]
defaultValue, int sortOrder,
boolean expert, boolean forceWrite, String shortDesc,
String longDesc, StringArrCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_STRING_ARRAY);
this.defaultValue = (defaultValue==null)?new
String[0]:defaultValue;
this.cb = cb;
this.currentValue = (defaultValue==null)?new
String[0]:defaultValue;
Modified: trunk/freenet/src/freenet/config/StringOption.java
===================================================================
--- trunk/freenet/src/freenet/config/StringOption.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/StringOption.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -13,7 +13,7 @@
public StringOption(SubConfig conf, String optionName, String
defaultValue, int sortOrder,
boolean expert, boolean forceWrite, String shortDesc,
String longDesc, StringCallback cb) {
- super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc);
+ super(conf, optionName, cb, sortOrder, expert, forceWrite,
shortDesc, longDesc, Option.DATA_TYPE_STRING);
this.defaultValue = defaultValue;
this.cb = cb;
this.currentValue = defaultValue;
Modified: trunk/freenet/src/freenet/config/SubConfig.java
===================================================================
--- trunk/freenet/src/freenet/config/SubConfig.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/config/SubConfig.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -241,6 +241,9 @@
case
Config.CONFIG_REQUEST_TYPE_LONG_DESCRIPTION:
fs.putSingle(key,
L10n.getString(o.getLongDesc()));
break;
+ case Config.CONFIG_REQUEST_TYPE_DATA_TYPE:
+ fs.putSingle(key, o.getDataTypeStr());
+ break;
default:
Logger.error(this, "Unknown config
request type value: "+configRequestType);
break;
Modified: trunk/freenet/src/freenet/node/fcp/ConfigData.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ConfigData.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/node/fcp/ConfigData.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -18,8 +18,9 @@
final boolean withForceWriteFlag;
final boolean withShortDescription;
final boolean withLongDescription;
+ final boolean withDataTypes;
- public ConfigData(Node node, boolean withCurrent, boolean withDefaults,
boolean withSortOrder, boolean withExpertFlag, boolean withForceWriteFlag,
boolean withShortDescription, boolean withLongDescription) {
+ public ConfigData(Node node, boolean withCurrent, boolean withDefaults,
boolean withSortOrder, boolean withExpertFlag, boolean withForceWriteFlag,
boolean withShortDescription, boolean withLongDescription, boolean
withDataTypes) {
this.node = node;
this.withCurrent = withCurrent;
this.withDefaults = withDefaults;
@@ -28,6 +29,7 @@
this.withForceWriteFlag = withForceWriteFlag;
this.withShortDescription = withShortDescription;
this.withLongDescription = withLongDescription;
+ this.withDataTypes = withDataTypes;
}
@@ -75,6 +77,12 @@
fs.put("longDescription", longDescription);
}
}
+ if(withDataTypes) {
+ SimpleFieldSet type =
node.config.exportFieldSet(Config.CONFIG_REQUEST_TYPE_DATA_TYPE, false);
+ if(!type.isEmpty()) {
+ fs.put("dataType", type);
+ }
+ }
return fs;
}
Modified: trunk/freenet/src/freenet/node/fcp/GetConfig.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/GetConfig.java 2008-02-13 19:53:35 UTC
(rev 17876)
+++ trunk/freenet/src/freenet/node/fcp/GetConfig.java 2008-02-13 21:31:43 UTC
(rev 17877)
@@ -16,6 +16,7 @@
final boolean withForceWriteFlag;
final boolean withShortDescription;
final boolean withLongDescription;
+ final boolean withDataTypes;
static final String NAME = "GetConfig";
public GetConfig(SimpleFieldSet fs) {
@@ -26,6 +27,7 @@
withForceWriteFlag =
Fields.stringToBool(fs.get("WithForceWriteFlag"), false);
withShortDescription =
Fields.stringToBool(fs.get("WithShortDescription"), false);
withLongDescription =
Fields.stringToBool(fs.get("WithLongDescription"), false);
+ withDataTypes = Fields.stringToBool(fs.get("withDataTypes"),
false);
}
public SimpleFieldSet getFieldSet() {
@@ -41,7 +43,7 @@
if(!handler.hasFullAccess()) {
throw new
MessageInvalidException(ProtocolErrorMessage.ACCESS_DENIED, "GetConfig requires
full access", null, false);
}
- handler.outputHandler.queue(new ConfigData(node, withCurrent,
withDefaults, withSortOrder, withExpertFlag, withForceWriteFlag,
withShortDescription, withLongDescription));
+ handler.outputHandler.queue(new ConfigData(node, withCurrent,
withDefaults, withSortOrder, withExpertFlag, withForceWriteFlag,
withShortDescription, withLongDescription, withDataTypes));
}
}
Modified: trunk/freenet/src/freenet/node/fcp/ModifyConfig.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ModifyConfig.java 2008-02-13
19:53:35 UTC (rev 17876)
+++ trunk/freenet/src/freenet/node/fcp/ModifyConfig.java 2008-02-13
21:31:43 UTC (rev 17877)
@@ -61,6 +61,6 @@
}
}
node.clientCore.storeConfig();
- handler.outputHandler.queue(new ConfigData(node, true, false,
false, false, false, false, false));
+ handler.outputHandler.queue(new ConfigData(node, true, false,
false, false, false, false, false, false));
}
}