JS Plugin causes java.lang.ClassCastException when Oxygen is closed.
Post here questions and problems related to oXygen frameworks/document types.
-
- Posts: 10
- Joined: Fri Nov 02, 2018 12:31 pm
JS Plugin causes java.lang.ClassCastException when Oxygen is closed.
Hello,
i've been noticing an odd exception while testing a JS plugin I wrote.
The plugin handles a custom save behaviour (using the editorAboutToBeSavedVeto method). The plugin itself works as expected and without errors.
But, when Oxygen XML Editor is closed while this plugin is active(no matter if an editor is still open or not), this exception is thrown:
I can not figure out what it is in my plugin that causes this. Maybe someone can help.
Here the full code of my plugin:
Thank you
i've been noticing an odd exception while testing a JS plugin I wrote.
The plugin handles a custom save behaviour (using the editorAboutToBeSavedVeto method). The plugin itself works as expected and without errors.
But, when Oxygen XML Editor is closed while this plugin is active(no matter if an editor is still open or not), this exception is thrown:
Code: Select all
java.lang.ClassCastException: org.mozilla.javascript.UniqueTag cannot be cast to org.mozilla.javascript.Function
at ro.sync.exml.plugin.WorkspaceAccessOverJSPluginExtension.callFunction(Unknown Source)
at ro.sync.exml.plugin.WorkspaceAccessOverJSPluginExtension.applicationClosing(Unknown Source)
at ro.sync.exml.MainFrame$54.applicationWillBeClosedOrHidden(Unknown Source)
at ro.sync.exml.MainFrame.ecn(Unknown Source)
at ro.sync.exml.MainFrame.kcn(Unknown Source)
at ro.sync.exml.MainFrame.kbn(Unknown Source)
at ro.sync.exml.MainFrame.jjf(Unknown Source)
at ro.sync.exml.MainFrame.handleQuit(Unknown Source)
at ro.sync.ui.application.b.hif(Unknown Source)
at ro.sync.ui.application.b.njf(Unknown Source)
at ro.sync.ui.application.b$2.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.Window.processWindowEvent(Unknown Source)
at javax.swing.JFrame.processWindowEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Here the full code of my plugin:
Code: Select all
function applicationStarted(pluginWorkspaceAccess) {
Packages.java.lang.System.err.println("Application started " + pluginWorkspaceAccess);
var edChangedListener = {
editorOpened: function (editorLocation) {
var editor = pluginWorkspaceAccess.getEditorAccess(editorLocation, Packages.ro.sync.exml.workspace.api.PluginWorkspace.MAIN_EDITING_AREA);
preSaveListener = {
/* Called when a document is about to be Saved */
editorAboutToBeSavedVeto: function (operationType) {
if (operationType == Packages.ro.sync.exml.workspace.api.listeners.WSEditorListener.SAVE_OPERATION) {
/* Access root Element of Document and read oxyFramework attribute*/
str = editor.createContentInputStream();
reader = new Packages.java.io.InputStreamReader(str, "UTF-8");
is = new Packages.org.xml.sax.InputSource(reader);
is.setEncoding("UTF-8");
dbf = new Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
doc = db.parse(is);
rootElement = doc.getDocumentElement();
OxyFrame = rootElement.getAttribute("hal:oxyFramework");
ID = rootElement.getAttribute("xml:id")
IDarr = ID.split("_");
//javax.swing.JOptionPane.showMessageDialog(null, ID);
/* If document is not part of hallerNet, abort and return to default save behaviour */
if (OxyFrame != "true") {
//"return 'true'" triggers default save function
return true;
}
/* Ask the User if customSave should be performed, otherwise return to deault save behaviour */
if (javax.swing.JOptionPane.showConfirmDialog(null,
"Dokument auf data.hallernet.org speichern?", "Warning", javax.swing.JOptionPane.YES_NO_OPTION) == javax.swing.JOptionPane.NO_OPTION) {
// Wenn "Nein" ausgewählt wird. "return 'true'" triggers default save function
return true;
} else {
// perform save operation at determined path
dirType = IDarr[0] + "s";
dirNum = IDarr[1].substring(0, 3);
chosenURL = new Packages.java.net.URL("http://data.hallernet.org/db-sandbox-cceh/" + dirType + "/" + dirNum + "/" + ID + ".xml");
editor.saveAs(chosenURL);
return false;
}
}
return true;
}
}
preSaveListener = new JavaAdapter(Packages.ro.sync.exml.workspace.api.listeners.WSEditorListener, preSaveListener);
if (editor != 0) {
editor.addEditorListener(preSaveListener);
}
}
}
var edChangedListenerAdapter = new JavaAdapter(Packages.ro.sync.exml.workspace.api.listeners.WSEditorChangeListener, edChangedListener);
/* Add the editor changed listener */
pluginWorkspaceAccess.addEditorChangeListener(
edChangedListenerAdapter,
Packages.ro.sync.exml.workspace.api.PluginWorkspace.MAIN_EDITING_AREA);
}
-
- Posts: 9434
- Joined: Fri Jul 09, 2004 5:18 pm
Re: JS Plugin causes java.lang.ClassCastException when Oxygen is closed.
Hi Andreas,
Please add to your Javascript file also this function:
because Oxygen tries to call it when it is closing and as it is not there, it issues that error.
I will make changes in our code so that we never throw that strange error when that particular method is missing from the Javascript file.
Regards,
Radu
Please add to your Javascript file also this function:
Code: Select all
function applicationClosing(pluginWorkspaceAccess) {
}
I will make changes in our code so that we never throw that strange error when that particular method is missing from the Javascript file.
Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
<oXygen/> XML Editor
http://www.oxygenxml.com
Return to “SDK-API, Frameworks - Document Types”
Jump to
- Oxygen XML Editor/Author/Developer
- ↳ Feature Request
- ↳ Common Problems
- ↳ DITA (Editing and Publishing DITA Content)
- ↳ SDK-API, Frameworks - Document Types
- ↳ DocBook
- ↳ TEI
- ↳ XHTML
- ↳ Other Issues
- Oxygen XML Web Author
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Content Fusion
- ↳ Feature Request
- ↳ Common Problems
- Oxygen JSON Editor
- ↳ Feature Request
- ↳ Common Problems
- Oxygen PDF Chemistry
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Feedback
- ↳ Feature Request
- ↳ Common Problems
- Oxygen XML WebHelp
- ↳ Feature Request
- ↳ Common Problems
- XML
- ↳ General XML Questions
- ↳ XSLT and FOP
- ↳ XML Schemas
- ↳ XQuery
- NVDL
- ↳ General NVDL Issues
- ↳ oNVDL Related Issues
- XML Services Market
- ↳ Offer a Service