I spoke too soon.  The code in the previous message works in applications
and applets as long as it doesn't encounter a class variable that's
composed of a single letter name.  If it does contain a class variable with
a single letter then it will work as an application but throw the following
exception inside an applet.  This seems a bit quirky.  I vaguely remember
needing to modify JavaBeanConverter when i submitted that patch/hack a
while ago.

- Peter

Exception in thread "Thread-1"
com.thoughtworks.xstream.converters.ConversionException: access denied
("java.lang.reflect.ReflectPermission" "suppressAccessChecks") : access
denied ("java.lang.reflect.ReflectPermission" "suppressAccessChecks")
---- Debugging information ----
message             : access denied ("java.lang.reflect.ReflectPermission"
"suppressAccessChecks")
cause-exception     : java.security.AccessControlException
cause-message       : access denied ("java.lang.reflect.ReflectPermission"
"suppressAccessChecks")
class               : georegression.struct.se.Se3_F64
required-type       : georegression.struct.se.Se3_F64
converter-type      :
com.thoughtworks.xstream.converters.javabean.JavaBeanConverter
path                : /boofcv.struct.calib.StereoParameters/rightToLeft/r
line number         : 31
class[1]            : boofcv.struct.calib.StereoParameters
version             : not available
-------------------------------
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
    at
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
    at
com.thoughtworks.xstream.converters.javabean.JavaBeanConverter.unmarshal(JavaBeanConverter.java:134)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
    at
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
    at
com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1185)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1169)
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1040)
    at boofcv.io.UtilIO.loadXML(UtilIO.java:152)
    at
boofcv.alg.geo.rectify.ShowRectifyCalibratedApp.changeInput(ShowRectifyCalibratedApp.java:154)
    at
boofcv.gui.SelectAlgorithmAndInputPanel.performChangeInput(SelectAlgorithmAndInputPanel.java:326)
    at
boofcv.gui.SelectAlgorithmAndInputPanel.access$200(SelectAlgorithmAndInputPanel.java:44)
    at
boofcv.gui.SelectAlgorithmAndInputPanel$8.run(SelectAlgorithmAndInputPanel.java:300)
Caused by: java.security.AccessControlException: access denied
("java.lang.reflect.ReflectPermission" "suppressAccessChecks")
    at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at
java.security.AccessController.checkPermission(AccessController.java:560)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at
java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:128)
    at
com.thoughtworks.xstream.converters.reflection.FieldDictionary.buildMap(FieldDictionary.java:148)
    at
com.thoughtworks.xstream.converters.reflection.FieldDictionary.fieldOrNull(FieldDictionary.java:113)
    at
com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.getFieldOrNull(PureJavaReflectionProvider.java:193)
    at
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.canAccess(AbstractReflectionConverter.java:61)
    at
com.thoughtworks.xstream.converters.reflection.ReflectionConverter.canConvert(ReflectionConverter.java:41)
    at
com.thoughtworks.xstream.core.DefaultConverterLookup.lookupConverterForType(DefaultConverterLookup.java:56)
    at
com.thoughtworks.xstream.XStream$1.lookupConverterForType(XStream.java:498)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:56)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
    at
com.thoughtworks.xstream.converters.javabean.JavaBeanConverter.unmarshal(JavaBeanConverter.java:134)
    at
com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
    ... 18 more


On Wed, Jun 4, 2014 at 12:08 PM, Jörg Schaible <[email protected]
> wrote:

> Peter A wrote:
>
> > Ok here is what worked successfully inside an applet:
> >
> > ---------------------- BEGIN ----------------------------
> > XStream xstream = new XStream(new PureJavaReflectionProvider(),new
> > XppDriver(),
> >                 new ClassLoaderReference(UtilIO.class.getClassLoader()));
> >         xstream.registerConverter(new
> > JavaBeanConverter(xstream.getMapper()));
> > ----------------------- END -----------------------------
> >
> > Where UtilIO is just a random class in my code.  At one point I made the
> > mistake of passing in Reader.class which caused weird class not found
> > exceptions to be thrown.
> >
> > I would recommend adding that somewhere to the tutorial since the default
> > doesn't work in Applets.  Thanks again for the help!
>
> Actually the context classloader should do:
>
>   Thread.currentThread().getContextClassloader();
>
> Cheers,
> Jörg
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>
>


-- 
"Now, now my good man, this is no time for making enemies."    — Voltaire
(1694-1778), on his deathbed in response to a priest asking that he
renounce Satan.

Reply via email to