package com.limegroup.gnutella.downloader.serial.conversion; import java.io.IOException; import java.io.InputStream; import org.limewire.collection.IntervalSet; import org.limewire.util.ConverterObjectInputStream; import com.limegroup.gnutella.xml.SerialXml; class DownloadConverterObjectInputStream extends ConverterObjectInputStream { static enum Version { Four16, Four14, Four11, Three0; } DownloadConverterObjectInputStream(InputStream in) throws IOException { super(in); deserializeVersion(Version.Four16); } void deserializeVersion(Version version) { revertToDefault(); addCommon(); switch(version) { case Four16: addLookup("com.limegroup.gnutella.downloader.ResumeDownloader", SerialResumeDownloader4x16.class.getName()); addLookup("com.limegroup.gnutella.RemoteFileDesc", SerialRemoteFileDesc4x16.class.getName()); break; case Four14: addLookup("com.limegroup.gnutella.downloader.ResumeDownloader", SerialResumeDownloader4x16.class.getName()); addLookup("com.limegroup.gnutella.RemoteFileDesc", SerialRemoteFileDesc4x14.class.getName()); break; case Four11: addLookup("com.limegroup.gnutella.RemoteFileDesc", SerialRemoteFileDesc4x14.class.getName()); addLookup("com.limegroup.gnutella.downloader.ResumeDownloader", SerialResumeDownloader4x11.class.getName()); break; case Three0: addLookup("com.limegroup.gnutella.RemoteFileDesc", SerialRemoteFileDesc3x0.class.getName()); addLookup("com.limegroup.gnutella.downloader.ResumeDownloader", SerialResumeDownloader4x11.class.getName()); break; default: throw new IllegalArgumentException("invalid version: " + version); } } private void addCommon() { addLookup("com.limegroup.gnutella.downloader.AbstractDownloader", SerialRoot.class.getName()); addLookup("com.limegroup.gnutella.downloader.ManagedDownloader", SerialManagedDownloaderImpl.class.getName()); addLookup("com.limegroup.gnutella.downloader.StoreDownloader", SerialStoreDownloader.class.getName()); addLookup("com.limegroup.gnutella.downloader.RequeryDownloader", SerialRequeryDownloader.class.getName()); addLookup("com.limegroup.gnutella.downloader.MagnetDownloader", SerialMagnetDownloader.class.getName()); addLookup("com.limegroup.gnutella.downloader.InNetworkDownloader", SerialInNetworkDownloader.class.getName()); addLookup("com.limegroup.bittorrent.BTDownloader", SerialBTDownloader.class.getName()); addLookup("com.limegroup.gnutella.downloader.IncompleteFileManager", SerialIncompleteFileManager.class.getName()); addLookup("com.limegroup.gnutella.downloader.URLRemoteFileDesc", SerialUrlRemoteFileDesc.class.getName()); addLookup("com.limegroup.gnutella.xml.LimeXMLDocument", SerialXml.class.getName()); addLookup("com.limegroup.gnutella.downloader.Interval", "org.limewire.collection.Interval"); addLookup("com.limegroup.gnutella.util.IntervalSet", IntervalSet.class.getName()); addLookup("com.limegroup.gnutella.BandwidthTrackerImpl", SerialBandwidthTrackerImpl.class.getName()); addLookup("org.apache.commons.httpclient.URI", SerialOldURI.class.getName()); addLookup("com.limegroup.bittorrent.BTMetaInfo", SerialBTMetaInfo.class.getName()); addLookup("com.limegroup.bittorrent.BTMetaInfo$SerialKeys", SerialBTMetaInfo.SerialKeys.class.getName()); addLookup("com.limegroup.bittorrent.TorrentFileSystem", SerialTorrentFileSystem.class.getName()); addLookup("com.limegroup.bittorrent.disk.VerifyingFolder$SerialData", SerialDiskManagerData.class.getName()); addLookup("com.limegroup.bittorrent.disk.VerifyingFolder$BlockRangeMap", SerialBlockRangeMap.class.getName()); } }