Skip to content

Commit

Permalink
Anticipate some error cases and throw NodeFileParserException more
Browse files Browse the repository at this point in the history
  • Loading branch information
gschueler committed Feb 18, 2011
1 parent 7b8a1cf commit 5a5a2ff
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions core/src/java/com/dtolabs/rundeck/core/common/NodesYamlParser.java
Expand Up @@ -25,10 +25,7 @@


import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.error.YAMLException;
import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.constructor.SafeConstructor;

import java.util.*;
Expand Down Expand Up @@ -58,7 +55,7 @@ public NodesYamlParser(final File propfile, final NodeReceiver nodes) {
/**
* Create parser for an inputstream, and send parsed nodes to the nodes receiver
*
* @param propfile
* @param inputStream input stream
* @param nodes
*/
public NodesYamlParser(final InputStream inputStream, final NodeReceiver nodes) {
Expand Down Expand Up @@ -87,10 +84,20 @@ public void parse() throws NodeFileParserException {
if (o instanceof Map) {

//name->{node data} map
Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) o;
final Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) o;
for (final String nodename : map.keySet()) {
final Map<String, Object> nodemap = map.get(nodename);
HashMap<String, Object> newmap = new HashMap<String, Object>(nodemap);
final Object obj = map.get(nodename);
if (null == obj) {
throw new NodeFileParserException("Empty node entry for: " + nodename);
}
if(!(obj instanceof Map)) {
throw new NodeFileParserException(
"Expected map data for node entry '" + nodename + "', but saw: " + obj.getClass()
.getName());
}
final Map<String, Object> entry = map.get(nodename);

final HashMap<String, Object> newmap = new HashMap<String, Object>(entry);
newmap.put("nodename", nodename);
final NodeEntryImpl iNodeEntry;
try {
Expand All @@ -104,7 +111,7 @@ public void parse() throws NodeFileParserException {
} else if (o instanceof Collection) {

//list of {node data} maps
Collection<Map<String, Object>> map = (Collection<Map<String, Object>>) o;
final Collection<Map<String, Object>> map = (Collection<Map<String, Object>>) o;
for (final Map<String, Object> nodemap : map) {
final NodeEntryImpl iNodeEntry;
try {
Expand All @@ -116,7 +123,7 @@ public void parse() throws NodeFileParserException {
}
}
}
} catch (YAMLException e) {
} catch (Exception e) {
throw new NodeFileParserException(e);
}
}
Expand Down

0 comments on commit 5a5a2ff

Please sign in to comment.