[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[gef-dev] ClassNotFoundException when using XMLEncoder to save model under doSaveAs method
|
Hi all,
I have been trying to use XMLEncoder to save my model/diagram view. But no matter what i did i kept hitting ClassNotFound Exception. Below is the codes written for doSaveAs method.
-----------------------------------------------------------
public void doSaveAs() {
try {
System.out.println("Got here with object "+diagram);
XMLHandler handleXML = new XMLHandler();
handleXML.WriteToXML("Testing.xml",diagram);
} catch(Throwable th) {
th.printStackTrace();
}
System.out.println("Exiting here with object "+diagram);
}
-----------------------------------------------------------
And below is the codes written for WriteToXML
-----------------------------------------------------------
public boolean WriteToXML(String fileName, Object object)
{
boolean result = false;
try
{
System.out.println("Step 1");
XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fileName)));
System.out.println("Step 2");
encoder.writeObject(object);
System.out.println("Step 3");
encoder.close();
System.out.println("Step 4");
result = true;
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
return result;
}
-----------------------------------------------------------
And below is the error message that i encountered.
-----------------------------------------------------------
Got here with object com.bonevich.simplegef.model.view.DiagramView@1c1c92b
Step 1
Step 2
java.lang.ClassNotFoundException: com.bonevich.simplegef.model.view.DiagramView
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(DiagramView);
Continuing ...
Step 3
Step 4
Exiting here with object com.bonevich.simplegef.model.view.DiagramView@1c1c92b
-----------------------------------------------------------
Hopes that someone might be able to tell me if i am doing this wrong or is there something that i am missing which leads to the error.
Attached is .java of XMLHandler and SimpleGefEditor.
By the way i am editing on someone else's code which can be found here http://eclipsewiki.editme.com/GefExamplesForEclipse3
Agape,
Joshua
/*
* Created on Feb 18, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.bonevich.simplegef;
import java.beans.*;
import java.io.*;
public class XMLHandler {
public boolean WriteToXML(String fileName, Object object)
{
boolean result = false;
try
{
System.out.println("Step 1");
XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fileName)));
System.out.println("Step 2");
encoder.writeObject(object);
System.out.println("Step 3");
encoder.close();
System.out.println("Step 4");
result = true;
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
return result;
}
public Object ReadFromXML(String fileName)
{
Object decoded = null;
try
{
XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(new FileInputStream(fileName)));
decoded = decoder.readObject();
decoder.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
return decoded;
}
}
/*
* Created on Jun 20, 2004
*/
package com.bonevich.simplegef.editors;
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.KeyHandler;
import org.eclipse.gef.KeyStroke;
import org.eclipse.gef.Tool;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.palette.ConnectionCreationToolEntry;
import org.eclipse.gef.palette.CreationToolEntry;
import org.eclipse.gef.palette.MarqueeToolEntry;
import org.eclipse.gef.palette.PaletteEntry;
import org.eclipse.gef.palette.PaletteGroup;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.PanningSelectionToolEntry;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.requests.SimpleFactory;
import org.eclipse.gef.tools.ConnectionCreationTool;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.DirectEditAction;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.parts.GraphicalEditorWithPalette;
import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.dialogs.SaveAsDialog;
import org.eclipse.ui.part.FileEditorInput;
import com.bonevich.simplegef.SimpleGefPlugin;
import com.bonevich.simplegef.XMLHandler;
import com.bonevich.simplegef.actions.PropertiesAction;
import com.bonevich.simplegef.model.impl.DiagramImpl;
import com.bonevich.simplegef.model.view.ConnectionView;
import com.bonevich.simplegef.model.view.DiagramView;
import com.bonevich.simplegef.model.view.PartView;
import com.bonevich.simplegef.parts.SimpleGefEditPartFactory;
/**
* @author jbonevic
* @version $Id: SimpleGefEditor.java,v 1.6 2004/09/30 22:51:45 jbonevic Exp $
*/
public class SimpleGefEditor extends GraphicalEditorWithPalette {
DiagramView diagram;
private KeyHandler sharedKeyHandler;
public SimpleGefEditor() {
super();
setEditDomain(new DefaultEditDomain(this));
}
/**
* @see org.eclipse.gef.ui.parts.GraphicalEditorWithPalette#getPaletteRoot()
*/
protected PaletteRoot getPaletteRoot() {
PaletteRoot root = new PaletteRoot();
PaletteGroup group = new PaletteGroup("Tools");
root.add(group);
ToolEntry tool = new PanningSelectionToolEntry();
group.add(tool);
root.setDefaultEntry(tool);
tool = new MarqueeToolEntry();
group.add(tool);
PaletteEntry entry = new CreationToolEntry(
"Part",
"Add a new part to the diagram",
new SimpleFactory(PartView.class),
SimpleGefPlugin.getDefault().getImageDescriptor("icons/part.gif"),
SimpleGefPlugin.getDefault().getImageDescriptor("icons/part.gif")
);
group.add(entry);
entry = new ConnectionCreationToolEntry(
"Connection",
"Add a new connection between parts",
new SimpleFactory(ConnectionView.class),
SimpleGefPlugin.getDefault().getImageDescriptor("icons/connection.gif"),
SimpleGefPlugin.getDefault().getImageDescriptor("icons/connection.gif")
)
{
/**
* @see org.eclipse.gef.palette.ConnectionCreationToolEntry#createTool()
*/
public Tool createTool() {
ConnectionCreationTool connectionTool = (ConnectionCreationTool) super.createTool();
connectionTool.setUnloadWhenFinished(true);
return connectionTool;
}
};
group.add(entry);
return root;
}
/**
* @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer()
*/
protected void initializeGraphicalViewer() {
EditPartViewer viewer = getGraphicalViewer();
diagram = new DiagramView();
viewer.setContents(diagram);
}
/**
* @see org.eclipse.gef.ui.parts.GraphicalEditor#configureGraphicalViewer()
*/
protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
GraphicalViewer viewer = getGraphicalViewer();
ScalableFreeformRootEditPart rootPart = new ScalableFreeformRootEditPart();
viewer.setRootEditPart(rootPart);
viewer.setEditPartFactory(new SimpleGefEditPartFactory());
((FigureCanvas) viewer.getControl()).setScrollBarVisibility(FigureCanvas.ALWAYS);
getGraphicalViewer().setKeyHandler(
new GraphicalViewerKeyHandler(viewer).setParent(getCommonKeyHandler())
);
ContextMenuProvider provider =
new SimpleGefContextMenuProvider(viewer, getActionRegistry());
viewer.setContextMenu(provider);
getSite().registerContextMenu(
"com.bonevich.simplegef.editors.contextmenu", //$NON-NLS-1$
provider,
viewer
);
}
/**
* @see org.eclipse.gef.ui.parts.GraphicalEditor#createActions()
*/
protected void createActions() {
super.createActions();
ActionRegistry registry = getActionRegistry();
IAction action = new DirectEditAction((IWorkbenchPart) this);
registry.registerAction(action);
getSelectionActions().add(action.getId());
action = new PropertiesAction(this);
registry.registerAction(action);
getSelectionActions().add(action.getId());
}
/**
* @return
*/
protected KeyHandler getCommonKeyHandler() {
if (sharedKeyHandler == null) {
sharedKeyHandler = new KeyHandler();
sharedKeyHandler.put(
KeyStroke.getPressed(SWT.DEL, 127, 0),
getActionRegistry().getAction(ActionFactory.DELETE)
);
sharedKeyHandler.put(
KeyStroke.getPressed(SWT.F2, 0),
getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT)
);
}
return sharedKeyHandler;
}
/**
* @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor)
*/
public void doSave(IProgressMonitor monitor) {
}
/**
* @see org.eclipse.ui.ISaveablePart#doSaveAs()
*/
public void doSaveAs() {
try {
System.out.println("Got here with object "+diagram);
XMLHandler handleXML = new XMLHandler();
handleXML.WriteToXML("Testing.xml",diagram);
} catch(Throwable th) {
th.printStackTrace();
}
System.out.println("Exiting here with object "+diagram);
}
/**
* @see org.eclipse.ui.ISaveablePart#isDirty()
*/
public boolean isDirty() {
return getCommandStack().isDirty();
}
/**
* @see org.eclipse.ui.ISaveablePart#isSaveAsAllowed()
*/
public boolean isSaveAsAllowed() {
return true;
}
/*
protected void setInput(IEditorInput input)
{
System.out.println("hmm....");
}
*/
}