ProtoCom: Java EE/EJB generation assumes components to be assembled at most once

Description

The Java EE/EJB generation currently assumes that components out of the repository are assembled at most once.

  • In org.palladiosimulator.protocom.traverse.jee.system.JeeSystem.xtend, all assembly connectors of a system are determined

  • These connectors are passed to org.palladiosimulator.protocom.tech.iiop.repository.JavaEEIIOPBasicComponentClass.xtend, which then determines "its" connectors by simply matching whether the component type fits:

val basicComponentAssemblyConnectors =
assemblyConnectors.filter[
it
.requiredRole_AssemblyConnector
.requiringEntity_RequiredRole
.equals(pcmEntity)
]

=> Here the assumption that component "pcmEntity" is unique is implicitly introduced! Therefore, a current problem is the joint handling of the system and repository components — elements from both worlds are mapped to a single class for repository components.

Potential Solutions:
a) Do not include system information in classes for repository components. Rather, system information should be externally configured & component classes should be made reusable. E.g., concrete assemblies should be injected instead of hardly put into "general" component classes.
b) Generate a dedicated repository component class for each assembly context instead of trying to reuse component implementations. (Potential problem is when manual adaptations to components are needed, e.g., for code stubs. Then, there will be no single point in the code to make these adaptations; components would be redundantly created.)

Environment

None

Assignee

Steffen Becker

Reporter

Sebastian Lehrig

Labels

None

Requirement Category

Functional

External issue URL

None

Time tracking

0m

Time remaining

32h

Affects versions

Priority

Major