/** * @param solverConfigContext never null */ public XStreamXmlSolverFactory(SolverConfigContext solverConfigContext) { super(solverConfigContext); xStream = buildXStream(); ClassLoader actualClassLoader = solverConfigContext.determineActualClassLoader(); xStream.setClassLoader(actualClassLoader); }
private XStream getXStream() { XStream xstream = createXStream(); if (classLoader != null) { xstream.setClassLoader(classLoader); if (classLoader instanceof ProjectClassLoader ) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { String[] classes = store.keySet().stream() .map( s -> s.replace( '/', '.' ) ) .map( s -> s.endsWith( ".class" ) ? s.substring( 0, s.length() - ".class".length() ) : s ) .toArray( String[]::new ); xstream.addPermission( new ExplicitTypePermission( classes ) ); } } } return xstream; }
/** * @param solverConfigContext never null */ public XStreamXmlPlannerBenchmarkFactory(SolverConfigContext solverConfigContext) { super(solverConfigContext); xStream = XStreamXmlSolverFactory.buildXStream(); ClassLoader actualClassLoader = solverConfigContext.determineActualClassLoader(); xStream.setClassLoader(actualClassLoader); xStream.processAnnotations(PlannerBenchmarkConfig.class); xStream.registerConverter(new FileConverter() { @Override public String toString(Object obj) { // Write "/" path separators (even on Windows) for portability return FilenameUtils.separatorsToUnix(((File) obj).getPath()); } }); }
private Serializer buildSerializer(RevisionResolver revisionResolver, SerializerProperties.SerializerType serializerType) { switch (serializerType) { case JACKSON: Map<String, ObjectMapper> objectMapperBeans = applicationContext.getBeansOfType(ObjectMapper.class); ObjectMapper objectMapper = objectMapperBeans.containsKey("defaultAxonObjectMapper") ? objectMapperBeans.get("defaultAxonObjectMapper") : objectMapperBeans.values().stream().findFirst() .orElseThrow(() -> new NoClassDefFoundError( "com/fasterxml/jackson/databind/ObjectMapper" )); ChainingConverter converter = new ChainingConverter(beanClassLoader); return JacksonSerializer.builder() .revisionResolver(revisionResolver) .converter(converter) .objectMapper(objectMapper) .build(); case JAVA: return JavaSerializer.builder().revisionResolver(revisionResolver).build(); case XSTREAM: case DEFAULT: default: XStreamSerializer xStreamSerializer = XStreamSerializer.builder() .revisionResolver(revisionResolver) .build(); xStreamSerializer.getXStream().setClassLoader(beanClassLoader); return xStreamSerializer; } }
private static XStream getXStreamForLoader(final ClassLoader loader) { XStream foreginXstream = CACHE.get(loader); if (foreginXstream == null) { foreginXstream = new XStream(new PitXmlDriver()); foreginXstream.setClassLoader(loader); // possible that more than one instance will be created // per loader, but probably better than synchronizing the whole method synchronized (CACHE) { CACHE.put(loader, foreginXstream); } } return foreginXstream; }
ClassLoader bootstrapClassLoader = ClassLoader.getSystemClassLoader().getParent(); List urls = new ArrayList(); urls.add(new File("yourJarOfXstreamBeanClasses.jar").toURL()); ClassLoader xstreamClassLoader = new URLClassLoader(urls.toArray(new URL[0]), bootstrapClassLoader); XStream xstream = new XStream(); xstream.setClassLoader(xstreamClassLoader);
public XStream getXStream() { if (xStream == null) { xStream = createXStream(); // make it work in OSGi env xStream.setClassLoader(getClass().getClassLoader()); } return xStream; }
/** * Sets the classloader which will be used for serialization. * * @param classLoader * The serialization classloader. */ public void setClassLoader( ClassLoader classLoader ) { getXStream().setClassLoader( classLoader ); }
public XStream getXStream() { if (xStream == null) { xStream = createXStream(); // make it work in OSGi env xStream.setClassLoader(getClass().getClassLoader()); } return xStream; }
public XStream getXStream() { if (xStream == null) { xStream = createXStream(); // make it work in OSGi env xStream.setClassLoader(getClass().getClassLoader()); } return xStream; }
protected Object cloneBean(Object bean) { XStream xstream = new XStream(new DomDriver()); xstream.setClassLoader(bean.getClass().getClassLoader()); return (xstream.fromXML(xstream.toXML(bean))); }
private static XStream newXStream(ClassLoader classLoader) { XStream xstream = new XStream(); if (classLoader != null) { xstream.setClassLoader(classLoader); } else { xstream.setClassLoader(XStreamFactory.class.getClassLoader()); } xstream.autodetectAnnotations(true); xstream.setMode(XStream.NO_REFERENCES); xstream.processAnnotations(XStreamConfiguration.class); return xstream; }
protected String convertBeanToString(Object bean) { XStream xstream = new XStream(new DomDriver()); xstream.setClassLoader(bean.getClass().getClassLoader()); return xstream.toXML(bean); }
public static void updateScorerConfig(Store store, String content) { XStream xs = XStreamHelper.getScorerXStream(store); xs.setClassLoader( WWConfigHelper.class.getClassLoader() ); // OSGi: We need it to use our classLoader, as it's own bundle won't help it :) ScoreConfiguration sc = (ScoreConfiguration) xs.fromXML(content); updateScorerConfigInternal(store, sc); }
public static void updateIndexConfig(Store store, InputStream inputStream) { XStream xs = XStreamHelper.getIndexConfigXStream(store); xs.setClassLoader( WWConfigHelper.class.getClassLoader() ); // OSGi: We need it to use our classLoader, as it's own bundle won't help it :) ManualIndexStrategy strategy = (ManualIndexStrategy) xs.fromXML(inputStream); updateIndexConfigInternal(store, strategy); }
/** * Update split configs * FIXME: This does not check if no change has been made. Server side needs to have code to detect this * and avoid rebuilding an index for no reason (unless forced) */ public static void updateIndexConfig(Store store, String content) { XStream xs = XStreamHelper.getIndexConfigXStream(store); xs.setClassLoader( WWConfigHelper.class.getClassLoader() ); // OSGi: We need it to use our classLoader, as it's own bundle won't help it :) ManualIndexStrategy strategy = (ManualIndexStrategy) xs.fromXML(content); updateIndexConfigInternal(store, strategy); }
public boolean isConfigurationChanged() { XStream xstream = new XStream(new DomDriver()); xstream.setClassLoader(configuration.getActivity().getClass().getClassLoader()); return (!xstream.toXML(clonedConfig).equals(origConfigXML)); }
@Autowired public BandanaWebdavSettingsManager(@ComponentImport BandanaManager bandanaManager) { this.bandanaManager = bandanaManager; this.xStream = new XStream(new Sun14ReflectionProvider()); xStream.setClassLoader(getClass().getClassLoader()); }
private String getConfigString(Activity<?> baseActivity) { XStream xstream = new XStream(new DomDriver()); Object baseConfig = baseActivity.getConfiguration(); xstream.setClassLoader(baseConfig.getClass().getClassLoader()); return xstream.toXML(baseConfig); }
public ServerConfigPersistenceManager(@NotNull ServerPaths serverPaths) { xStream = new XStream(); xStream.setClassLoader(SerializableServers.class.getClassLoader()); xStream.processAnnotations(new Class[]{SerializableServer.class, SerializableServers.class}); configFile = new File(serverPaths.getConfigDir(), CONFIG_FILE_NAME); loadSettings(); }