XMLEncoder klarer JavaBeans men ikke LinkedList i en Javabean
Jeg bruger en linkedlist til at gemme en variabel mængde sammenhørende data i en JavaBean (faktisk 3 linkedliste), når jeg så gemmer (skriver stream til disk) via XMLEncoder, får jeg denne grimme (har dog set værre *gg*) fejl:java.lang.InstantiationException: FileLocation
Continuing ...
java.lang.Exception: discarding statement LinkedList0.add<FileLocation0>;
Continuing ...
Hrmmm.... der må jo være noget i vejen med min FileLocation-class også, så i får lige min bean-klasse samt FileLocation-class....
Først FileLocation.java (JavaBean):
public class FileLocation
{ private String fileExtension;
private String fileLocation;
private String description;
public FileLocation(String fileExtension, String fileLocation, String description)
{ this.fileExtension = fileExtension;
this.fileLocation = fileLocation;
this.description = description;
}
public String toString() { return "[."+fileExtension+"] @ "+fileLocation; }
// Java-Bean getter-properties
public String getFileExtension() { return fileExtension; }
public String getFileLocation() { return fileLocation; }
public String getDescription() { return description; }
// Java-Bean setter-properties
public void setFileExtension(String fileExtension) { this.fileExtension = fileExtension; }
public void setFileLocation(String fileLocation) { this.fileLocation = fileLocation; }
public void setDescription(String description) { this.description = description; }
}
Så Configuration.java (også JavaBean):
import java.util.*;
public class Configuration
{ private LinkedList fileLocations;
private LinkedList grabLocations;
private LinkedList excludeFileTypes;
private String logFileLocation;
private boolean saveLogToFile;
public Configuration()
{ fileLocations = new LinkedList();
grabLocations = new LinkedList();
excludeFileTypes = new LinkedList();
excludeFileTypes.add("dat");
excludeFileTypes.add("tmp");
logFileLocation = "";
saveLogToFile = false;
}
public void addFileLocation(FileLocation toAdd) { fileLocations.addLast(toAdd); }
public void addGrabLocation(String path) { grabLocations.add(path); }
public void addFileExclusion(String fileType) { excludeFileTypes.add(fileType); }
public void removeFileLocation(int index) { fileLocations.remove(index); }
public void removeGrabLocation(int index) { grabLocations.remove(index); }
public void removeFileExclusion(int index) { excludeFileTypes.remove(index); }
public Object[] getFileLocationAsArray() { return fileLocations.toArray(); }
public Object[] getGrabLocationAsArray()
{ Object[] toReturn = new Object[grabLocations.size()];
for (int i = 0; i < grabLocations.size(); i++)
toReturn[i] = (String)grabLocations.get(i);
return toReturn;
}
public Object[] getExcludesAsArray()
{ Object[] toReturn = new Object[excludeFileTypes.size()];
for (int i = 0; i < excludeFileTypes.size(); i++)
toReturn[i] = (String)excludeFileTypes.get(i);
return toReturn;
}
// Java-Bean setter-properties
public void setFileLocations(LinkedList fileLocations) { this.fileLocations = fileLocations; }
public void setGrabLocations(LinkedList grabLocations) { this.grabLocations = grabLocations; }
public void setExcludeFileTypes(LinkedList excludeFileTypes) { this.excludeFileTypes = excludeFileTypes; }
public void setLogFileLocation(String logFileLocation) { this.logFileLocation = logFileLocation; }
public void setSaveLogToFile(boolean saveLogToFile) { this.saveLogToFile = saveLogToFile; }
// Java-Bean getter-properties
public LinkedList getFileLocations() { return fileLocations; }
public LinkedList getGrabLocations() { return grabLocations; }
public LinkedList getExcludeFileTypes() { return excludeFileTypes; }
public String getLogfileLocation() { return logFileLocation; }
public boolean getSaveLogToFile() { return saveLogToFile; }
}
