Kaydet (Commit) 3ab2d3a2 authored tarafından Noel Grandin's avatar Noel Grandin

fdo#88256 fix crash when running javascript macro

caused by my commit 8583da1e
"java: remove unused fields"

Change-Id: Ibcd6462e8229a0a6cb98ebfd16ce5d2ea45ca931
üst b6013382
...@@ -4527,10 +4527,6 @@ dnl Check for syslog header ...@@ -4527,10 +4527,6 @@ dnl Check for syslog header
dnl =================================================================== dnl ===================================================================
AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H)) AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
# placeholder for future crash reporter feature
ENABLE_CRASHDUMP=""
AC_SUBST(ENABLE_CRASHDUMP)
dnl Set the ENABLE_WERROR variable. (Activate --enable-werror) dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
dnl =================================================================== dnl ===================================================================
AC_MSG_CHECKING([whether to turn warnings to errors]) AC_MSG_CHECKING([whether to turn warnings to errors])
......
...@@ -55,6 +55,11 @@ public class ParcelBrowseNode extends PropertySet implements ...@@ -55,6 +55,11 @@ public class ParcelBrowseNode extends PropertySet implements
private Collection<XBrowseNode> browsenodes; private Collection<XBrowseNode> browsenodes;
private final ParcelContainer container; private final ParcelContainer container;
private Parcel parcel; private Parcel parcel;
// these four are properties, they are accessed via reflection
public boolean deletable = true;
public boolean editable = false;
public boolean creatable = false;
public boolean renamable = true;
public ParcelBrowseNode(ScriptProvider provider, ParcelContainer container, public ParcelBrowseNode(ScriptProvider provider, ParcelContainer container,
String parcelName) { String parcelName) {
...@@ -75,15 +80,28 @@ public class ParcelBrowseNode extends PropertySet implements ...@@ -75,15 +80,28 @@ public class ParcelBrowseNode extends PropertySet implements
registerProperty("Editable", new Type(boolean.class), (short)0, "editable"); registerProperty("Editable", new Type(boolean.class), (short)0, "editable");
registerProperty("Creatable", new Type(boolean.class), (short)0, "creatable"); registerProperty("Creatable", new Type(boolean.class), (short)0, "creatable");
registerProperty("Renamable", new Type(boolean.class), (short)0, "renamable"); registerProperty("Renamable", new Type(boolean.class), (short)0, "renamable");
if (provider.hasScriptEditor())
{
this.creatable = true;
}
String parcelDirUrl = parcel.getPathToParcel();
XComponentContext xCtx = provider.getScriptingContext().getComponentContext(); XComponentContext xCtx = provider.getScriptingContext().getComponentContext();
XMultiComponentFactory xFac = xCtx.getServiceManager(); XMultiComponentFactory xFac = xCtx.getServiceManager();
try { try {
UnoRuntime.queryInterface(XSimpleFileAccess.class, XSimpleFileAccess xSFA = UnoRuntime.queryInterface(XSimpleFileAccess.class,
xFac.createInstanceWithContext( xFac.createInstanceWithContext(
"com.sun.star.ucb.SimpleFileAccess", "com.sun.star.ucb.SimpleFileAccess",
xCtx)); xCtx));
if ( xSFA != null && ( xSFA.isReadOnly( parcelDirUrl ) ||
container.isUnoPkg() ) )
{
deletable = false;
editable = false;
creatable = false;
renamable = false;
}
} catch (com.sun.star.uno.Exception e) { } catch (com.sun.star.uno.Exception e) {
// TODO propagate potential errors // TODO propagate potential errors
LogUtils.DEBUG("Caught exception creating ParcelBrowseNode " + e); LogUtils.DEBUG("Caught exception creating ParcelBrowseNode " + e);
......
...@@ -37,6 +37,9 @@ public class PkgProviderBrowseNode extends ProviderBrowseNode { ...@@ -37,6 +37,9 @@ public class PkgProviderBrowseNode extends ProviderBrowseNode {
container.getParcelContainerDir()); container.getParcelContainerDir());
LogUtils.DEBUG("*** PkgProviderBrowseNode ctor, container has num parcels = " + LogUtils.DEBUG("*** PkgProviderBrowseNode ctor, container has num parcels = " +
container.getElementNames().length); container.getElementNames().length);
deletable = false;
editable = false;
creatable = false;
} }
@Override public String getName() { @Override public String getName() {
......
...@@ -52,6 +52,10 @@ public class ProviderBrowseNode extends PropertySet implements ...@@ -52,6 +52,10 @@ public class ProviderBrowseNode extends PropertySet implements
private final String name; private final String name;
protected ParcelContainer container; protected ParcelContainer container;
private final XComponentContext m_xCtx; private final XComponentContext m_xCtx;
// these are properties, they are accessed by reflection
public boolean deletable = true;
public boolean creatable = true;
public boolean editable = false;
public ProviderBrowseNode(ScriptProvider provider, ParcelContainer container, public ProviderBrowseNode(ScriptProvider provider, ParcelContainer container,
XComponentContext xCtx) { XComponentContext xCtx) {
...@@ -68,10 +72,15 @@ public class ProviderBrowseNode extends PropertySet implements ...@@ -68,10 +72,15 @@ public class ProviderBrowseNode extends PropertySet implements
XMultiComponentFactory xFac = m_xCtx.getServiceManager(); XMultiComponentFactory xFac = m_xCtx.getServiceManager();
try { try {
UnoRuntime.queryInterface(XSimpleFileAccess.class, XSimpleFileAccess xSFA = UnoRuntime.queryInterface(XSimpleFileAccess.class,
xFac.createInstanceWithContext( xFac.createInstanceWithContext(
"com.sun.star.ucb.SimpleFileAccess", "com.sun.star.ucb.SimpleFileAccess",
xCtx)); xCtx));
if ( container.isUnoPkg() || xSFA.isReadOnly( container.getParcelContainerDir() ) )
{
deletable = false;
creatable = false;
}
} }
// TODO propage errors // TODO propage errors
catch (com.sun.star.uno.Exception e) { catch (com.sun.star.uno.Exception e) {
......
...@@ -58,25 +58,32 @@ public class ScriptBrowseNode extends PropertySet implements ...@@ -58,25 +58,32 @@ public class ScriptBrowseNode extends PropertySet implements
private Parcel parent; private Parcel parent;
private String name; private String name;
private boolean editable; // these are properties, accessed by reflection
private boolean deletable = false; public String uri;
private boolean renamable = false; public String description;
public boolean editable;
public boolean deletable = false;
public boolean renamable = false;
public ScriptBrowseNode(ScriptProvider provider, Parcel parent, String name) { public ScriptBrowseNode(ScriptProvider provider, Parcel parent, String name) {
this.provider = provider; this.provider = provider;
this.name = name; this.name = name;
this.parent = parent; this.parent = parent;
ScriptMetaData data = null;
XComponentContext xCtx = provider.getScriptingContext().getComponentContext(); XComponentContext xCtx = provider.getScriptingContext().getComponentContext();
XMultiComponentFactory xFac = xCtx.getServiceManager(); XMultiComponentFactory xFac = xCtx.getServiceManager();
try { try {
data = (ScriptMetaData)parent.getByName( name );
XSimpleFileAccess xSFA = UnoRuntime.queryInterface( XSimpleFileAccess xSFA = UnoRuntime.queryInterface(
XSimpleFileAccess.class, XSimpleFileAccess.class,
xFac.createInstanceWithContext( xFac.createInstanceWithContext(
"com.sun.star.ucb.SimpleFileAccess", "com.sun.star.ucb.SimpleFileAccess",
xCtx)); xCtx));
uri = data.getShortFormScriptURL();
description = data.getDescription();
if (provider.hasScriptEditor()) { if (provider.hasScriptEditor()) {
this.editable = true; this.editable = true;
...@@ -147,7 +154,9 @@ public class ScriptBrowseNode extends PropertySet implements ...@@ -147,7 +154,9 @@ public class ScriptBrowseNode extends PropertySet implements
LogUtils.DEBUG("** caught exception getting script data for " + name + LogUtils.DEBUG("** caught exception getting script data for " + name +
" ->" + e.toString()); " ->" + e.toString());
} }
uri = data.getShortFormScriptURL();
} }
// implementation of XInvocation interface // implementation of XInvocation interface
public XIntrospectionAccess getIntrospection() { public XIntrospectionAccess getIntrospection() {
return null; return null;
...@@ -250,6 +259,7 @@ public class ScriptBrowseNode extends PropertySet implements ...@@ -250,6 +259,7 @@ public class ScriptBrowseNode extends PropertySet implements
LogUtils.DEBUG("Now remove old script"); LogUtils.DEBUG("Now remove old script");
parent.removeByName(name); parent.removeByName(name);
uri = data.getShortFormScriptURL();
name = languageName; name = languageName;
result = new Any(new Type(XBrowseNode.class), this); result = new Any(new Type(XBrowseNode.class), this);
} catch (NoSuchElementException nse) { } catch (NoSuchElementException nse) {
......
...@@ -44,13 +44,16 @@ public class ScriptContext extends PropertySet implements XScriptContext { ...@@ -44,13 +44,16 @@ public class ScriptContext extends PropertySet implements XScriptContext {
private final static String DOC_URI = "SCRIPTING_DOC_URI"; private final static String DOC_URI = "SCRIPTING_DOC_URI";
private final XModel m_xModel; public final XModel m_xModel;
private final XScriptInvocationContext m_xInvocationContext; private final XScriptInvocationContext m_xInvocationContext;
private final XDesktop m_xDeskTop; private final XDesktop m_xDeskTop;
private final XComponentContext m_xComponentContext; private final XComponentContext m_xComponentContext;
// property, accessed via reflection
public String m_sDocURI = null;
private ScriptContext(XComponentContext xmComponentContext, XDesktop xDesktop, private ScriptContext(XComponentContext xmComponentContext, XDesktop xDesktop,
XModel xModel, XScriptInvocationContext xInvocContext) { XModel xModel, XScriptInvocationContext xInvocContext) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment