Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [mdt-papyrus.dev] IMultiDiagramEditor service?

Thanks, Séb,

I suppose that if the current API is to be replaced, then I have nothing on which to base a proposal until I see it.  There are hints that it will meet my need, though, so that's good.  It should make for an interesting merge into the cdo_kepler branch, of course!  ;-)

Speaking of which, we should discuss how to plan for integration of the cdo_kepler branch into the trunk.  I plan to have the New Papyrus Model wizard refactoring done this week to make it support creating models in CDO repositories.  By that point, users will be able to create repositories, import models and create new models, and edit them.  There will be rough edges, such as undo/redo inconsistencies, non-functional model validation, and other use cases that won't work, but the basics would be in prototype shape.  But there is a good deal of refactoring in some core APIs such as IModel that we may want to integrate sooner to give them time to soak.

We should decide what will be the acceptance criteria for merge to trunk, when to target that, how to do the acceptance testing (especially regression testing of non-CDO usage) and code reviews.

Cheers,

Christian


On 2013-02-21, at 3:51 AM, GERARD Sebastien 166342 <Sebastien.GERARD@xxxxxx> wrote:

Hi Christian,
 
If you have some proposal that may overcome those issues, they are of course welcome.
 
Cheers… Séb.
 
------------------------------------------------------------------------------------------------------------------------------------------------
Sébastien Gérard
+33 (0)1 69 08 58 24 / +33(0)6 88 20 00 47
CEA Saclay Nano-INNOV
Institut CARNOT CEA LIST
DILS/Laboratoire d’Ingénierie dirigée par les modèles pour les Systèmes Embarqués (LISE),
Point Courrier n°174
91 191 Gif sur Yvette CEDEX
 
 
De : mdt-papyrus.dev-bounces@xxxxxxxxxxx [mailto:mdt-papyrus.dev-bounces@xxxxxxxxxxx] De la part deLETAVERNIER Camille
Envoyé : jeudi 21 février 2013 09:49
À : Papyrus Project list
Objet : [PROVENANCE INTERNET] Re: [mdt-papyrus.dev] IMultiDiagramEditor service?
 
Hello Christian,
 
The IMultiDiagramEditor is a specific case, as it is this class that instantiates the ServicesRegistry. So, it cannot be registered through an extension point, because when the ServicesRegistry is created/initialized, the IMultiDiagramEditor already exists. When the services registry shuts down, it doesn’t dispose the editor: it is the editor that disposes the services registry when shutting down (Or whatever object initialized it, such as for example the model-creation wizard).
 
The real problem is that we use the same set of services in the Wizard (When the IMultiDiagramEditor is not available) and in the editor itself, because all services are registered without a context, through the same extension point. Moreover, most editor-dependent services are declared as “startup”, so the registry tries to instantiate and start them, and fails.
 
Cédric is already working on a more flexible implementation for the ServicesRegistry, so I guess we’d better wait for him to finish his work on that topic. Until then, we can really ignore the exceptions thrown by the services registry, because we don’t use these un-initialized services that depend on the editor, when the editor is not available.
 
By the way, the exceptions are thrown only at the end of the services registry initialization (It doesn’t actually block the initialization). So they can really be caught and ignored, and the available services/registry will work just fine.
 
Regards,
Camille
__________________________
Camille Letavernier
+33 (0)1 69 08 00 59 - camille.letavernier@xxxxxx
CEA LIST - Laboratoire d'Ingénierie dirigée par les modèles pour les Systèmes Embarqués (LISE)
 
De : mdt-papyrus.dev-bounces@xxxxxxxxxxx [mailto:mdt-papyrus.dev-bounces@xxxxxxxxxxx] De la part degive.a.damus@xxxxxxxxx
Envoyé : mercredi 20 février 2013 14:56
À : Papyrus Project list
Objet : Re: [mdt-papyrus.dev] IMultiDiagramEditor service?
 
Thanks, Camille.
 
I think I missed the fact that the editor adds itself to the ServicesRegistry as an ad hoc service registration.  I suppose the IService[Factory] API is only required for services registered on the extension point?  That would make sense, but I wonder how the registry shutdown procedure should handle non-service(factorie)s?
 
In any case, it doesn't appear that this breaks my use case, which is new model creation. In that case, the ModelSet and attendant services are used in the context of a wizard, so the editor would not be expected to be available, so perhaps some accounting for that is needed. I've thought, before, that the ServicesRegistry should support optional services, returning null instead of throwing when they aren't available.  Would this be a good case for that?  I'd be happy to work up a patch, as this is a capability that I could use for my CDO work.
 
Thanks for attending to this!
 
cW

 


On 2013-02-20, at 4:12, LETAVERNIER Camille <Camille.LETAVERNIER@xxxxxx> wrote:

Hello Christian,
 
The IMultiDiagramEditor service is the Papyrus Editor. It should be available as soon as the editor is started (The editor registers itself as a Service in the init() method).
 
Ø  In particular, the SaveAndDirtyService attempts to get the IMultiDiagramEditor service, although it doesn't declare this service as a dependency.  
 
I’ll check and fix that.
 
Ø  .  This results in the first exception below on stderr (why not in the log?) when creating a new model using the New Papyrus Model wizard.
 
The plugin oep.infra.core (sometimes?) uses its own log which prints the errors to strerr. And It seems that I was filtering stderr when working on the Page Manager. This exception is actually caught, but is still logged. It shouldn’t be logged here at all. I will fix that.
 
Ø  I have the implementation of this interface, but it doesn't appear to be a service, so this doesn't appear to be a matter of simply registering it on the services extension point.
 
Any object can be registered as a Service, it doesn’t need to implement the Papyrus IService. The problem in this case is that some services cannot be started because they depend on a service which is not available. I won’t go into the details, but basically:
 
-          We try to initialize services that are actually not required (and not available)
-          This should be a warning instead of an error, as we’re not even using them
-          Fully removing this warning depends on pending work on the new ServicesRegistry
 
I’ll remove the logged error for now, as it is actually expected and caught.
 
Related task:
 
398712: [Core] Multiple issues with the PageManager
 

Regards,
Camille
__________________________
Camille Letavernier
+33 (0)1 69 08 00 59 - camille.letavernier@xxxxxx
CEA LIST - Laboratoire d'Ingénierie dirigée par les modèles pour les Systèmes Embarqués (LISE)
 
De : mdt-papyrus.dev-bounces@xxxxxxxxxxx [mailto:mdt-papyrus.dev-bounces@xxxxxxxxxxx] De la part de Christian W. Damus
Envoyé : mercredi 20 février 2013 00:00
À : Papyrus Project list
Objet : [mdt-papyrus.dev] IMultiDiagramEditor service?
 
Hi, Team,
 
There seems to be an expectation in the code that there is an IMultiDiagramEditor service, but I see no sign of it.
 
In particular, the SaveAndDirtyService attempts to get the IMultiDiagramEditor service, although it doesn't declare this service as a dependency.  This results in the first exception below on stderr (why not in the log?) when creating a new model using the New Papyrus Model wizard.
 
Also, the ResourceUpdateService does declare IMultiDiagramEditor as a dependency, which (because it doesn't exist) results in the second and third exceptions below.
 
Am I missing a plug-in that provides the IMultiDiagramEditor service registration?  I have the implementation of this interface, but it doesn't appear to be a service, so this doesn't appear to be a matter of simply registering it on the services extension point.
 
Thanks,
 
Christian
 
 
-------- 8< --------
 
19-Feb-2013 5:51:49 PM org.eclipse.papyrus.infra.core.services.ServicesRegistry initServices
SEVERE: Can't initialize service 'org.eclipse.papyrus.infra.core.services.internal.StartStartupEntry@342e5233: key=org.eclipse.papyrus.infra.core.lifecycleevents.ISaveAndDirtyService'
org.eclipse.papyrus.infra.core.services.ServiceNotFoundException: No service registered under 'interface org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor'
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.getService(ServicesRegistry.java:369)
       at org.eclipse.papyrus.infra.core.lifecycleevents.SaveAndDirtyService.init(SaveAndDirtyService.java:186)
       at org.eclipse.papyrus.infra.core.services.internal.ServiceEntry.initService(ServiceEntry.java:113)
       at org.eclipse.papyrus.infra.core.services.internal.StartStartupEntry.initService(StartStartupEntry.java:60)
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.initServices(ServicesRegistry.java:935)
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.startRegistry(ServicesRegistry.java:448)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.initServicesRegistry(CreateModelWizard.java:212)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.createAndOpenPapyrusModel(CreateModelWizard.java:186)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.performFinish(CreateModelWizard.java:161)
       at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:827)
       ...
 
19-Feb-2013 5:51:49 PM org.eclipse.papyrus.infra.core.services.ServicesRegistry initServices
SEVERE: Can't initialize service 'org.eclipse.papyrus.infra.core.services.internal.StartStartupEntry@4d16ad08: key=org.eclipse.papyrus.uml.diagram.common.resourceupdate'
org.eclipse.papyrus.infra.core.services.ServiceNotFoundException: No service registered under 'interface org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor'
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.getService(ServicesRegistry.java:369)
       at org.eclipse.papyrus.uml.diagram.common.resourceupdate.ResourceUpdateService.init(ResourceUpdateService.java:60)
       at org.eclipse.papyrus.infra.core.services.internal.ServiceEntry.initService(ServiceEntry.java:113)
       at org.eclipse.papyrus.infra.core.services.internal.StartStartupEntry.initService(StartStartupEntry.java:60)
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.initServices(ServicesRegistry.java:935)
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.startRegistry(ServicesRegistry.java:448)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.initServicesRegistry(CreateModelWizard.java:212)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.createAndOpenPapyrusModel(CreateModelWizard.java:186)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.performFinish(CreateModelWizard.java:161)
       at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:827)
       ...
 
19-Feb-2013 5:57:05 PM org.eclipse.papyrus.infra.core.services.ServicesRegistry disposeServices
SEVERE: Can't dispose service'org.eclipse.papyrus.uml.diagram.common.resourceupdate'
java.lang.NullPointerException
       at org.eclipse.papyrus.uml.diagram.common.resourceupdate.ResourceUpdateService.deactivate(ResourceUpdateService.java:179)
       at org.eclipse.papyrus.uml.diagram.common.resourceupdate.ResourceUpdateService.disposeService(ResourceUpdateService.java:188)
       at org.eclipse.papyrus.infra.core.services.internal.ServiceEntry.disposeService(ServiceEntry.java:155)
       at org.eclipse.papyrus.infra.core.services.internal.StartStartupEntry.disposeService(StartStartupEntry.java:80)
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.disposeServices(ServicesRegistry.java:987)
       at org.eclipse.papyrus.infra.core.services.ServicesRegistry.disposeRegistry(ServicesRegistry.java:849)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.createAndOpenPapyrusModel(CreateModelWizard.java:198)
       at org.eclipse.papyrus.uml.diagram.wizards.CreateModelWizard.performFinish(CreateModelWizard.java:161)
       at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:827)
       ...
 
_______________________________________________
mdt-papyrus.dev mailing list
mdt-papyrus.dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mdt-papyrus.dev
_______________________________________________
mdt-papyrus.dev mailing list
mdt-papyrus.dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mdt-papyrus.dev


Back to the top