1. XStream
  2. XSTR-732

Patch that adds support for (unsigned) Applets


    • Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 1.4.4
    • Fix Version/s: 1.4.5
    • Component/s: Compatibility
    • Labels:
    • JDK version and platform:
      Oracle 1.6 Linux


      Currently xstream cannot be used inside of (unsigned) applets because it causes an exception to be thrown when a ClassLoader is created. Looks like this issue has come up a couple of times in the past. The patch is fairly simple and only took a couple of hours to code up and test. What the patch does is that it replaces all references to ClassLoader with a new XStreamClassLoader interface. There is now no need to create a new instance of ClassLoader, which is what caused the security exception.

      All unit tests pass. I don't believe that any additional unit tests are required since it's mostly a modification of existing code instead of adding new classes.

      To actually work inside of the applet the user does need to create a custom XStreamClassLoader, which uses reflections to load Class, and use PureJavaReflectionProvider. Some obscure serialization issues still can't be handled inside of applets, but I have yet to encounter those in my application. If requested I can post an example of how to do this too.

      Potential issue:

      • Take a look at CompositeClassLoader. It passes all tests but I'm uneasy about how I implemented getClassLoader()
      • This patch does break backwards compatibility since ClassLoaderReference no longer extends ClassLoader. The patch could be redesigned so that ClassLoaderReference is not modified, at the cost of some code bloat.
      • If backwards compatibility is being totally discarded then XStream's constructors can be cleaned up a bit.


        • Assignee:
          Jörg Schaible
          Peter Abeles
        • Votes:
          0 Vote for this issue
          2 Start watching this issue


          • Created: