Eclipse - Serialisierung?

flashray

Erfahrenes Mitglied
Hallo,

gibt es in Eclipse irgendwelche Serialisierungstools die einem das Leben vereinfachen?

In unserem Uniprojekt Netzwerkspiel sind uns mehr als 30 Klassen vorgegeben die als Standardmitteilungen und Datenstrukturen dienen. Diese werden laufend erweitert, ergänzt, aktualisiert.

Dabei vergisst der Autor gerne mal ein Paar Serializable Interfaces oder die SerialVersionUID. Die SerialVersionUIDs werden auch nicht aktualisiert.

Toll fände ich solch eine Funktion in eclipse: Sämtliche zu serialisierenden Klassen markieren und in einem Schritt eclipse anweisen, das es bei allen die SerialVersionUID kontrolliert, und nach Bedarf aktualisiert bzw. korrigiert.

Das Kontrollieren ob das Serializable Interfaces da ist, muss man wohl noch manuell machen. Aber das andere genannte Feature wäre nicht schlecht, anstatt in jeder der 30 bis 40 Klasse die UID manuell neu generieren zu lassen.


Vg Erdal
 
Hallo,

Project -> Kontext Menu -> Source -> Clean Up -> Add serial version ID
Erzeugt für alle Klassen ein entsprechendes SerialUID Feld.
Das interface Serializable implementieren musst du schon selber machen.

... das ließe sich aber sicherlich mit einem entsprechenden Eclipse Monkey
Script (http://www.eclipse.org/dash/) automatisieren.

Gruß Tom
 
Hallo Tom,

Danke für den Hinweis. Werde nach Zeit und Möglichkeit darauf zugreifen. Habe das Plugin zwar installiert, javascript gehört jedoch nicht bzw. noch nicht zu meinen Programmierkenntnissen.

Da das Source->Clean Up in Eclipse IDs zwar Adden aber nicht aktualisieren kann, habe ich eine kleine Applikation geschrieben die IDs aus allen Klassen eines beliebigen Ordners löscht. Anschließend kann man dann mit Eclipse alle IDs nochmals frisch einpflegen.


Vg Erdal

Java:
import java.io.*;

import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;

public class DeleteSerialVersionUIDs {

	public DeleteSerialVersionUIDs() throws IOException, BadLocationException {
		String s = "";
		
		Package curPackage = DeleteSerialVersionUIDs.class.getPackage();
		if (curPackage != null)
			s = curPackage.getName().replace(".", "/");
		
		File file = new File("./"  + s);

		File[] files = file.listFiles();

		this.deleteSerialVersionUIDs(files);
	}

	public static void main(String[] args) throws IOException,
			BadLocationException {
		new DeleteSerialVersionUIDs();
	}

	public void deleteSerialVersionUIDs(File[] files) throws IOException,
			BadLocationException {
		JTextArea textArea = new JTextArea();

		File temp = null;

		for (int i = 0; i < files.length; i++) {
			temp = files[i];
			if (temp.isDirectory())
				this.deleteSerialVersionUIDs(temp.listFiles());
			else if (temp.getName().endsWith("java")
					&& !temp.getName().equalsIgnoreCase(
							"DeleteSerialVersionUIDs.java")) {
				textArea.read(new FileReader(temp), null);

				System.out.println(temp.getAbsolutePath());

				String s = textArea.getText();

				int offSet = s.toLowerCase().indexOf("serialversionuid");

				if (offSet == -1)
					continue;

				int line = textArea.getLineOfOffset(offSet);

				int startLine = textArea.getLineStartOffset(line);

				int endLine = textArea.getLineEndOffset(line);

				String t = s.substring(0, startLine)
						+ s.substring(endLine, s.length());

				textArea.setText(t);

				textArea.write(new FileWriter(temp));

			}
		}
	}
}
 
Zurück