protected AnalysisResult readResult(final InputStream inputStream, final List<Throwable> errors) throws Exception { final ChangeAwareObjectInputStream changeAwareObjectInputStream = new ChangeAwareObjectInputStream(inputStream); final Object object = changeAwareObjectInputStream.readObject(); changeAwareObjectInputStream.close(); if (object instanceof AnalysisResult) { // response carries a result return (AnalysisResult) object; } else if (object instanceof List) { // response carries a list of errors @SuppressWarnings("unchecked") final List<Throwable> slaveErrors = (List<Throwable>) object; errors.addAll(slaveErrors); return null; } else { throw new IllegalStateException("Unexpected response payload: " + object); } } }
addRenamedClass("org.datacleaner.reference.TextBasedDictionary", TextFileDictionary.class); addRenamedClass("org.datacleaner.reference.TextBasedSynonymCatalog", TextFileSynonymCatalog.class); addRenamedClass("org.datacleaner.result.PatternFinderResult", "org.datacleaner.beans.stringpattern.PatternFinderResult"); addRenamedClass("org.datacleaner.result.DateGapAnalyzerResult", "org.datacleaner.beans.dategap.DateGapAnalyzerResult"); addRenamedClass("org.datacleaner.util.TimeInterval", "org.datacleaner.beans.dategap.TimeInterval"); addRenamedClass("org.datacleaner.result.StringAnalyzerResult", "org.datacleaner.beans.StringAnalyzerResult"); addRenamedClass("org.datacleaner.result.NumberAnalyzerResult", "org.datacleaner.beans.NumberAnalyzerResult"); addRenamedClass("org.datacleaner.result.BooleanAnalyzerResult", "org.datacleaner.beans.BooleanAnalyzerResult"); addRenamedClass("org.datacleaner.result.DateAndTimeAnalyzerResult", "org.datacleaner.beans.DateAndTimeAnalyzerResult"); addRenamedClass("org.datacleaner.visualization.DensityAnalyzerResult", "org.datacleaner.visualization.ScalaDensityAnalyzerResult"); addRenamedClass("org.datacleaner.visualization.ScatterAnalyzerResult", "org.datacleaner.visualization.ScalaScatterAnalyzerResult"); addRenamedClass("org.datacleaner.visualization.StackedAreaAnalyzerResult", "org.datacleaner.visualization.ScalaStackedAreaAnalyzerResult"); addRenamedClass("org.datacleaner.result.ValueDistributionGroupResult", "org.datacleaner.beans.valuedist.SingleValueDistributionResult"); addRenamedClass("org.datacleaner.result.ValueDistributionResult", "org.datacleaner.beans.valuedist.GroupedValueDistributionResult"); addRenamedClass("org.datacleaner.beans.valuedist.ValueDistributionGroupResult", "org.datacleaner.beans.valuedist.SingleValueDistributionResult"); addRenamedClass("org.datacleaner.beans.valuedist.ValueDistributionResult", "org.datacleaner.beans.valuedist.GroupedValueDistributionResult");
@Override protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException { final ObjectStreamClass resultClassDescriptor = super.readClassDescriptor(); final String originalClassName = resultClassDescriptor.getName(); final String className = getClassNameRenamed(originalClassName); if (className != originalClassName) { return getClassDescriptor(className, false, resultClassDescriptor); } if (INTERFACES_WITH_SERIAL_ID_CHANGES.contains(originalClassName)) { return ObjectStreamClass.lookup(resolveClass(originalClassName, false)); } return resultClassDescriptor; }
@Override public Object eval(InputStream in) { ChangeAwareObjectInputStream inputStream = null; try { inputStream = new ChangeAwareObjectInputStream(in); return inputStream.readObject(); } catch (Exception e) { if (e instanceof RuntimeException) { throw (RuntimeException) e; } throw new IllegalStateException(e); } finally { FileHelper.safeClose(inputStream); } } });
try { final ChangeAwareObjectInputStream is = new ChangeAwareObjectInputStream(fileObject.getContent().getInputStream()); try { is.addClassLoader(ExtensionPackage.getExtensionClassLoader()); analysisResult = (AnalysisResult) is.readObject(); } finally { FileHelper.safeClose(is);
inputStream = new ChangeAwareObjectInputStream(userPreferencesFile.getContent().getInputStream()); inputStream.addRenamedClass("org.datacleaner.user.UserPreferences", UserPreferencesImpl.class); final UserPreferencesImpl result = (UserPreferencesImpl) inputStream.readObject();
public void addRenamedClass(final String originalClassName, final Class<?> newClass) { addRenamedClass(originalClassName, newClass.getName()); }
ChangeAwareObjectInputStream objectInputStream = null; try { objectInputStream = new ChangeAwareObjectInputStream(new ByteArrayInputStream(bytes)); objectInputStream.addClassLoader(type.getClassLoader()); return objectInputStream.readObject(); } catch (final Exception e) { throw new IllegalStateException("Could not deserialize to " + type + ".", e);