RLPark 1.0.0
Reinforcement Learning Framework in Java
|
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 }