Hello,

I implemented a first solution on the issue OFBIZ-9558 [1]. If you have a reviewer heart, It would be great :)

Nicolas

[1] https://issues.apache.org/jira/browse/OFBIZ-9558


Le 07/08/2017 à 09:24, Nicolas Malin a écrit :
Thanks Scott, your suggestions complete like a charm this theme :)

I will implement the deprecated service process and complete the documentation for the future

Nicolas


Le 07/08/2017 à 09:05, Jacques Le Roux a écrit :
Nice suggestions

Thanks Scott

Jacques


Le 07/08/2017 à 00:02, Scott Gray a écrit :
+1 for logging a warning instead of an error

+1 for using an element to deprecate. Although I'd prefer "deprecated" for
the element name and I'd prefer "use-instead" for the attribute name.
Would keep us consistent with java conventions, @deprecated and the text is often "use X instead". I think having "service" in the attribute name is unnecessary because the service engine only deals in services anyway. The attribute should be optional because sometimes services marked for removal
won't have a replacement, in the case of a major refactor.

Also, I think it would be a good idea to replace the attribute definitions on the old service to use the "implements" element which would point to the new service. It would help keep them aligned with each other for future
changes without duplication.

Some additional nice to haves:
- Add a "since" attribute to the "deprecated" element that would contain either a date or a release candidate version string. This would make it easier for us to know when the service can be removed. (I can't remember the policy for deprecation, remove after the next release or after two?) - For webtools, add a strikethrough on the service name in the Service List screen and add the information to the UI in the service definition screen.

Regards
Scott

On 7/08/2017 05:04, "Nicolas Malin" <nicolas.ma...@nereide.fr> wrote:

Thanks for your return Deepak and Taher.

I suggested to use comment to deprecated because it's really fast to
implement with a combination of process and small modification code.

Like Taher, just I found not enough just a comment. What do you think about
add a new xml element to service

<deprecate replace-by-service="theNewServiceName"> Explain the
reason</deprecated>

and on the modelService, when a deprecate is parsed and when the service is
call we put on log a warning :

WARN the service oldServiceName is now deprecated please use theNewService,
the reason is ${Explain the reason}

Nicolas



Le 06/08/2017 à 08:03, Taher Alkhateeb a écrit :

Hmmm I am not sure if comments are the most appropriate form for
deprecation. Usually deprecation is useful when it is programmatic because it goes beyond raw text to logging warnings and highlighting by tools. You want the system to constantly remind you (both the developer and author) to
get rid of the deprecated code.

However if this entails a lot of code changes (not sure) then I think it might be useful to wait until we refactor the rest of the core components
(entity engine, service engine, etc ...)

On Aug 6, 2017 8:47 AM, "Deepak Dixit" <deepak.di...@hotwaxsystems.com>
wrote:

Hi Nicolas,
Idea is to mark service deprecated is looks good to me,
What I think instead of adding deprecated as engine we can set annotation
for deprecated service like we set in java, annotation can be simple
comment or xml annotation.

And ideally we have to mark services deprecate instead of removing, with
expected release on which we will remove this deprecated code.


Thanks & Regards
--
Deepak Dixit
www.hotwaxsystems.com
www.hotwax.co

On Sat, Aug 5, 2017 at 1:34 AM, Nicolas Malin <nicolas.ma...@nereide.fr>
wrote:

Hello with the thread https://lists.apache.org/
thread.html/Zoz5yfpkrfcxts1

and the voluntary to have a good coherence on crud service name,

I would be have your suggest to manage old name and deprecated process.

I review the issue OFBIZ-9550 [1] that contains this problematic :

-    <service name="addPromoToMarketingCampaign" ...
+    <service name="createMarketingCampaignPromo" ...

Currently I follow this process :

* duplicate the service definition
* Rename the duplicate with the correct name
* Set "DEPRECATED : use ${new service} instead" in the service

description

* implement on old service definition : return error("use ${new service}
instead") to help developer to correct their specific code.

I image that we can create a generic code to return the error and change
the old service definition like this :

      <service name="addPromoToMarketingCampaign"
default-entity-name="MarketingCampaignPromo" engine="deprecated"
invoke="create" auth="true">
           <description>Deprecated please replace by
createMarketingCampaignPromo</description>
<auto-attributes include="pk" mode="IN" optional="false"/> <auto-attributes include="nonpk" mode="IN" optional="true"/>
       </service>

And deprecated engine return always error with the service description.

After a new ofbiz stable branche creation, we remove all deprecated
service ?

Any suggests, othet ideas, comments ?

Cheers,

Nicolas

[1] https://issues.apache.org/jira/browse/OFBIZ-9550

--
logoNrd <https://nereide.fr/>
          Nicolas Malin
The apache way <http://theapacheway.com/> : *Openness* Technical
decisions are made publicly
informat...@nereide.fr
8 rue des Déportés 37000 TOURS, 02 47 50 30 54

Apache OFBiz <http://ofbiz.apache.org/>|The Apache Way <
http://theapacheway.com/>|ofbiz-fr <http://www.ofbiz-fr.org/>|réseau LE

<

http://www.libre-entreprise.org/>







Reply via email to