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 import java.util.List; 00005 00006 import zephyr.plugin.core.api.internal.codeparser.codetree.ClassNode; 00007 import zephyr.plugin.core.api.internal.codeparser.codetree.CodeTrees; 00008 import zephyr.plugin.core.api.internal.codeparser.codetree.PrimitiveNode; 00009 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeNode; 00010 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeParser; 00011 import zephyr.plugin.core.api.internal.codeparser.interfaces.FieldParser; 00012 import zephyr.plugin.core.api.internal.codeparser.interfaces.MutableParentNode; 00013 import zephyr.plugin.core.api.internal.monitoring.wrappers.MonitorWrapper; 00014 import zephyr.plugin.core.api.internal.monitoring.wrappers.Wrappers; 00015 import zephyr.plugin.core.api.monitoring.abstracts.Monitored; 00016 00017 public class PrimitiveParser implements FieldParser { 00018 @Override 00019 public boolean canParse(Object fieldValue) { 00020 return CodeTrees.isPrimitive(fieldValue.getClass()); 00021 } 00022 00023 @Override 00024 public CodeNode parse(CodeParser codeParser, MutableParentNode parentNode, Field instanceField, String instanceLabel, 00025 Object instance) { 00026 String label = CodeTrees.labelOf(instanceField); 00027 Object container = ((ClassNode) parentNode).instance(); 00028 int level = CodeTrees.levelOf(instanceField); 00029 PrimitiveNode node = new PrimitiveNode(label, parentNode, instanceField, container, level); 00030 parentNode.addChild(node); 00031 List<MonitorWrapper> localWrappers = Wrappers.getWrappers(instanceField, null); 00032 if (localWrappers != null) 00033 addLocalWrapper(parentNode, label, level, node, localWrappers); 00034 CodeTrees.popupIFN(codeParser, instanceField, node); 00035 return node; 00036 } 00037 00038 private static void addLocalWrapper(MutableParentNode parentNode, String label, int level, PrimitiveNode node, 00039 List<MonitorWrapper> localWrappers) { 00040 for (MonitorWrapper wrapper : localWrappers) { 00041 String wrapperLabel = label + wrapper.getClass().getSimpleName(); 00042 Monitored wrapperMonitored = wrapper.createMonitored(node.monitored()); 00043 PrimitiveNode wrapperNode = new PrimitiveNode(wrapperLabel, parentNode, wrapperMonitored, level); 00044 parentNode.addChild(wrapperNode); 00045 } 00046 } 00047 }