You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by "Markus Schuch (JIRA)" <ji...@apache.org> on 2007/04/04 17:52:32 UTC
[jira] Commented: (WSCOMMONS-24) Schema "groups"
XmlSchemaObjectTable is filled using invalid HashMap keys
[ https://issues.apache.org/jira/browse/WSCOMMONS-24?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486681 ]
Markus Schuch commented on WSCOMMONS-24:
----------------------------------------
Hi,
I currently use this API and i can confirm Peter's analysis. The attribute groupe table is also affected by this issue.
Location:
class: org.apache.ws.commons.schema.SchemaBuilder
(http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java?view=markup)
in method: handleXmlSchemaElement(...)
168: ...
169: } else if (el.getLocalName().equals("group")) {
170: XmlSchemaGroup group = handleGroup(schema, el, schemaEl);
171: schema.groups.collection.put(group.name, group); // <-- here the group table is filled with keys of type string
172: schema.items.add(group);
173: } ...
Instead of "group.name" something like "new QName(schema.getTargetNamespace(), group.name)" has to be used as key object since a specific item in a XmlSchemaObjectTable can only be accessed with a key of type QName: XmlSchemaObjectTable.getItem(QName name)
(I am not sure if the "schema.getTargetNamespace()" is the correct solution for all cases.)
Same for AttributeGroups in lines 173-177
Hope this helps!
Regards,
Markus
> Schema "groups" XmlSchemaObjectTable is filled using invalid HashMap keys
> -------------------------------------------------------------------------
>
> Key: WSCOMMONS-24
> URL: https://issues.apache.org/jira/browse/WSCOMMONS-24
> Project: WS-Commons
> Issue Type: Bug
> Components: XmlSchema
> Environment: WS Commons XML Schema 1.0.2
> Reporter: Peter Hendriks
>
> The XmlSchemaObjectTable retrieved using XmlSchema.getGroups() is filled in SchemaBuilder by using the package scope collection variable instead of its public API. For groups and attribute groups a key of the wrong type is used (String instead of QName).
> As a result groups cannot be accessed using the public API, because you can only query using a QName, and the keys are only Strings. As a result groups cannot be read by key and the API is broken.
> The issue can be worked around by using the getValues() method to search through all groups directly.
> This should be very easy to fix and I am willing to provide a patch. The code is riddled with package scoped fields and methods. This is generally bad practice because of these kinds of problems. Please consider refactoring the code to more restrictive field/method scoping to have a cleaner API and prevent errors.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org