Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 343770

Summary: Incomplete TagData for custom tags in tag attribute regions
Product: [WebTools] WTP Source Editing Reporter: Nick Sandonato <nsand.dev>
Component: jst.jspAssignee: Nick Sandonato <nsand.dev>
Status: RESOLVED FIXED QA Contact: Nick Sandonato <nsand.dev>
Severity: normal    
Priority: P2 CC: cbridgha, david_williams, thatnitind
Version: 3.2.4Flags: david_williams: pmc_approved+
nsand.dev: pmc_approved? (raghunathan.srinivasan)
nsand.dev: pmc_approved? (naci.dai)
nsand.dev: pmc_approved? (deboer)
nsand.dev: pmc_approved? (neil.hauge)
nsand.dev: pmc_approved? (kaloyan)
cbridgha: pmc_approved+
thatnitind: review+
Target Milestone: 3.2.4   
Hardware: All   
OS: All   
Whiteboard: PMC_approved
Attachments:
Description Flags
patch
none
unit tests none

Description Nick Sandonato CLA 2011-04-25 15:48:43 EDT
When creating custom tags, TagData is collected from the attributes to be used in TEI validation. For custom tags within attribute value regions, however, this collection can fail.

For example,

<div <c:forEach items="${ myList }">class="foo"</c:forEach>></div>

At the moment, the dynamic content within the value of items causes the collection to be incomplete. The dynamic content is skipped over because it is not seen as a value for the attribute. Without a value, the item isn't added to the TagData mapping. The TagExtraInfo class for c:forEach validates the presence of items. When it is not found, a Problem is generated that reports, fairly generically, "isValid() == false" (this is the default message). Meanwhile, the markup is actually correct.
Comment 1 Nick Sandonato CLA 2011-04-25 15:51:15 EDT
Created attachment 194020 [details]
patch
Comment 2 Nick Sandonato CLA 2011-04-25 15:54:19 EDT
Created attachment 194021 [details]
unit tests

Adding a unit test for this scenario
Comment 3 Nick Sandonato CLA 2011-04-25 17:04:01 EDT
* Explain why you believe this is a stop-ship defect. Or, if it is a "hotbug" (requested by an adopter) please document it as such.
Valid usage of custom tags is flagged with an extremely confusing error: isValid() == false. This error message is the default provided by the implementation of TagExtraInfo classes.

* Is there a work-around? If so, why do you believe the work-around is insufficient?
Use validation severities to configure TEI Validation Message severity to Ignore. This is insufficient because the default message is "isValid() == false". Unless someone was familiar with the implementation of TagExtraInfo, he/she might not realize that this is generated by the TagExtraInfo#validate(). WIthout knowing that, it wouldn't be easy to figure out that this validation setting controls that message.

* How has the fix been tested? Is there a test case attached to the bugzilla record? Has a JUnit Test been added?
Existing unit tests run along with a new unit test being added. Also, ad hoc testing has been done.

* Give a brief technical overview. Who has reviewed this fix?
Recently, our translation of embedded custom tags improved. This brought to light a problem in how we extracted attributes from these embedded custom tags for TagData to be used in TEI Validation. To correct the problem, we now appropriately find all of the dynamic content of attribute values for embedded custom tags so that we appropriately populate the TagData.

Nitin reviewed the fix.

* What is the risk associated with this fix?
Low
Comment 4 David Williams CLA 2011-04-28 10:09:21 EDT
Should we respin our build this week to pick up this fix? I'm hoping this is our final build, except for serious regressions ... if this had to go in next week, I'm not sure there's sufficient time for adequate testing.
Comment 5 Nick Sandonato CLA 2011-04-28 10:31:20 EDT
(In reply to comment #4)
> Should we respin our build this week to pick up this fix? I'm hoping this is
> our final build, except for serious regressions ... if this had to go in next
> week, I'm not sure there's sufficient time for adequate testing.

Respin requested on wtp-releng.