Skip to content

Conversation

@tnleeuw
Copy link
Contributor

@tnleeuw tnleeuw commented Nov 5, 2025

Change Frank!Doc XSD generator to allow extra root elements, beginning with PipelinePart.

This will change the Frank!Doc XSD generation in a way that does not make sense for older versions of the Frank!Framework, so before merging this change we should probably increase the version number to 4.3.0-SNAPSHOT and make a proper release of 4.2.0 to use in Frank!Framework 9.3.x and older.

@tnleeuw tnleeuw self-assigned this Nov 5, 2025
@tnleeuw tnleeuw added enhancement New feature or request doclet xsd labels Nov 5, 2025
@evandongen
Copy link
Contributor

Change Frank!Doc XSD generator to allow extra root elements, beginning with PipelinePart.

This will change the Frank!Doc XSD generation in a way that does not make sense for older versions of the Frank!Framework, so before merging this change we should probably increase the version number to 4.3.0-SNAPSHOT and make a proper release of 4.2.0 to use in Frank!Framework 9.3.x and older.

And perhaps we need to document which version of the doc corresponds to what version of the framework somewhere.

public enum AdditionalRootElement {
PIPELINE_PART("PipelinePart", "IPipe", "Wrapper element to help create reusable parts of a pipeline");

public static final Map<String, AdditionalRootElement> VALUE_BY_TYPE = Arrays.stream(values())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wellicht even aangeven waarom je voor deze oplossing kiest? Misschien iets met performance ofzo?

public FrankClassRepository(DocTrees docTrees, Set<? extends Element> classElements, Set<String> includeFilters, Set<String> excludeFilters, Set<String> excludeFiltersForSuperclass) {
this.excludeFiltersForSuperclass = new HashSet<>(excludeFiltersForSuperclass);

// This populates the map classesByName
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dank je, lekker verstopt idd

@nielsm5
Copy link
Member

nielsm5 commented Nov 14, 2025

In Frank!Doc a new root element should be added that acts as a pipeline (only allows validators/wrappers/pipes).

In the framework a PipelinePart should be added that extends Pipe (* in frankdoc with Pipe suffix).

step 1:

  • allow include only in outer most elements (before or in the Adapter element)
  • create a dummy PipelinePart (pipe) with a NotImplementedException (wip).
  • Ensure the xsd's work and are correct (so not a PipelinePartPipe)
  • Make the framework throw an exception (or warning) when using the include element in the wrong place.

step 2:

  • Create the actual PipelinePart which could be a pipe which extends Pipeline. The new pipe could/should be a Spring Context that way the digester will create a new 'layer' to load elements from. That way we can use the current digester mechanism as is. The pipe will have all required setters, we just need to make the digester 'include' the correct configuration xml 'part'.

step 3:

  • Make the digester work with plugins / different classloaders.

Copy link
Member

@nielsm5 nielsm5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

…PartTag

# Conflicts:
#	frank-doc-doclet/src/main/java/org/frankframework/frankdoc/FrankDocJsonFactory.java
@tnleeuw
Copy link
Contributor Author

tnleeuw commented Dec 12, 2025

In Frank!Doc a new root element should be added that acts as a pipeline (only allows validators/wrappers/pipes).

In the framework a PipelinePart should be added that extends Pipe (* in frankdoc with Pipe suffix).

step 1:

  • allow include only in outer most elements (before or in the Adapter element)
  • create a dummy PipelinePart (pipe) with a NotImplementedException (wip).
  • Ensure the xsd's work and are correct (so not a PipelinePartPipe)
  • Make the framework throw an exception (or warning) when using the include element in the wrong place.

step 2:

  • Create the actual PipelinePart which could be a pipe which extends Pipeline. The new pipe could/should be a Spring Context that way the digester will create a new 'layer' to load elements from. That way we can use the current digester mechanism as is. The pipe will have all required setters, we just need to make the digester 'include' the correct configuration xml 'part'.

step 3:

  • Make the digester work with plugins / different classloaders.

Zo'n class PipelinePart / ComponentPipe etc zit nog niet in dit PR.

Wat ik daarvoor moet doen in de Frank!Doc heb ik nog niet geheel werkend gekregen.

Wat nu in dit PR zit is PipelinePart voor include van een set pipes, dus de "simpele" versie.

De rest moet komen in een volgend PR.

@tnleeuw tnleeuw requested a review from nielsm5 December 12, 2025 13:53
@tnleeuw tnleeuw marked this pull request as ready for review December 15, 2025 14:29
@nielsm5 nielsm5 merged commit f09c6a5 into master Dec 16, 2025
3 of 5 checks passed
@nielsm5 nielsm5 deleted the feature/AddPipelinePartTag branch December 16, 2025 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doclet enhancement New feature or request xsd

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve include-ability of code whilst maintaining validation capabilities

4 participants