diff options
Diffstat (limited to 'qadevOOo/testdocs/backend/org/openoffice/JavaSystemBackend.java')
-rw-r--r-- | qadevOOo/testdocs/backend/org/openoffice/JavaSystemBackend.java | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/qadevOOo/testdocs/backend/org/openoffice/JavaSystemBackend.java b/qadevOOo/testdocs/backend/org/openoffice/JavaSystemBackend.java new file mode 100644 index 000000000..98aee0e1e --- /dev/null +++ b/qadevOOo/testdocs/backend/org/openoffice/JavaSystemBackend.java @@ -0,0 +1,240 @@ +/* + * 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 org.openoffice; + +import com.sun.star.comp.loader.FactoryHelper; +import com.sun.star.configuration.backend.PropertyInfo; +import com.sun.star.configuration.backend.XLayer; +import com.sun.star.configuration.backend.XLayerContentDescriber; +import com.sun.star.configuration.backend.XLayerHandler; +import com.sun.star.configuration.backend.XSingleLayerStratum; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.lang.XSingleServiceFactory; +import com.sun.star.lang.XTypeProvider; +import com.sun.star.registry.XRegistryKey; +import com.sun.star.uno.Type; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; +import com.sun.star.util.XTimeStamped; + +public class JavaSystemBackend implements XSingleLayerStratum, XTypeProvider, + XServiceInfo, XTimeStamped, XComponent { + public static final String __serviceName = "com.sun.star.configuration.backend.PlatformBackend"; + public static final String __implName = "org.openoffice.JavaSystemBackend"; + public static final String testComponent = "org.openoffice.Office.Common"; + protected static XMultiServiceFactory msf = null; + protected XLayer aLayer = null; + + /** + * Get the implementation id. + * @return An empty implementation id. + * @see com.sun.star.lang.XTypeProvider + */ + public byte[] getImplementationId() { + return new byte[0]; + } + + /** + * Function for reading the implementation name. + * + * @return the implementation name + * @see com.sun.star.lang.XServiceInfo + */ + public String getImplementationName() { + return __implName; + } + + public com.sun.star.configuration.backend.XLayer getLayer(String str, + String str1) + throws com.sun.star.configuration.backend.BackendAccessException, + com.sun.star.lang.IllegalArgumentException { + if (aLayer == null) { + System.out.println("JavaSystemBackend::getLayer() called for " + + str); + aLayer = new CommonLayer(); + } + + return aLayer; + } + + /** + * Function for reading all supported services + * + * @return An aaray with all supported service names + * @see com.sun.star.lang.XServiceInfo + */ + public String[] getSupportedServiceNames() { + String[] supServiceNames = { __serviceName }; + + return supServiceNames; + } + + public String getTimestamp() { + //not really implemented + return "2004-03-31"; + } + + /** + * Get all implemented types of this class. + * @return An array of implemented interface types. + * @see com.sun.star.lang.XTypeProvider + */ + public Type[] getTypes() { + Type[] type = new Type[5]; + type[0] = new Type(XInterface.class); + type[1] = new Type(XTypeProvider.class); + type[2] = new Type(XSingleLayerStratum.class); + type[3] = new Type(XServiceInfo.class); + type[4] = new Type(XTimeStamped.class); + + return type; + } + + public com.sun.star.configuration.backend.XUpdatableLayer getUpdatableLayer(String str) + throws com.sun.star.configuration.backend.BackendAccessException, + com.sun.star.lang.NoSupportException, + com.sun.star.lang.IllegalArgumentException { + throw new com.sun.star.lang.NoSupportException( + "Cannot write to test backend", this); + } + + /** + * Does the implementation support this service? + * + * @param serviceName The name of the service in question + * @return true, if service is supported, false otherwise + * @see com.sun.star.lang.XServiceInfo + */ + public boolean supportsService(String serviceName) { + return serviceName.equals(__serviceName); + } + + /** + * + * Gives a factory for creating the service. + * This method is called by the <code>JavaLoader</code> + * <p> + * @return returns a <code>XSingleServiceFactory</code> for creating the component + * @param implName the name of the implementation for which a service is desired + * @param multiFactory the service manager to be used if needed + * @param regKey the registryKey + * @see com.sun.star.comp.loader.JavaLoader + */ + public static XSingleServiceFactory __getServiceFactory(String implName, + XMultiServiceFactory multiFactory, + XRegistryKey regKey) { + XSingleServiceFactory xSingleServiceFactory = null; + + msf = multiFactory; + + if (implName.equals(JavaSystemBackend.class.getName())) { + xSingleServiceFactory = FactoryHelper.getServiceFactory( + JavaSystemBackend.class, + __serviceName, multiFactory, + regKey); + } + + return xSingleServiceFactory; + } + + /** + * Writes the service information into the given registry key. + * This method is called by the <code>JavaLoader</code> + * <p> + * @return returns true if the operation succeeded + * @param regKey the registryKey + * @see com.sun.star.comp.loader.JavaLoader + */ + public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) { + boolean success = FactoryHelper.writeRegistryServiceInfo(__implName, + __serviceName, + regKey); + + if (success) { + try { + String keyName = "/" + __implName + + "/DATA/SupportedComponents"; + XRegistryKey newKey = regKey.createKey(keyName); + + String[] supportedComponents = { testComponent }; + newKey.setAsciiListValue(supportedComponents); + } catch (Exception ex) { + success = false; // prevent startup loop + System.out.println("can't register component"); + } + } + + return success; + } + + public void addEventListener(com.sun.star.lang.XEventListener xEventListener) { + } + + public void dispose() { + System.out.println("JavaSystemBackend::dispose() called"); + } + + public void removeEventListener(com.sun.star.lang.XEventListener xEventListener) { + } + + private class CommonLayer implements XLayer, XTimeStamped { + public void readData(XLayerHandler xLayerHandler) + throws com.sun.star.lang.NullPointerException, + com.sun.star.lang.WrappedTargetException, + com.sun.star.configuration.backend.MalformedDataException { + System.out.println("CommonLayer is read"); + + if (xLayerHandler == null) { + throw new com.sun.star.lang.NullPointerException( + "null is not a legal LayerHandler"); + } + + XLayerContentDescriber xLayerContentDescriber = null; + + try { + xLayerContentDescriber = UnoRuntime.queryInterface( + XLayerContentDescriber.class, + msf.createInstance( + "com.sun.star.comp.configuration.backend.LayerDescriber")); + } catch (com.sun.star.uno.Exception e) { + throw new com.sun.star.lang.NullPointerException(e, + "exception while creating LayerDesccriber"); + } + + if (xLayerContentDescriber == null) { + throw new com.sun.star.lang.NullPointerException( + "created LayerDescriber isn't valid"); + } + + PropertyInfo[] pInfo = new PropertyInfo[1]; + pInfo[0] = new PropertyInfo(); + pInfo[0].Name = "org.openoffice.Office.Common/Undo/Steps"; + pInfo[0].Value = Integer.valueOf(12); + pInfo[0].Type = "int"; + pInfo[0].Protected = false; + xLayerContentDescriber.describeLayer(xLayerHandler, pInfo); + } + + public String getTimestamp() { + //not really implemented + return "2004-03-31"; + } + } +} |