RLPark 1.0.0
Reinforcement Learning Framework in Java

ObjectParser.java

Go to the documentation of this file.
00001 package zephyr.plugin.core.api.internal.codeparser.parsers;
00002 
00003 import java.lang.reflect.Field;
00004 
00005 import zephyr.plugin.core.api.internal.codeparser.codetree.ClassNode;
00006 import zephyr.plugin.core.api.internal.codeparser.codetree.CodeTrees;
00007 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeNode;
00008 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeParser;
00009 import zephyr.plugin.core.api.internal.codeparser.interfaces.FieldParser;
00010 import zephyr.plugin.core.api.internal.codeparser.interfaces.MutableParentNode;
00011 import zephyr.plugin.core.api.monitoring.annotations.Monitor;
00012 
00013 
00014 public class ObjectParser implements FieldParser {
00015   @Override
00016   public boolean canParse(Object fieldValue) {
00017     return true;
00018   }
00019 
00020   @Override
00021   public CodeNode parse(CodeParser codeParser, MutableParentNode parentNode, Field instanceField, String instanceLabel,
00022       Object instance) {
00023     String label = instanceLabel != null ? instanceLabel : extractLabel(instanceField);
00024     ClassNode node = new ClassNode(label, parentNode, instance, instanceField);
00025     parentNode.addChild(node);
00026     codeParser.recursiveParseClass(node, node.instance());
00027     CodeTrees.popupIFN(codeParser, instanceField, node);
00028     return node;
00029   }
00030 
00031   private static String extractLabel(Field instanceField) {
00032     if (instanceField == null)
00033       return "";
00034     Monitor monitor = instanceField.getAnnotation(Monitor.class);
00035     if (monitor != null && !monitor.label().isEmpty())
00036       return monitor.label();
00037     return instanceField.getName();
00038   }
00039 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark