Skip to content

Commit

Permalink
fixed at_exit
Browse files Browse the repository at this point in the history
  • Loading branch information
adamjmurray committed Aug 27, 2010
1 parent 94ce4b5 commit f2a25d5
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/ajm/rubysupport/JRubyEmbedEvaluator.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ public Object eval(CharSequence rubyCode) {
}

public void exit() {
// TODO
container.terminate();
container = null;

}
}
2 changes: 2 additions & 0 deletions src/ajm/rubysupport/MaxRubyAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,9 @@ private void buildArrayString(Object o, StringBuilder s) {
}
}

/*
public void on_context_destroyed(Object callback) {
ScriptEvaluatorManager.registerContextDestroyedListener(maxObject, callback.toString());
}
*/
}
6 changes: 5 additions & 1 deletion src/ajm/rubysupport/ScriptEvaluatorManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public class ScriptEvaluatorManager {

private static Map<String, ScriptEvaluator> evaluatorContexts = new HashMap<String, ScriptEvaluator>();
private static Map<String, Integer> evaluatorContextCounter = new HashMap<String, Integer>();
private static MappedSet<String, String> evaluatorContextDestroyedListeners = new MappedSet<String, String>();
//private static MappedSet<String, String> evaluatorContextDestroyedListeners = new MappedSet<String, String>();
private static MappedSet<String, Object> objectsUsingEvaluator = new MappedSet<String, Object>();
private static Map<String, Map<String, Object>> maxObjectMap = new HashMap<String, Map<String, Object>>();
private static Constructor<ScriptEvaluator> evaluatorConstructor;
Expand Down Expand Up @@ -179,6 +179,7 @@ private static String getEvaluatorContext(String maxContext, Object maxObject) {
}
}

/*
public static void registerContextDestroyedListener(Object maxObject, String callbackMethod) {
String[] contextAndId = objectMetadata.get(maxObject);
if (contextAndId != null) {
Expand All @@ -187,10 +188,12 @@ public static void registerContextDestroyedListener(Object maxObject, String cal
evaluatorContextDestroyedListeners.addValue(evaluatorContext, callbackMethod);
}
}
*/

public static void notifyContextDestroyedListener(String maxContext, Object maxObject) {
String evaluatorContext = getEvaluatorContext(maxContext, maxObject);
ScriptEvaluator ruby = evaluatorContexts.get(evaluatorContext);
/*
Collection<String> callbackMethods = evaluatorContextDestroyedListeners.remove(evaluatorContext);
if (ruby != null && callbackMethods != null) {
for (String callbackMethod : callbackMethods) {
Expand All @@ -203,6 +206,7 @@ public static void notifyContextDestroyedListener(String maxContext, Object maxO
}
}
}
*/
if (ruby != null) {
// The callback method behavior above should be phased out in favor of this:
ruby.exit();
Expand Down

0 comments on commit f2a25d5

Please sign in to comment.