meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sap_hybris_commerce:development_process:systemsetup_annotation_when_methods_run [2020/04/10 11:59] – [SystemSetup Annotation: When are the methods run?] Antonio Robirosa | sap_hybris_commerce:development_process:systemsetup_annotation_when_methods_run [2020/04/10 14:03] (current) – Document the hybris classes Antonio Robirosa | ||
---|---|---|---|
Line 3: | Line 3: | ||
The SystemSetup annotation is used to run import data, synchronize catalogues, migrate CMS components and execute Java code during **every** project or essential data creation step. | The SystemSetup annotation is used to run import data, synchronize catalogues, migrate CMS components and execute Java code during **every** project or essential data creation step. | ||
- | **In past versions | + | **In all hybris version up to 1905 the essential and project data steps aren't run during the initialization of the junit tenant.** This prevents |
^SystemSetup.Process^INIT^^^UPDATE^^^ALL^^^.^ | ^SystemSetup.Process^INIT^^^UPDATE^^^ALL^^^.^ | ||
^SystemSetup.Type^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^What Hybris impexes are imported?^ | ^SystemSetup.Type^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^What Hybris impexes are imported?^ | ||
- | ^ant initialize -Dtenant=master|Called once with process INIT and type ESSENTIAL | + | ^ant initialize -Dtenant=master|Called once with process INIT and type ESSENTIAL|Called once with process INIT and type PROJECT|Called twice with process INIT and type ESSENTIAL \\ and with process INIT and type PROJECT|No call|||Called once with process INIT and type ESSENTIAL|Called once with process INIT and type PROJECT|Called twice with process INIT and type ESSENTIAL \\ and with process INIT and type PROJECT|Project and essential scripts| |
^ant initialize -Dtenant=junit|: | ^ant initialize -Dtenant=junit|: | ||
^ant yunitinit|: | ^ant yunitinit|: | ||
- | ^ant updatesystem -Dtenant=master((with a JSON configuration to run the project data))|No call|||Called once with process UPDATE and type ESSENTIAL | + | ^ant updatesystem -Dtenant=master((with a JSON configuration to run the project data))|No call|||Called once with process UPDATE and type ESSENTIAL|Called once with process UPDATE and type PROJECT|Called twice with process UPDATE and type ESSENTIAL and with process UPDATE and type PROJECT|Called once with process UPDATE and type ESSENTIAL|Called once with process UPDATE and type PROJECT|Called twice with process INIT and type ESSENTIAL and with process INIT and type PROJECT|Project and essential scripts| |
^ant updatesystem -Dtenant=junit((with a JSON configuration to run the project data))|:!: No call|||||||||: | ^ant updatesystem -Dtenant=junit((with a JSON configuration to run the project data))|:!: No call|||||||||: | ||
- | ^ant yunitupdate^1|:!: No call|||||||||: | + | ^ant yunitupdate|: |
- | When @SystemSetup(extension = ArecosystemsetuptestConstants.EXTENSIONNAME), | + | When @SystemSetup(extension = ArecosystemsetuptestConstants.EXTENSIONNAME), |
+ | When @SystemSetup(extension = " | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Because the mayority | + | Because the majority |
</ | </ | ||
+ | ===== Cause of this behaviour ===== | ||
+ | |||
+ | The method de.hybris.ant.taskdefs.InitPlatformAntPerformableImpl# | ||
===== Test description ===== | ===== Test description ===== | ||
- | I created a new extension based on the templa yempty and added the property | + | I created a new extension based on the templa yempty and added the property |
<code java> | <code java> | ||
- | @SystemSetup(extension = " | + | @SystemSetup(extension = ArecosystemsetuptestConstants.EXTENSIONNAME) |
public class SystemSetupAnnotationCallsTest { | public class SystemSetupAnnotationCallsTest { | ||
</ | </ | ||
Line 33: | Line 37: | ||
} | } | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
To make hybris call the methods, I had to create a bean definition in the spring application context. Autowiring without the XML bean definition wasn't working. | To make hybris call the methods, I had to create a bean definition in the spring application context. Autowiring without the XML bean definition wasn't working. | ||
</ | </ | ||
+ | <code xml> | ||
+ | <bean id=" | ||
+ | </ | ||
- | I ran all ant commands | + | |
- | < | + | I created a JSON configuration for the update running system which runs the create project data step: {{ : |
+ | I ran the following | ||
+ | < | ||
+ | rm -rf hybris/ | ||
+ | ant clean all | ||
ant initialize -Dtenant=master | tee initializeMaster.log | grep SystemSetupAnnotationCallsTest | ant initialize -Dtenant=master | tee initializeMaster.log | grep SystemSetupAnnotationCallsTest | ||
+ | ant initialize -Dtenant=junit | tee initializeJunit.log | grep SystemSetupAnnotationCallsTest | ||
+ | ant yunitinit | tee yunitinit.log | grep SystemSetupAnnotationCallsTest | ||
+ | ant updatesystem -Dtenant=master -DconfigFile=/ | ||
+ | ant updatesystem -Dtenant=yunit -DconfigFile=/ | ||
+ | ant yunitupdate -DconfigFile=/ | ||
</ | </ | ||
+ | |||
+ | Source code: {{ : | ||
-- Based on SAP hybris 1905 | -- Based on SAP hybris 1905 | ||