#702 Reflecting recompiled pods without VM restart

KevinKelley Wed 29 Jul 2009

Before I start digging into fanx, let me just ask.

I'm working on roundtrip building in Flux, I reflect Pod.list and use the new Repo locations to look up pod.fan files, map pods to their source code, do a first-pass parse to scan for TypeDefs, then load the source at the appropriate Mark for editing and recompile.

And I've got an Actor to monitor for file changes and send a notification to the ui, which (tries to) reload the pods list with reflection, to see the changes.

Which is giving me exceptions like:

event: Event { id=mouseHover button=0 key= pos=80,289 count=0 }
sys::NullErr: java.lang.NullPointerException
  fanx.fcode.FType.read (FType.java:59)
  fanx.fcode.FType.read (FType.java:54)
  fan.sys.ClassType.doReflect (ClassType.java:301)
  fan.sys.ClassType.reflect (ClassType.java:287)
  fan.sys.ClassType.emit (ClassType.java:472)
  fan.sys.FanClassLoader.findClass (FanClassLoader.java:169)
  java.lang.ClassLoader.loadClass (Unknown)
  java.lang.ClassLoader.loadClass (Unknown)
  java.lang.ClassLoader.loadClassInternal (Unknown)
  podlist::TypeNode.extendsStr (Node.fan:172)

Apparently something's not happening; I'm guessing that fan builds its type db with references into the pod files, and when I change the pod file with a recompile the references go stale.

Is there a way to force reload the new pod? First thing I'd try is deleting the typedb and see what happens, but I haven't tried it yet. (So I guess it's not the first thing I'd try; first thing I'd try is asking. :-)

brian Wed 29 Jul 2009

won't work today - the zip file won't know its been modified and will try to start reading things from the wrong location

Login or Signup to reply.