public RobustReflectionConverter(Mapper mapper, ReflectionProvider reflectionProvider) { this(mapper, reflectionProvider, new XStream2().new PluginClassOwnership()); } RobustReflectionConverter(Mapper mapper, ReflectionProvider reflectionProvider, XStream2.ClassOwnership classOwnership) {
/** * @since 1.538 */ public void writeXml(OutputStream out) throws IOException { // pity we don't have a handy way to clone Jenkins.XSTREAM to temp add the omit Field XStream2 xStream2 = new XStream2(); xStream2.omitField(View.class, "owner"); xStream2.toXMLUTF8(View.this, out); }
@Override public synchronized void load() { // for backward compatibility, if we don't have our own data yet, then // load from Mailer. XmlFile file = getConfigFile(); if(!file.exists()) { XStream2 xs = new XStream2(); xs.addCompatibilityAlias("hudson.tasks.Mailer$DescriptorImpl",JenkinsLocationConfiguration.class); file = new XmlFile(xs,new File(Jenkins.get().getRootDir(),"hudson.tasks.Mailer.xml")); if (file.exists()) { try { file.unmarshal(this); if (jenkinsUrl==null) jenkinsUrl = hudsonUrl; } catch (IOException e) { LOGGER.log(Level.WARNING, "Failed to load "+file, e); } } } else { super.load(); } updateSecureSessionFlag(); }
public RobustReflectionConverter(Mapper mapper, ReflectionProvider reflectionProvider) { this(mapper, reflectionProvider, new XStream2().new PluginClassOwnership()); } RobustReflectionConverter(Mapper mapper, ReflectionProvider reflectionProvider, XStream2.ClassOwnership classOwnership) {
/** * The file where the Security settings are saved. */ protected final XmlFile getConfigFile() { XStream xstream = new XStream2(); xstream.alias("hudsonSecurityManager", HudsonSecurityManager.class); return new XmlFile(xstream, new File(hudsonHome, securityConfigFileName)); }
/** * Hack to get around the fact that {@link Fingerprint#XSTREAM} has private access. * If any issues arise when trying to access the field a new XStream object is returned to avoid null values. * @return {@link Fingerprint}'s XStream2 static field. */ @Nonnull private static XStream2 getFingerprintXStream() { try { Field field = Fingerprint.class.getDeclaredField("XSTREAM"); field.setAccessible(true); XStream2 xStream2 = (XStream2)field.get(null); if (xStream2 == null) { xStream2 = new XStream2(); } return xStream2; } catch (NoSuchFieldException e) { Logger.getLogger(DockerHubTrigger.class.getName()).log(Level.WARNING, "Fingerprint XStream instance gone? " + "Old data conversion of stored callback reports can't be performed. Risk of data loss.", e); } catch (IllegalAccessException e) { Logger.getLogger(DockerHubTrigger.class.getName()).log(Level.WARNING, "Fingerprint XStream instance inaccessible due to installed security manager. " + "Old data conversion of stored callback reports can't be performed. Risk of data loss.", e); } return new XStream2(); } }
private XmlFile getBlamesFile() { return new XmlFile(new XStream2(), new File(getOwner().getRootDir(), id + "-blames.xml")); }
/** * @since 1.538 */ public void writeXml(OutputStream out) throws IOException { // pity we don't have a handy way to clone Jenkins.XSTREAM to temp add the omit Field XStream2 xStream2 = new XStream2(); xStream2.omitField(View.class, "owner"); xStream2.toXMLUTF8(View.this, out); }
@Override protected XmlFile getConfigFile() { final XStream2 customXstream = new XStream2(); customXstream.addCompatibilityAlias("org.jvnet.hudson.plugins.SSHSite", CredentialsSSHSite.LegacySSHSite.class); return new XmlFile(customXstream, new File(Jenkins.getInstance().getRootDir(),getId()+".xml")); }
public DescriptorImpl() { super(ZulipNotifier.class); XmlFile newConfig = getConfigFile(); if (newConfig.exists()) { load(); } else { XStream2 xstream = new XStream2(); xstream.alias("hudson.plugins.humbug.DescriptorImpl", DescriptorImpl.class); XmlFile oldConfig = new XmlFile(xstream, new File(Jenkins.getInstance().getRootDir(),"hudson.plugins.humbug.HumbugNotifier.xml")); if (oldConfig.exists()) { try { oldConfig.unmarshal(this); } catch (IOException e) { logger.log(Level.WARNING, "Failed to load " + oldConfig, e); } } } }
public void doSubmit(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException { // stapler-class in form data tells Stapler which Fruit subclass to use Fruit fruit = req.bindJSON(Fruit.class, req.getSubmittedForm().getJSONObject("fruit")); rsp.setContentType("text/plain"); new XStream2().toXML(fruit, rsp.getWriter()); }
public void doSubmit(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException { // stapler-class in form data tells Stapler which Fruit subclass to use Fruit fruit = req.bindJSON(Fruit.class, req.getSubmittedForm().getJSONObject("fruit")); rsp.setContentType("text/plain"); new XStream2().toXML(fruit, rsp.getWriter()); }
public void doSubmit(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException { // '$class' in form data tells Stapler which Fruit subclass to use, // older versions of Jenkins/Stapler used 'stapler-class' Fruit fruit = req.bindJSON(Fruit.class, req.getSubmittedForm().getJSONObject("fruit")); rsp.setContentType("text/plain"); new XStream2().toXML(fruit, rsp.getWriter()); }
@Override public synchronized void load() { // for backward compatibility, if we don't have our own data yet, then // load from Mailer. XmlFile file = getConfigFile(); if(!file.exists()) { XStream2 xs = new XStream2(); xs.addCompatibilityAlias("hudson.tasks.Mailer$DescriptorImpl",JenkinsLocationConfiguration.class); file = new XmlFile(xs,new File(Jenkins.getInstance().getRootDir(),"hudson.tasks.Mailer.xml")); if (file.exists()) { try { file.unmarshal(this); if (jenkinsUrl==null) jenkinsUrl = hudsonUrl; } catch (IOException e) { LOGGER.log(Level.WARNING, "Failed to load "+file, e); } } } else { super.load(); } updateSecureSessionFlag(); }
/** * Creates a new {@link XStream2} to serialize {@link Issue} instances. * * @return the stream */ XStream2 createStream() { XStream2 xStream2 = new XStream2(); xStream2.registerConverter(new LineRangeListConverter(xStream2)); xStream2.registerConverter(new TreeStringConverter(xStream2)); xStream2.registerConverter(new SeverityConverter(xStream2)); xStream2.alias("lineRange", LineRange.class); xStream2.alias("treeString", TreeString.class); xStream2.alias("issue", Issue.class); xStream2.alias("analysisReport", Report.class); return xStream2; }
/** * Tests {@link TriggerContextConverter#marshal(Object, com.thoughtworks.xstream.io.HierarchicalStreamWriter, * com.thoughtworks.xstream.converters.MarshallingContext)}. With {@link TriggerContext#thisBuild} set to null. * * @throws Exception if so. */ @Test public void testMarshalNoThisBuild() throws Exception { PatchsetCreated event = Setup.createPatchsetCreated(); TriggerContext context = new TriggerContext(event); context.setOthers(new LinkedList<TriggeredItemEntity>()); TestMarshalClass t = new TestMarshalClass(context, "Me", new TestMarshalClass(context, "SomeoneElse")); XStream xStream = null; String xml = null; try { xStream = new XStream2(); xStream.registerConverter(new TriggerContextConverter()); xml = xStream.toXML(t); } catch (Exception e) { AssertionError error = new AssertionError("This should work, but did not. " + e.getMessage()); error.initCause(e); throw error; } TestMarshalClass readT = (TestMarshalClass)xStream.fromXML(xml); assertNotNull(readT.getEntity()); assertNotNull(readT.getEntity().getEvent()); }
XStream xStream = new XStream2(); xStream.registerConverter(new TriggerContextConverter()); Object obj = xStream.fromXML(getClass().getResourceAsStream("retriggerAction_oldData2.xml"));
XStream xStream = new XStream2(); xStream.registerConverter(new TriggerContextConverter()); String xml = xStream.toXML(t);
/** * Tests {@link TriggerContextConverter#unmarshal(com.thoughtworks.xstream.io.HierarchicalStreamReader, * com.thoughtworks.xstream.converters.UnmarshallingContext)}. With "retriggerAction_oldData.xml" as input. * * @throws Exception if so. */ @Test public void testUnmarshalOldData1() throws Exception { XStream xStream = new XStream2(); xStream.registerConverter(new TriggerContextConverter()); Object obj = xStream.fromXML(getClass().getResourceAsStream("retriggerAction_oldData.xml")); assertTrue(obj instanceof RetriggerAction); RetriggerAction action = (RetriggerAction)obj; TriggerContext context = Whitebox.getInternalState(action, "context"); assertNotNull(context.getEvent()); assertThat("Event is not a ChangeBasedEvent", context.getEvent(), instanceOf(ChangeBasedEvent.class)); ChangeBasedEvent changeBasedEvent = (ChangeBasedEvent)context.getEvent(); assertEquals("semctools/hudson/plugins/gerrit-trigger-plugin", changeBasedEvent.getChange().getProject()); assertEquals("1", changeBasedEvent.getPatchSet().getNumber()); assertNotNull(context.getThisBuild()); assertEquals(6, context.getThisBuild().getBuildNumber().intValue()); assertEquals("EXPERIMENTAL_Gerrit_Trigger_1", context.getThisBuild().getProjectId()); assertNotNull(context.getOthers()); assertEquals(1, context.getOthers().size()); TriggeredItemEntity entity = context.getOthers().get(0); assertEquals(16, entity.getBuildNumber().intValue()); assertEquals("EXPERIMENTAL_Gerrit_Trigger_2", entity.getProjectId()); }
/** * Tests {@link TriggerContextConverter#marshal(Object, com.thoughtworks.xstream.io.HierarchicalStreamWriter, * com.thoughtworks.xstream.converters.MarshallingContext)}. With an empty list of "others". * * @throws Exception if so. */ @Test public void testMarshalNoOthers() throws Exception { TriggeredItemEntity entity = new TriggeredItemEntity(100, "projectX"); PatchsetCreated event = Setup.createPatchsetCreated(); TriggerContext context = new TriggerContext(event); context.setThisBuild(entity); context.setOthers(new LinkedList<TriggeredItemEntity>()); TestMarshalClass t = new TestMarshalClass(context, "Bobby", new TestMarshalClass(context, "SomeoneElse")); XStream xStream = new XStream2(); xStream.registerConverter(new TriggerContextConverter()); String xml = xStream.toXML(t); TestMarshalClass readT = (TestMarshalClass)xStream.fromXML(xml); assertNotNull(readT.getEntity()); assertNotNull(readT.getEntity().getEvent()); assertNotNull(readT.getEntity().getThisBuild()); assertThat("Event is not a ChangeBasedEvent", readT.getEntity().getEvent(), instanceOf(ChangeBasedEvent.class)); ChangeBasedEvent changeBasedEvent = (ChangeBasedEvent)readT.getEntity().getEvent(); assertEquals("project", changeBasedEvent.getChange().getProject()); assertEquals(100, readT.getEntity().getThisBuild().getBuildNumber().intValue()); assertEquals("projectX", readT.getEntity().getThisBuild().getProjectId()); assertSame(readT.getEntity(), readT.getTestClass().getEntity()); }