Skip to main content



      Home
Home » Eclipse Projects » Sirius » How can I force refresh Java service to reload it in Sirius?(Sirius Java Service)
How can I force refresh Java service to reload it in Sirius? [message #1822523] Mon, 09 March 2020 07:06 Go to next message
Eclipse UserFriend
Hello,
I was trying to do a little trick in Sirius. I need to define some operations which is user-editable in my custom model, so I was saving a config file in my viewpoint specification project and load it to memory in the Java Service's constructor. Therefore I met a problem that when the config file changes, the Java Service class does not response to the change in time. I have to change the Service.java file and resave to make it effective. So is there anyway I can force reload the Service class (which means run the Service class's constructor method again) by a tool or some other methods? I don't want to read the config file in non-constructor methods because file I/Os are expensive and I hope to only do it once after every change.
Thanks very much for your help!
Re: How can I force refresh Java service to reload it in Sirius? [message #1822540 is a reply to message #1822523] Mon, 09 March 2020 11:16 Go to previous messageGo to next message
Eclipse UserFriend
Hi Yufei,

As documented in https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods, please remember that Quote:
Java service methods should be stateless. There is no guarantee that two successive invocations of the same service method on two model elements (or even on the same one) will use the same instance of the service class.


You have no clue on when Sirius will call your constructor, so you should create a "configure" method that will be called by the constructor but also when your config model changes. For that you might put a listener to be notified on changes on this resource:

- Is this resource stored as an EMF model ? in this case it will be referenced from the session, and reloaded on changes by Sirius, then you would just have to provide a ResourceSyncClient for example to be notified from changes.
- If you file is a configuration file and not a model, you might add a org.eclipse.core.resources.IResourceChangeListener with ResourcesPlugin.getWorkspace().addResourceChangeListener(). If the org.eclipse.core.resources.IResourceChangeEvent comes from your resource, you will call your "configure" method

Regards
Re: How can I force refresh Java service to reload it in Sirius? [message #1822589 is a reply to message #1822540] Tue, 10 March 2020 06:11 Go to previous message
Eclipse UserFriend
That helps a lot and thank you very much.
Previous Topic:Elements not showing in the representation
Next Topic:Exception when creating a new Representation
Goto Forum:
  


Current Time: Sun Jun 22 18:09:53 EDT 2025

Powered by FUDForum. Page generated in 0.07798 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top