* with the dataset(s) and axes after deserialization. See patch 1209475
* at SourceForge.
*/
public void testSerialization5() {
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
CategoryAxis domainAxis1 = new CategoryAxis("Domain 1");
NumberAxis rangeAxis1 = new NumberAxis("Range 1");
BarRenderer renderer1 = new BarRenderer();
CategoryPlot p1 = new CategoryPlot(dataset1, domainAxis1, rangeAxis1,
renderer1);
CategoryAxis domainAxis2 = new CategoryAxis("Domain 2");
NumberAxis rangeAxis2 = new NumberAxis("Range 2");
BarRenderer renderer2 = new BarRenderer();
DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();
p1.setDataset(1, dataset2);
p1.setDomainAxis(1, domainAxis2);
p1.setRangeAxis(1, rangeAxis2);
p1.setRenderer(1, renderer2);
CategoryPlot p2 = null;
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(p1);
out.close();
ObjectInput in = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray()));
p2 = (CategoryPlot) in.readObject();
in.close();
}
catch (Exception e) {
fail(e.toString());
}
assertEquals(p1, p2);
// now check that all datasets, renderers and axes are being listened
// too...
CategoryAxis domainAxisA = p2.getDomainAxis(0);
NumberAxis rangeAxisA = (NumberAxis) p2.getRangeAxis(0);
DefaultCategoryDataset datasetA
= (DefaultCategoryDataset) p2.getDataset(0);
BarRenderer rendererA = (BarRenderer) p2.getRenderer(0);
CategoryAxis domainAxisB = p2.getDomainAxis(1);
NumberAxis rangeAxisB = (NumberAxis) p2.getRangeAxis(1);
DefaultCategoryDataset datasetB
= (DefaultCategoryDataset) p2.getDataset(1);
BarRenderer rendererB = (BarRenderer) p2.getRenderer(1);
assertTrue(datasetA.hasListener(p2));
assertTrue(domainAxisA.hasListener(p2));
assertTrue(rangeAxisA.hasListener(p2));
assertTrue(rendererA.hasListener(p2));
assertTrue(datasetB.hasListener(p2));
assertTrue(domainAxisB.hasListener(p2));
assertTrue(rangeAxisB.hasListener(p2));
assertTrue(rendererB.hasListener(p2));
}