User Tools

Site Tools


airs_ci-408

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
airs_ci-408 [2020/03/31 14:32] – kalaschnikowairs_ci-408 [2020/05/19 11:29] (current) – [AIRS_CI-408 Preventive Action 7.1 - Architecture Rule] kalaschnikow
Line 1: Line 1:
 +====== AIRS_CI-408 Preventive Action 7.1 - Architecture Rule ======
  
 +[[https://tasks.supplyon.de/browse/AIRS_CI-408|AIRS_CI-408 Preventive Action 7.1 - Architecture Rule]]
 +
 +[[https://git.seeburger.de/r/c/supplyon/airsupply/+/97105|Commit from Stefan]], which defines architectural rules.
 +
 +[[https://git.seeburger.de/r/c/supplyon/airsupply/+/100535|Commit from Burkhard]], which reverts Commit from Stefan (because of a startup failure).
 +
 +[[https://tasks.supplyon.de/browse/AIRS_CI-395|AIRS_CI-395 AIRS Escalation finding: Refactor CDI Beans to stateless beans]]
 +
 +[[https://www.archunit.org/userguide/html/000_Index.html|ArchUnit Documentation]]
 +
 +[[https://github.com/TNG/ArchUnit-Examples|ArchUnit Examples]]
 +
 +[[https://git.seeburger.de/r/c/supplyon/airsupply/+/103644|Change in Gerrit]] ([[https://git.seeburger.de/r/c/supplyon/airsupply/+/101862|First Change in Gerrit]]) ([[https://git.seeburger.de/r/c/supplyon/airsupply/+/105380|Cherry Pick of Burkhard to release/rel_20]])
 +
 +
 +**Task Description**\\ 
 +Implement architectural rule to ensure that concurrent import processes do not operate on shared memory.
 +
 +**Acceptance Criteria**\\ 
 +An architectural rule has to be implemented:
 +  * The rule is implemented as static JUnit test
 +  * The rule checks for state in CDI beans
 +  * If the rule detects a violation, the complete build process must fail and report an error
 +
 +**Burkhard**\\ 
 +  * the test is already existing (''CDIandEJBArchitectureTest.beansMustNotHaveAnyState'')
 +  * the goal is to refactor all classes which were excepted fromm this test
 +
 +===== Refactor beans =====
 +
 +    * **-** Refactor beans
 +      * **-** ConcessionCreateXMLHandler.class
 +        * **-** is not stateless as it keeps state in field cfg
 +        * **-** is not stateless as it keeps state in field currentCtrlArea
 +        * **-** is not stateless as it keeps state in field doc
 +        * **-** is not stateless as it keeps state in field isAirbusConcession
 +        * **-** is not stateless as it keeps state in field manager
 +        * **-** is not stateless as it keeps state in field mimeMessageImportProcessor
 +        * **-** is not stateless as it keeps state in field nCreationTimeStamp
 +        * **-** is not stateless as it keeps state in field nReceivingTimeStamp
 +        * **-** is not stateless as it keeps state in field ncrHeader
 +        * **-** is not stateless as it keeps state in field ncrPositions
 +        * **-** is not stateless as it keeps state in field procResult
 +        * **-** is not stateless as it keeps state in field props
 +        * **-** is not stateless as it keeps state in field protoNCRHeader
 +        * **-** is not stateless as it keeps state in field sExternalMessageId
 +        * **-** is not stateless as it keeps state in field sInternalMessageId
 +        * **-** is not stateless as it keeps state in field sReceiverInfo
 +        * **-** is not stateless as it keeps state in field sSenderInfo
 +        * **-** is not stateless as it keeps state in field sStatus
 +      * **-** NCRResponseXMLHandler
 +        * **-** is not stateless as it keeps state in field cfg
 +        * **-** is not stateless as it keeps state in field currentCtrlArea
 +        * **-** is not stateless as it keeps state in field doc
 +        * **-** is not stateless as it keeps state in field manager
 +        * **-** is not stateless as it keeps state in field mimeMessageImportProcessor
 +        * **-** is not stateless as it keeps state in field nCreationTimeStamp
 +        * **-** is not stateless as it keeps state in field nReceivingTimeStamp
 +        * **-** is not stateless as it keeps state in field ncrHeader
 +        * **-** is not stateless as it keeps state in field ncrPositions
 +        * **-** is not stateless as it keeps state in field procResult
 +        * **-** is not stateless as it keeps state in field props
 +        * **-** is not stateless as it keeps state in field sExternalMessageId
 +        * **-** is not stateless as it keeps state in field sInternalMessageId
 +        * **-** is not stateless as it keeps state in field sReceiverInfo
 +        * **-** is not stateless as it keeps state in field sSenderInfo
 +        * **-** is not stateless as it keeps state in field sStatus
 +      * **-** NcrQualityReportXmlHandler
 +        * **-** is not stateless as it keeps state in field includedAttachments
 +        * **-** is not stateless as it keeps state in field mimeHandlerMessageFormat
 +        * **-** is not stateless as it keeps state in field portalGroup
 +        * **-** is not stateless as it keeps state in field xmlDoc
 +      * **-** NcrQualityReportJob
 +        * **-** is not stateless as it keeps state in field stopped
 +      * **-** POFinalizerJob
 +        * **-** is not stateless as it keeps state in field bJobStopped
 +      * **-** POCustomerImportCSV
 +        * **-** is not stateless as it keeps state in field bCollabProcessed
 +        * **-** is not stateless as it keeps state in field changeVerifier
 +        * **-** is not stateless as it keeps state in field dbData
 +        * **-** is not stateless as it keeps state in field importData
 +        * **-** is not stateless as it keeps state in field userContext
 +      * **-** POCustomerImportXML
 +        * **-** is not stateless as it keeps state in field bCollabProcessed
 +        * **-** is not stateless as it keeps state in field changeVerifier
 +        * **-** is not stateless as it keeps state in field dbData
 +        * **-** is not stateless as it keeps state in field importData
 +        * **-** is not stateless as it keeps state in field userContext
 +      * **-** POSupplierImportCSV
 +        * **-** is not stateless as it keeps state in field bCollabProcessed
 +        * **-** is not stateless as it keeps state in field changeVerifier
 +        * **-** is not stateless as it keeps state in field dbData
 +        * **-** is not stateless as it keeps state in field importData
 +        * **-** is not stateless as it keeps state in field userContext
 +      * **-** POSupplierImportXML
 +        * **-** is not stateless as it keeps state in field bCollabProcessed
 +        * **-** is not stateless as it keeps state in field changeVerifier
 +        * **-** is not stateless as it keeps state in field dbData
 +        * **-** is not stateless as it keeps state in field importData
 +        * **-** is not stateless as it keeps state in field userContext
 +      * **+** EquipmentProcessDefinition
 +      * **+** NoeProcessDefinition
 +      * **+** NonAirbusProcessDefinition
 +      * **+** StandardPartProcessDefinition
 +
 +
 +===== Commit from Stefan =====
 +
 +  * ''@ArchTest''
 +    * airsupply/src/java-test/com/seeburger/airsupply/CDIandEJBArchitectureTest.java 
 +  * Changed interface of class ''AbstractAlertCSVDownload'' (methods return ''void'' now)
 +    * airsupply-base/src/java/com/seeburger/airsupply/alertmon/control/AbstractAlertCSVDownload.java 
 +    * airsupply/src/java-test/com/seeburger/airsupply/alertmon/control/ConcessionAlertCSVDownloadScreenTest.java
 +    * airsupply/src/java-test/com/seeburger/airsupply/alertmon/control/NOEAlertCSVDownloadScreenTest.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/ConcessionAlertCSVDownloadScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/ForecastAlertCSVDownloadScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/MDAlertCSVDownloadScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/NOEAlertCSVDownloadScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/POAlertCSVDownloadScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/SBIAlertCSVDownloadScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/VMIAlertCSVDownloadScreen.java
 +  * Removed ''init()'' / ''super.init()'' 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/manager/ConcessionNCRManagerEJB.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/manager/NOENCRManagerEJB.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/manager/NCRManagerEJB.java (removed ''init()'' )
 +  * Set ''@ApplicationScoped''
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/alertmon/NCRAlertMonitorConnector.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/BasicProcessDefinitionDeterminator.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/ConcessionTemplateDownloadScreenInfo.java
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/NCRAttachmentCheckCreateRight.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/NcrPrintActionScreenUtil.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/NCRRedirectURL.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/NCRRightFilterFactory.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/NCRRightsCheck.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/control/NoeTemplateDownloadScreenInfo.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/exchange/NCRXMLImportUtil.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/manager/processes/AgnosticFieldDefinitions.java
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/shared/util/NCRCustomerConfigTypeProvider.java 
 +  * Made class public
 +    * airsupply/src/java/com/seeburger/airsupply/po/manager/importprocessor/POCustomerImportCSV.java 
 +    * airsupply/src/java/com/seeburger/airsupply/po/manager/importprocessor/POCustomerImportXML.java 
 +    * airsupply/src/java/com/seeburger/airsupply/po/manager/importprocessor/POSupplierImportCSV.java 
 +    * airsupply/src/java/com/seeburger/airsupply/po/manager/importprocessor/POSupplierImportXML.java 
 +  * Misc
 +    * airsupply-base/src/java/com/seeburger/airsupply/alertmon/manager/SASAlertManagerEJB.java 
 +    * airsupply/src/java/com/seeburger/airsupply/alertmon/control/ConcessionAlertOverviewScreen.java 
 +    * airsupply/src/java/com/seeburger/airsupply/ncr/exchange/qualityreport/NcrQualityReportXmlHandler.java