1 message in org.openoffice.fr.prog[prog] [Fwd: [api-dev] Call for Actio...
FromSent OnAttachments
Sophie GautierJul 9, 2004 2:54 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] [Fwd: [api-dev] Call for Action: Simplifying the OOo UNO API]Actions...
From:Sophie Gautier (sgau@free.fr)
Date:Jul 9, 2004 2:54:34 am
List:org.openoffice.fr.prog

Bonjour,

Certains peuvent être intéressés par ce mail, je le forward donc ici.

A bientôt Sophie

-------- Original Message -------- Subject: [api-dev] Call for Action: Simplifying the OOo UNO API Date: Thu, 08 Jul 2004 17:01:41 +0200 From: Stephan Bergmann <step@sun.com> Reply-To: de@api.openoffice.org Organization: Sun Microsystems To: de@api.openoffice.org Newsgroups: openoffice.api.dev

Hi all.

The various new features of UNO (http://udk.openoffice.org/common/man/draft/multinherit.html) allow us to simplify some parts of the existing OOo 2.0 UNO API. Two kinds of changes are particularly easy:

First, any old-style (i.e., accumulation-based) service of the form

[[published]] service SomeService { interface XSomeIfc; };

that satisifies the below two conditions can be replaced by a new-style (i.e., single-interface--based) service of the form

[[published]] service SomeService: XSomeIfc;

with the advantages that the latter clearly expresses that instances of the service should be available at the global service manager, and that language bindings will offer constructors for such services (making it easier for client code to obtain instances of those services). The two conditions are as follows:

1 The service (which can be published or unpublished) supports a single, mandatory interface. It does not support any optional interfaces, or export any (mandatory or optional) services, or have any (mandatory or optional) properties.

2 It is intended that instances of the service are available at the global service manager. That means that the service should not be designed to be used as an abstract base service, or to describe UNO objects that are obtained through factories other than the global service manager (for which multi-inheritance interface types are a better choice), or be used solely as a singleton (see below).

I created a list of services that /might/ be eligible for this change. I took all the services from SRC680m46 udkapi and offapi that satisfied condition 1 above, and checked whether they had exactly one registered implementation in a SRC680m46 unxlngi5.pro (Star)Office installation (GOOD), more than one registered implementation (MULT), or no registered implementation (NONE). Of these services, the GOOD ones have the highest probability that they are eligible for the change. However, since condition 2 above cannot be checked mechanically, I cannot automatically make the changes. Therefore, I'd encourage everybody to take a look at the below list, and decide whether it is worthwhile to change any of the listed services. I already changed com.sun.star.bridge.UnoUrlResolver, com.sun.star.connection.Acceptor, com.sun.star.connection.Connector, and com.sun.star.uri.UriSchemeParser_vndDOTsunDOTstarDOTscript on CWS sb20. (One caveat: if the to-be-changed service is published and was already available in OOo 1.1, offapi/type_reference/OO_20/types_doc.rdb has to be adapted to reflect the change; please contact Jürgen Schmidt before you change that file.)

GOOD: com.sun.star.accessibility.AccessBridge:com.sun.star.lang.XInitialization com.sun.star.auth.SSOManagerFactory:com.sun.star.auth.XSSOManagerFactory com.sun.star.auth.SSOPasswordCache:com.sun.star.auth.XSSOPasswordCache com.sun.star.awt.DialogProvider:com.sun.star.awt.XDialogProvider com.sun.star.awt.TabController:com.sun.star.awt.XTabController com.sun.star.beans.Introspection:com.sun.star.beans.XIntrospection com.sun.star.bridge.UnoUrlResolver:com.sun.star.bridge.XUnoUrlResolver com.sun.star.configuration.backend.LayerDescriber:com.sun.star.configuration.backend.XLayerContentDescriber com.sun.star.configuration.backend.PolicyLayerBackend:com.sun.star.configuration.backend.XBackend com.sun.star.configuration.bootstrap.BootstrapContext:com.sun.star.uno.XComponentContext com.sun.star.connection.Acceptor:com.sun.star.connection.XAcceptor com.sun.star.connection.Connector:com.sun.star.connection.XConnector com.sun.star.document.ExtendedTypeDetection:com.sun.star.document.XExtendedFilterDetection com.sun.star.embed.StorageFactory:com.sun.star.lang.XSingleServiceFactory com.sun.star.frame.ContentHandler:com.sun.star.frame.XNotifyingDispatch com.sun.star.frame.DispatchHelper:com.sun.star.frame.XDispatchHelper com.sun.star.frame.DispatchRecorderSupplier:com.sun.star.frame.XDispatchRecorderSupplier com.sun.star.frame.DocumentTemplates:com.sun.star.frame.XDocumentTemplates com.sun.star.frame.MediaTypeDetectionHelper:com.sun.star.util.XStringMapping com.sun.star.frame.TransientDocumentsDocumentContentFactory:com.sun.star.frame.XTransientDocumentsDocumentContentFactory com.sun.star.graphic.GraphicProvider:com.sun.star.graphic.XGraphicProvider com.sun.star.i18n.TextConversion:com.sun.star.i18n.XTextConversion com.sun.star.plugin.PluginManager:com.sun.star.plugin.XPluginManager com.sun.star.reflection.ProxyFactory:com.sun.star.reflection.XProxyFactory com.sun.star.registry.ImplementationRegistration:com.sun.star.registry.XImplementationRegistration com.sun.star.registry.SimpleRegistry:com.sun.star.registry.XSimpleRegistry com.sun.star.scanner.ScannerManager:com.sun.star.scanner.XScannerManager com.sun.star.script.Converter:com.sun.star.script.XTypeConverter com.sun.star.script.Invocation:com.sun.star.lang.XSingleServiceFactory com.sun.star.sdb.InteractionHandler:com.sun.star.task.XInteractionHandler com.sun.star.sdbc.ConnectionPool:com.sun.star.sdbc.XDriverManager com.sun.star.security.AccessController:com.sun.star.security.XAccessController com.sun.star.security.Policy:com.sun.star.security.XPolicy com.sun.star.sheet.RecentFunctions:com.sun.star.sheet.XRecentFunctions com.sun.star.task.JobExecutor:com.sun.star.task.XJobExecutor com.sun.star.task.PasswordContainer:com.sun.star.task.XPasswordContainer com.sun.star.text.AutoTextContainer:com.sun.star.text.XAutoTextContainer com.sun.star.text.DefaultNumberingProvider:com.sun.star.text.XDefaultNumberingProvider com.sun.star.ucb.AnyCompareFactory:com.sun.star.ucb.XAnyCompareFactory com.sun.star.ucb.CachedContentResultSetFactory:com.sun.star.ucb.XCachedContentResultSetFactory com.sun.star.ucb.CachedContentResultSetStubFactory:com.sun.star.ucb.XCachedContentResultSetStubFactory com.sun.star.ucb.CachedDynamicResultSetFactory:com.sun.star.ucb.XCachedDynamicResultSetFactory com.sun.star.ucb.CachedDynamicResultSetStubFactory:com.sun.star.ucb.XCachedDynamicResultSetStubFactory com.sun.star.ucb.ContentProviderProxyFactory:com.sun.star.ucb.XContentProviderFactory com.sun.star.ucb.FTPContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.ucb.HelpContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.ucb.HierarchyContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.ucb.PackageContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.ucb.PropertiesManager:com.sun.star.beans.XPropertySetInfo com.sun.star.ucb.SimpleFileAccess:com.sun.star.ucb.XSimpleFileAccess2 com.sun.star.ucb.SortedDynamicResultSetFactory:com.sun.star.ucb.XSortedDynamicResultSetFactory com.sun.star.ucb.Store:com.sun.star.ucb.XPropertySetRegistryFactory com.sun.star.ucb.TransientDocumentsContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.ucb.WebDAVContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.uno.NamingService:com.sun.star.uno.XNamingService com.sun.star.uri.UriSchemeParser_vndDOTsunDOTstarDOTscript:com.sun.star.uri.XUriSchemeParser com.sun.star.util.OfficeInstallationDirectories:com.sun.star.util.XOfficeInstallationDirectories com.sun.star.util.PathSubstitution:com.sun.star.util.XStringSubstitution com.sun.star.util.TextSearch:com.sun.star.util.XTextSearch com.sun.star.util.URLTransformer:com.sun.star.util.XURLTransformer drafts.com.sun.star.rendering.Canvas:drafts.com.sun.star.rendering.XCanvas drafts.com.sun.star.script.browse.BrowseNodeFactory:drafts.com.sun.star.script.browse.XBrowseNodeFactory drafts.com.sun.star.script.provider.MasterScriptProviderFactory:drafts.com.sun.star.script.provider.XScriptProviderFactory drafts.com.sun.star.ui.ModuleUIConfigurationManagerSupplier:drafts.com.sun.star.ui.XModuleUIConfigurationManagerSupplier drafts.com.sun.star.ui.UIElementFactory:drafts.com.sun.star.ui.XUIElementFactory MULT: com.sun.star.drawing.DrawingDocumentFactory:com.sun.star.lang.XMultiServiceFactory com.sun.star.sdbc.Driver:com.sun.star.sdbc.XDriver NONE: com.sun.star.accessibility.Accessible:com.sun.star.accessibility.XAccessible com.sun.star.bridge.OleApplicationRegistration:com.sun.star.uno.XInterface com.sun.star.bridge.OleBridgeSupplier:com.sun.star.bridge.XBridgeSupplier com.sun.star.bridge.OleBridgeSupplier2:com.sun.star.bridge.XBridgeSupplier2 com.sun.star.bridge.OleObjectFactory:com.sun.star.lang.XMultiServiceFactory com.sun.star.bridge.oleautomation.ApplicationRegistration:com.sun.star.uno.XInterface com.sun.star.bridge.oleautomation.BridgeSupplier:com.sun.star.bridge.XBridgeSupplier2 com.sun.star.bridge.oleautomation.Factory:com.sun.star.lang.XMultiServiceFactory com.sun.star.chart.ChartData:com.sun.star.chart.XChartData com.sun.star.configuration.backend.DataImporter:com.sun.star.task.XJob com.sun.star.configuration.backend.HierarchyBrowser:com.sun.star.task.XJob com.sun.star.configuration.backend.Schema:com.sun.star.configuration.backend.XSchema com.sun.star.configuration.backend.SchemaSupplier:com.sun.star.configuration.backend.XSchemaSupplier com.sun.star.document.Events:com.sun.star.container.XNameReplace com.sun.star.document.FilterAdapter:com.sun.star.document.XFilterAdapter com.sun.star.document.LinkTargets:com.sun.star.container.XNameAccess com.sun.star.document.OleEmbeddedServerRegistration:com.sun.star.uno.XInterface com.sun.star.drawing.BitmapTable:com.sun.star.container.XNameContainer com.sun.star.drawing.DashTable:com.sun.star.container.XNameContainer com.sun.star.drawing.GradientTable:com.sun.star.container.XNameContainer com.sun.star.drawing.HatchTable:com.sun.star.container.XNameContainer com.sun.star.drawing.MarkerTable:com.sun.star.container.XNameContainer com.sun.star.drawing.MasterPages:com.sun.star.drawing.XDrawPages com.sun.star.drawing.Shapes:com.sun.star.drawing.XShapes com.sun.star.drawing.TransparencyGradientTable:com.sun.star.container.XNameContainer com.sun.star.form.binding.BindableControlModel:com.sun.star.form.binding.XBindableValue com.sun.star.frame.Components:com.sun.star.container.XEnumerationAccess com.sun.star.frame.DesktopTasks:com.sun.star.container.XEnumerationAccess com.sun.star.frame.FramesContainer:com.sun.star.frame.XFrames com.sun.star.frame.SessionManager:com.sun.star.frame.XSessionManagerClient com.sun.star.frame.Settings:com.sun.star.container.XNameAccess com.sun.star.installation.InstallationCheck:com.sun.star.installation.XInstallationCheck com.sun.star.installation.InstallationCheckService:com.sun.star.installation.XInstallationCheck com.sun.star.installation.InternetSettings:com.sun.star.container.XNameAccess com.sun.star.installation.ProtocolHandlerCheck:com.sun.star.installation.XProtocolHandlerCheck com.sun.star.installation.ProtocolHandlerCheckService:com.sun.star.installation.XProtocolHandlerCheck com.sun.star.linguistic2.ConversionDictionary:com.sun.star.linguistic2.XConversionDictionary com.sun.star.mozilla.MenuProxy:com.sun.star.mozilla.XMenuProxy com.sun.star.mozilla.MenuProxyListener:com.sun.star.mozilla.XMenuProxyListener com.sun.star.packages.PackageFolderEnumeration:com.sun.star.container.XEnumeration com.sun.star.registry.DefaultRegistry:com.sun.star.registry.XSimpleRegistry com.sun.star.script.AllListenerAdapter:com.sun.star.script.XAllListenerAdapterService com.sun.star.script.Engine:com.sun.star.script.XEngine com.sun.star.sheet.CellAnnotationsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.CellAreaLinksEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.CellFormatRangesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.Cells:com.sun.star.container.XEnumerationAccess com.sun.star.sheet.CellsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.ConsolidationDescriptor:com.sun.star.sheet.XConsolidationDescriptor com.sun.star.sheet.DDELinksEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.DataPilotFieldsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.DataPilotItemsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.DataPilotSourceDimensions:com.sun.star.container.XNameAccess com.sun.star.sheet.DataPilotSourceHierarchies:com.sun.star.container.XNameAccess com.sun.star.sheet.DataPilotSourceLevels:com.sun.star.container.XNameAccess com.sun.star.sheet.DataPilotSourceMembers:com.sun.star.container.XNameAccess com.sun.star.sheet.DataPilotTablesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.DatabaseRangesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.FunctionDescriptionEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.HeaderFooterContent:com.sun.star.sheet.XHeaderFooterContent com.sun.star.sheet.LabelRange:com.sun.star.sheet.XLabelRange com.sun.star.sheet.LabelRangesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.NamedRangesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.ScenariosEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.SheetCellRangesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.SheetLinksEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.SpreadsheetViewPanesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.SpreadsheetsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.SubTotalField:com.sun.star.sheet.XSubTotalField com.sun.star.sheet.SubTotalFieldsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.TableAutoFormatEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.TableAutoFormatsEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.TableConditionalEntryEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.UniqueCellFormatRangesEnumeration:com.sun.star.container.XEnumeration com.sun.star.sheet.VolatileResult:com.sun.star.sheet.XVolatileResult com.sun.star.sync.SyncCollector:com.sun.star.sync.XSyncCollector com.sun.star.sync.Synchronizer:com.sun.star.sync.XSynchronizer com.sun.star.table.CellCursor:com.sun.star.table.XCellCursor com.sun.star.table.TableChartsEnumeration:com.sun.star.container.XEnumeration com.sun.star.table.TableColumnsEnumeration:com.sun.star.container.XEnumeration com.sun.star.table.TableRowsEnumeration:com.sun.star.container.XEnumeration com.sun.star.text.DocumentIndexLevelFormat:com.sun.star.container.XIndexReplace com.sun.star.text.DocumentIndexParagraphStyles:com.sun.star.container.XIndexReplace com.sun.star.text.Footnotes:com.sun.star.container.XIndexAccess com.sun.star.text.ParagraphEnumeration:com.sun.star.container.XEnumeration com.sun.star.text.TableColumns:com.sun.star.table.XTableColumns com.sun.star.text.TableRows:com.sun.star.table.XTableRows com.sun.star.text.TextFieldEnumeration:com.sun.star.container.XEnumeration com.sun.star.text.TextFieldMasters:com.sun.star.container.XNameAccess com.sun.star.text.TextPortionEnumeration:com.sun.star.container.XEnumeration com.sun.star.text.TextRanges:com.sun.star.container.XIndexAccess com.sun.star.text.TextSortable:com.sun.star.util.XSortable com.sun.star.ucb.ContentTransmitter:com.sun.star.ucb.XContentTransmitter com.sun.star.ucb.DynamicResultSet:com.sun.star.ucb.XDynamicResultSet com.sun.star.ucb.ODMAContentProvider:com.sun.star.ucb.XContentProvider com.sun.star.util.Sortable:com.sun.star.util.XSortable com.sun.star.util.logging.Logger:com.sun.star.util.logging.XLogger com.sun.star.util.logging.LoggerRemote:com.sun.star.util.logging.XLoggerRemote com.sun.star.xml.AttributeContainer:com.sun.star.container.XNameContainer com.sun.star.xml.ImportFilter:com.sun.star.xml.XImportFilter com.sun.star.xml.NamespaceContainer:com.sun.star.container.XNameContainer drafts.com.sun.star.rendering.ParametricPolyPolygon2DFactory:drafts.com.sun.star.rendering.XParametricPolyPolygon2DFactory drafts.com.sun.star.ui.ModuleUICommandDescription:com.sun.star.container.XNameAccess drafts.com.sun.star.ui.UICommandDescription:com.sun.star.container.XNameAccess

Second, any old-style (i.e., service-based) singleton of the form

[[published]] singleton SomeSingleton { service SomeService; };

for which SomeService satisfies condition 1 above, and supports the single mandatory interface XSomeIfc, can be replaced by a new-style (i.e., interface-based) singleton of the form

[[published]] singleton SomeSingleton: XSomeIfc;

with the advantage that the language bindings will offer getters for the latter (making it easier for client code to obtain those singletons). Additionally, if the old-style service SomeService was only used to document the type of the singleton, it can now be removed completely.

SRC680m46 udkapi and offapi contain only five singletons (com.sun.star.deployment.thePackageManagerFactory, com.sun.star.util.theMacroExpander, drafts.com.sun.star.script.browse.theBrowseNodeFactory, drafts.com.sun.star.script.provider.theMasterScriptProviderFactory, and com.sun.star.util.theOfficeInstallationDirectories), of which the first is already of the new form, the second is not directly eligible for the change (as its underlying service com.sun.star.util.MacroExpander supports more than one interface), and the last three might be eligible for the change (I already contacted their owners).

If people prefer to make any of these changes on a dedicated CWS, please contact me, and I'll create one.

-Stephan