Tapestry
  1. Tapestry
  2. TAPESTRY-1192

support only explicit declaration of components in libraries

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 4.1.2
    • Fix Version/s: 4.1.5
    • Component/s: Framework
    • Labels:
      None

      Description

      I tried to begin to write specificationless components, ie. components without a .jwc file, and I like it
      (To tell the truth, first I felt uncomfortable with the @Component annotation, but now I see it's great

      But I realized the following problem: a specless component cannot be explicitly declared in the .library/.application file. This means that - in the extreme case - I have library files without any <component-type> elements!
      This has the following drawbacks:

      • looking at the library I cannot see which components belong to it
      • when I generate component docs using tapdoc, I have to provide additional information about the contained components. (Because when the components of the library are enumerated, specless components are not listed... this means that this info should be provided to tapdoc and similar tools by hand...)

      I would propose adding a new attribute to the <component-type> element:

      <component-type type="SomeComponent" class="com.example.SomeComponent" />

      This would mean that the given class (which should be a specless component class, annotated with @ComponentClass) is part of the library.
      I think it would be a cleaner, more natural and more uniform extension of the "old" functionality than the current "component-class-packages" configuration option (which I think is a wrong solution for such usage).

      I would recommend this new "class" attribute as the only way for adding specless components to a library.

      Regards:
      Norbi

        Activity

        Hide
        Andreas Andreou added a comment -

        Tapdoc looks for the ComponentClass annotation and also for classes that extend AbstractComponent,
        so, there's no real need for this...

        Show
        Andreas Andreou added a comment - Tapdoc looks for the ComponentClass annotation and also for classes that extend AbstractComponent, so, there's no real need for this...

          People

          • Assignee:
            Unassigned
            Reporter:
            Norbert Sándor
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development