Skip to content

Commit

Permalink
improving the names that show up in XML
Browse files Browse the repository at this point in the history
  • Loading branch information
kohsuke committed May 7, 2011
1 parent 52243ea commit 340b87a
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions src/main/java/org/jenkinsci/jruby/JRubyMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

import com.thoughtworks.xstream.mapper.Mapper;
import com.thoughtworks.xstream.mapper.MapperWrapper;
import org.jruby.RubyBasicObject;
import org.jruby.javasupport.proxy.InternalJavaProxy;

/**
* Set the proper alias for JRuby objects and proxy objects,
* so that implementation detail class names won't leak out to the persisted form.
*
* @author Kohsuke Kawaguchi
*/
public class JRubyMapper extends MapperWrapper {
Expand All @@ -13,25 +17,28 @@ public JRubyMapper(Mapper wrapped) {
}

public String serializedClass(Class type) {
if (InternalJavaProxy.class.isAssignableFrom(type)) {
return ALIAS;
} else {
if (InternalJavaProxy.class.isAssignableFrom(type))
return RUBY_PROXY;
if (RubyBasicObject.class.isAssignableFrom(type))
return RUBY_OBJECT;
else
return super.serializedClass(type);
}
}

public Class realClass(String elementName) {
if (elementName.equals(ALIAS)) {
if (elementName.equals(RUBY_PROXY))
return DynamicProxy.class;
} else {
if (elementName.equals(RUBY_OBJECT))
return RubyBasicObject.class;
else
return super.realClass(elementName);
}
}

/**
* Place holder type used for dynamic proxies.
*/
public static class DynamicProxy {}

private static final String ALIAS = "ruby-proxy-object";
private static final String RUBY_PROXY = "ruby-proxy-object";
private static final String RUBY_OBJECT = "ruby-object";
}

0 comments on commit 340b87a

Please sign in to comment.