[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r18035 - in gnunet-java: src/org/gnunet/util test/org/gnune
From: |
gnunet |
Subject: |
[GNUnet-SVN] r18035 - in gnunet-java: src/org/gnunet/util test/org/gnunet/util/resources |
Date: |
Mon, 7 Nov 2011 02:50:56 +0100 |
Author: dold
Date: 2011-11-07 02:50:56 +0100 (Mon, 07 Nov 2011)
New Revision: 18035
Modified:
gnunet-java/src/org/gnunet/util/Configuration.java
gnunet-java/test/org/gnunet/util/resources/gnunet.config-1
Log:
config parser
Modified: gnunet-java/src/org/gnunet/util/Configuration.java
===================================================================
--- gnunet-java/src/org/gnunet/util/Configuration.java 2011-11-07 00:36:12 UTC
(rev 18034)
+++ gnunet-java/src/org/gnunet/util/Configuration.java 2011-11-07 01:50:56 UTC
(rev 18035)
@@ -2,6 +2,7 @@
import java.io.BufferedReader;
import java.io.DataInputStream;
+import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -9,6 +10,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -23,18 +25,19 @@
public class Configuration {
private static final Logger logger = LoggerFactory
.getLogger(Configuration.class);
-
-
+
private static Pattern section = Pattern.compile("\\[(.*?)\\]");
private static Pattern tag = Pattern.compile("(.*?) =( ?.*?)");
+ private static Pattern comment = Pattern.compile("\\s*[%#].*\n?");
+ private static Pattern delim = Pattern.compile("\\s*\\n\\s*");
- public Map<String,Map<String, String>> sections;
+ public Map<String, Map<String, String>> sections;
/**
* Start with an empty configuration.
*/
public Configuration() {
- sections = new HashMap<String, Map<String,String>>();
+ sections = new HashMap<String, Map<String, String>>();
}
/**
@@ -43,56 +46,31 @@
*
* @param filename
* name of the configuration file
- * @throws FileNotFoundException
+ * @throws FileNotFoundException
*/
public void parse(String filename) throws FileNotFoundException {
- DataInputStream in = new DataInputStream(new
FileInputStream(filename));
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
-
+ Scanner sc = new Scanner(new File(filename)).useDelimiter(delim);
+
String current_section = "";
-
+
while (true) {
- String line;
- try {
- line = br.readLine();
- } catch (IOException e) {
- logger.warn("error parsing file", e);
+ if (sc.hasNext(comment)) {
+ sc.next(comment);
+ } else if (sc.hasNext(section)) {
+ sc.next(section);
+ System.out.println(sc.match().groupCount());
+ current_section = sc.match().group(1).trim();
+ } else if (sc.hasNext(tag)) {
+ sc.next(tag);
+ String option = sc.match().group(1).trim();
+ String value = sc.match().group(2).trim();
+ setValueString(current_section, option, value);
+ } else if (!sc.hasNext()) {
break;
+ } else {
+ logger.warn("skipped unreadable configuration line");
+ sc.next();
}
- if (line == null) {
- break;
- }
- line = line.trim();
- if (line.length() == 0) {
- continue;
- }
- if (line.charAt(0) == '#' || line.charAt(0) == '%') {
- continue;
- }
-
- Matcher m;
-
- m = section.matcher(line);
- if (m.matches()) {
- current_section = m.group(1);
- continue;
- }
-
- m = tag.matcher(line);
- if (m.matches()) {
- String option = m.group(1).trim();
- String value = m.group(2).trim();
- if (value.length() != 0 && value.charAt(0) == '"') {
- int last = value.lastIndexOf('"', 1);
- if (last == -1) {
- logger.warn("error parsing file: incorrect quoting");
- continue;
- }
- value = value.substring(1, last).trim();
- }
- setValueString(current_section, option, value);
- }
-
}
}
@@ -132,17 +110,18 @@
* Write only configuration entries that have been changed to configuration
* file.
*
- * @param cfgNew new configuration
+ * @param cfgNew
+ * new configuration
*
- * @param filename where to write the configuration diff between default
and
- * new
+ * @param filename
+ * where to write the configuration diff between default and new
*/
public void writeDiffs(Configuration cfgNew, String filename) {
throw new UnsupportedOperationException();
}
public void setValueString(String section, String option, String value) {
- Map<String,String> table = sections.get(section);
+ Map<String, String> table = sections.get(section);
if (table == null) {
table = new HashMap<String, String>();
sections.put(section, table);
Modified: gnunet-java/test/org/gnunet/util/resources/gnunet.config-1
===================================================================
--- gnunet-java/test/org/gnunet/util/resources/gnunet.config-1 2011-11-07
00:36:12 UTC (rev 18034)
+++ gnunet-java/test/org/gnunet/util/resources/gnunet.config-1 2011-11-07
01:50:56 UTC (rev 18035)
@@ -1,3 +1,4 @@
+%asd
[foo]
%asdf
# foo
@@ -4,6 +5,5 @@
# foo
bar = baz
bla = xd
-spam =
-
-
+[bla]
+spam =
\ No newline at end of file
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18035 - in gnunet-java: src/org/gnunet/util test/org/gnunet/util/resources,
gnunet <=