From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- bean/test/Test.java | 55 +++++++++ bean/test/applet/oooapplet/OOoViewer.java | 195 ++++++++++++++++++++++++++++++ bean/test/applet/oooapplet/bean.policy | 16 +++ bean/test/applet/oooapplet/example.html | 22 ++++ bean/test/applet/oooapplet/makefile.mk | 79 ++++++++++++ bean/test/makefile.mk | 67 ++++++++++ 6 files changed, 434 insertions(+) create mode 100644 bean/test/Test.java create mode 100644 bean/test/applet/oooapplet/OOoViewer.java create mode 100644 bean/test/applet/oooapplet/bean.policy create mode 100644 bean/test/applet/oooapplet/example.html create mode 100644 bean/test/applet/oooapplet/makefile.mk create mode 100644 bean/test/makefile.mk (limited to 'bean/test') diff --git a/bean/test/Test.java b/bean/test/Test.java new file mode 100644 index 000000000..ea3a0e25b --- /dev/null +++ b/bean/test/Test.java @@ -0,0 +1,55 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package test; + + +import java.awt.*; +import java.awt.event.*; +import com.sun.star.comp.beans.OOoBean; + +public class Test +{ + + public static void main(String [] args) + { + try { + Frame f = new Frame(); + final OOoBean b = new OOoBean(); + f.add(b, BorderLayout.CENTER); + f.pack(); + f.setSize(500, 400); + f.setVisible(true); + b.loadFromURL("private:factory/swriter", null); + f.validate(); + + f.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing( java.awt.event.WindowEvent e){ + b.stopOOoConnection(); + System.exit(0); + + }}); + } + catch (Exception e) + { + e.printStackTrace(); + } + } +} + + diff --git a/bean/test/applet/oooapplet/OOoViewer.java b/bean/test/applet/oooapplet/OOoViewer.java new file mode 100644 index 000000000..14851e0ec --- /dev/null +++ b/bean/test/applet/oooapplet/OOoViewer.java @@ -0,0 +1,195 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package oooapplet; + +import java.lang.reflect.Method; +import java.lang.reflect.Array; +import java.net.*; +import java.io.*; +import java.awt.*; +import java.applet.Applet; +import java.awt.Graphics; +import java.util.*; + +public class OOoViewer extends Applet { + + private static CustomURLClassLoader m_loader; + + Object m_objBean; + + @Override + public void init() { + try { + if (m_loader == null) { + String s = getParameter("office"); + System.out.println("sun.awt.noxembed: " + System.getProperty("sun.awt.noxembed")); + System.setProperty("sun.awt.xembedserver", "true"); + + File f = new File(s); + URL url = f.toURI().toURL(); + String officeURL = url.toString(); + URL[] arURL = new URL[] { + new URL(officeURL + "/program/classes/officebean.jar"), + new URL(officeURL + "/program/classes/libreoffice.jar"), + new URL(officeURL + "/program/classes/java_uno.jar") + }; + m_loader = new CustomURLClassLoader(arURL); + File fileProg = new File(s + "/program"); + m_loader.addResourcePath(fileProg.toURI().toURL()); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + + @Override + public void start() { + try { + Class beanClass = m_loader.loadClass("com.sun.star.comp.beans.OOoBean"); + m_objBean = beanClass.newInstance(); + setLayout(new BorderLayout()); + add((java.awt.Container)m_objBean, BorderLayout.CENTER); + setVisible(true); + //this does not work here. Why? +// Class arPropValClass = m_loader.loadClass("[Lcom.sun.star.beans.PropertyValue;"); + Object arProp = Array.newInstance( + m_loader.loadClass("com.sun.star.beans.PropertyValue"), 1); + + Method methLoad = beanClass.getMethod( + "loadFromURL", new Class[] { + String.class, arProp.getClass() }); + + methLoad.invoke(m_objBean, new Object[] {"private:factory/swriter", null}); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (ClassCastException e) { + e.printStackTrace(); + } catch (java.lang.reflect.InvocationTargetException e) { + e.printStackTrace(); + } catch (java.lang.NoSuchMethodException e) { + e.printStackTrace(); } + + + + validate(); + } + + @Override + public void stop() { + try { + Method methStop = m_objBean.getClass().getMethod( + "stopOOoConnection", new Class[0]); + methStop.invoke(m_objBean, (Object[]) null); + } catch (java.lang.NoSuchMethodException e) { + e.printStackTrace(); + } catch (java.lang.IllegalAccessException e) { + e.printStackTrace(); + } + catch (java.lang.reflect.InvocationTargetException e) { + e.printStackTrace(); + } + + } + + @Override + public void destroy() { + } + + @Override + public void paint(Graphics g) { + } +} + + +final class CustomURLClassLoader extends URLClassLoader { + + private ArrayList resourcePaths; + + public CustomURLClassLoader( URL[] urls ) { + super( urls ); + } + + @Override + protected Class findClass( String name ) throws ClassNotFoundException { + // This is only called via this.loadClass -> super.loadClass -> + // this.findClass, after this.loadClass has already called + // super.findClass, so no need to call super.findClass again: + throw new ClassNotFoundException( name ); + } + + + + @Override + protected synchronized Class loadClass( String name, boolean resolve ) + throws ClassNotFoundException + { + Class c = findLoadedClass( name ); + if ( c == null ) { + try { + c = super.findClass( name ); + } catch ( ClassNotFoundException e ) { + return super.loadClass( name, resolve ); + } catch ( SecurityException e ) { + // A SecurityException "Prohibited package name: java.lang" + // may occur when the user added the JVM's rt.jar to the + // java.class.path: + return super.loadClass( name, resolve ); + } + } + if ( resolve ) { + resolveClass( c ); + } + return c; + } + + public void addResourcePath(URL rurl) { + if (resourcePaths == null) resourcePaths = new ArrayList(); + resourcePaths.add(rurl); + } + + @Override + public URL getResource(String name) { + if (resourcePaths == null) return null; + + URL result = super.getResource(name); + if (result != null) { + return result; + } + + for (URL u : resourcePaths) { + if (u.getProtocol().startsWith("file")){ + try { + File f1 = new File(u.getPath()); + File f2 = new File(f1, name); + if (f2.exists()) { + return new URL(f2.toURI().toASCIIString()); + } + } catch (MalformedURLException e1) { + System.err.println("malformed url: "+e1.getMessage()); + continue; + } + } + } + return null; + } + +} diff --git a/bean/test/applet/oooapplet/bean.policy b/bean/test/applet/oooapplet/bean.policy new file mode 100644 index 000000000..5eb633d12 --- /dev/null +++ b/bean/test/applet/oooapplet/bean.policy @@ -0,0 +1,16 @@ +/* AUTOMATICALLY GENERATED ON Fri Aug 04 13:38:37 CEST 2006*/ +/* DO NOT EDIT */ +/*We could also use more accurate permissions here, but then we would need */ +/*to generate this file because of the paths here. */ +/*grant { */ +/* permission java.lang.RuntimePermission "loadLibrary.*"; */ +/* permission java.io.FilePermission "C:\\Program Files\\OpenOffice.org 2.0\\program\\*", "read"; */ +/* permission java.io.FilePermission "C:\\Program Files\\OpenOffice.org 2.0\\program\\classes\\*", "read"; */ +/* permission java.util.PropertyPermission "*", "read"; */ +/*}; */ + +grant { + permission java.security.AllPermission; + permission java.lang.RuntimePermission "queuePrintJob"; +}; + diff --git a/bean/test/applet/oooapplet/example.html b/bean/test/applet/oooapplet/example.html new file mode 100644 index 000000000..036684e24 --- /dev/null +++ b/bean/test/applet/oooapplet/example.html @@ -0,0 +1,22 @@ + + + + + +

OOoBean used by applet

+
+ +
+ + + + + \ No newline at end of file diff --git a/bean/test/applet/oooapplet/makefile.mk b/bean/test/applet/oooapplet/makefile.mk new file mode 100644 index 000000000..89c915a8d --- /dev/null +++ b/bean/test/applet/oooapplet/makefile.mk @@ -0,0 +1,79 @@ +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +PRJ := ..$/..$/.. +PRJNAME := bean +TARGET := oooapplet +PACKAGE = oooapplet + +.INCLUDE: settings.mk + +#----- compile .java files ----------------------------------------- + +JARFILES = officebean.jar ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar +JAVAFILES = OOoViewer.java +JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) + + +JARCLASSDIRS = \ + oooapplet + +JARTARGET = $(TARGET).jar +JARCOMPRESS = TRUE + +#----- make a jar from compiled files ------------------------------ + + +.INCLUDE: target.mk + + +ALLTAR : \ + COPY_FILES \ + RUNINSTRUCTIONS + + +COPY_FILES: example.html + $(GNUCOPY) -p $< $(CLASSDIR) +# --- Targets ------------------------------------------------------ + + +.IF "$(OS)"=="WNT" +RUN: + firefox "$(CLASSDIR)$/example.html?$(office)" +.ELSE +TESTURL="file:///$(PWD)$/$(CLASSDIR)$/example.html?$(office)" +RUN: + firefox ${TESTURL:s/\///} +.ENDIF + +run: RUN + + + +RUNINSTRUCTIONS : + @echo . + @echo ########################### N O T E ###################################### + @echo . + @echo "Add to the java runtime settings for applets in the control panel these lines:" + @echo "-Djava.security.policy=$(PWD)$/bean.policy" + @echo "To run the test you have to provide the office location." + @echo Example: + @echo dmake run office="d:\\myOffice" + @echo . + + diff --git a/bean/test/makefile.mk b/bean/test/makefile.mk new file mode 100644 index 000000000..f48ab8fdc --- /dev/null +++ b/bean/test/makefile.mk @@ -0,0 +1,67 @@ +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +PRJ := .. +PRJNAME := bean +TARGET := test +PACKAGE = test + +.INCLUDE: settings.mk + +#----- compile .java files ----------------------------------------- + +JARFILES = officebean.jar ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar +JAVAFILES = Test.java +JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) + +#----- make a jar from compiled files ------------------------------ + +MAXLINELENGTH = 100000 + +OFFICE_CLASSPATH_TMP:=$(foreach,i,$(JARFILES) $(office)$/program$/classes$/$(i)$(LIBO_PATH_SEPARATOR)) +OFFICE_CLASSPATH=$(OFFICE_CLASSPATH_TMP:t"")$(LIBO_PATH_SEPARATOR)$(CLASSDIR) + +OOOBEAN_OPTIONS=-Dcom.sun.star.officebean.Options=--norestore + + +.INCLUDE: target.mk + +ALLTAR : RUNINSTRUCTIONS + +# --- Targets ------------------------------------------------------ + +#The OOoBean uses the classpath to find the office installation. +#Therefore we must use the jar files from the office. +RUN: + java -cp $(OFFICE_CLASSPATH) $(OOOBEAN_OPTIONS) $(PACKAGE).Test +run: RUN + +rund: + java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8100 -cp $(OFFICE_CLASSPATH) $(OOOBEAN_OPTIONS) $(PACKAGE).Test + + + +RUNINSTRUCTIONS : + @echo . + @echo ########################### N O T E ###################################### + @echo . + @echo "To run the test you have to provide the office location." + @echo Example: + @echo dmake run office="d:/myOffice" + @echo . + -- cgit v1.2.3