You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Hasan Hosgel (JIRA)" <ji...@apache.org> on 2009/11/04 13:49:32 UTC
[jira] Created: (CXF-2520) wrong handling in setNamespaceMap for
AbstractDataBinding
wrong handling in setNamespaceMap for AbstractDataBinding
---------------------------------------------------------
Key: CXF-2520
URL: https://issues.apache.org/jira/browse/CXF-2520
Project: CXF
Issue Type: Bug
Components: JAXB Databinding
Affects Versions: 2.2.4
Reporter: Hasan Hosgel
The Class org.apache.cxf.databinding.AbstractDataBinding has a Bug in the checking of duplicate NamespacePrefixes during the setting of the namespaceMap.
Extraction of class:
public void setNamespaceMap(Map<String, String> namespaceMap) {
// make some checks. This is a map from namespace to prefix, but we want unique prefixes.
if (namespaceMap != null) {
Set<String> prefixesSoFar = new HashSet<String>();
for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
if (prefixesSoFar.contains(mapping.getValue())) {
throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
}
}
}
this.namespaceMap = namespaceMap;
}
There is no adding method for prefixesSoFar-Set.
My solving idea is:
/**
* @param namespaceMap The namespaceMap to set.
*/
public void setNamespaceMap(Map<String, String> namespaceMap) {
// make some checks. This is a map from namespace to prefix, but we want unique prefixes.
if ((namespaceMap == null) || namespaceMap.isEmpty()) {
throw new IllegalArgumentException("adding a null or empty namespaceMap is not allowed");
} else {
Set<String> prefixesSoFar = new HashSet<String>();
for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
if (prefixesSoFar.contains(mapping.getValue())) {
throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
}
prefixesSoFar.add(mapping.getValue());
}
mapper = new NamespaceMapper(namespaceMap);
}
}
This solution is more strict, because it does not allow to add a null or an empty Map.
The same Bug goes for checkNameSpaceMap.
The both method are smelling, because it is copy paste. It can be solved in a smater way :).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-2520) wrong handling in setNamespaceMap for
AbstractDataBinding
Posted by "Benson Margulies (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2520?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benson Margulies updated CXF-2520:
----------------------------------
Component/s: (was: JAXB Databinding)
Core
> wrong handling in setNamespaceMap for AbstractDataBinding
> ---------------------------------------------------------
>
> Key: CXF-2520
> URL: https://issues.apache.org/jira/browse/CXF-2520
> Project: CXF
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.4
> Reporter: Hasan Hosgel
> Fix For: 2.3
>
>
> The Class org.apache.cxf.databinding.AbstractDataBinding has a Bug in the checking of duplicate NamespacePrefixes during the setting of the namespaceMap.
> Extraction of class:
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if (namespaceMap != null) {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> }
> }
> this.namespaceMap = namespaceMap;
> }
> There is no adding method for prefixesSoFar-Set.
> My solving idea is:
> /**
> * @param namespaceMap The namespaceMap to set.
> */
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if ((namespaceMap == null) || namespaceMap.isEmpty()) {
> throw new IllegalArgumentException("adding a null or empty namespaceMap is not allowed");
> } else {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> prefixesSoFar.add(mapping.getValue());
> }
> mapper = new NamespaceMapper(namespaceMap);
> }
> }
> This solution is more strict, because it does not allow to add a null or an empty Map.
> The same Bug goes for checkNameSpaceMap.
> The both method are smelling, because it is copy paste. It can be solved in a smater way :).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-2520) wrong handling in setNamespaceMap for
AbstractDataBinding
Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2520?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp updated CXF-2520:
-----------------------------
Fix Version/s: (was: 2.3)
2.2.5
> wrong handling in setNamespaceMap for AbstractDataBinding
> ---------------------------------------------------------
>
> Key: CXF-2520
> URL: https://issues.apache.org/jira/browse/CXF-2520
> Project: CXF
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.4
> Reporter: Hasan Hosgel
> Fix For: 2.2.5
>
>
> The Class org.apache.cxf.databinding.AbstractDataBinding has a Bug in the checking of duplicate NamespacePrefixes during the setting of the namespaceMap.
> Extraction of class:
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if (namespaceMap != null) {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> }
> }
> this.namespaceMap = namespaceMap;
> }
> There is no adding method for prefixesSoFar-Set.
> My solving idea is:
> /**
> * @param namespaceMap The namespaceMap to set.
> */
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if ((namespaceMap == null) || namespaceMap.isEmpty()) {
> throw new IllegalArgumentException("adding a null or empty namespaceMap is not allowed");
> } else {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> prefixesSoFar.add(mapping.getValue());
> }
> mapper = new NamespaceMapper(namespaceMap);
> }
> }
> This solution is more strict, because it does not allow to add a null or an empty Map.
> The same Bug goes for checkNameSpaceMap.
> The both method are smelling, because it is copy paste. It can be solved in a smater way :).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (CXF-2520) wrong handling in setNamespaceMap for
AbstractDataBinding
Posted by "Benson Margulies (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2520?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12773469#action_12773469 ]
Benson Margulies commented on CXF-2520:
---------------------------------------
Would you be willing to post a formal patch with a cleanup?
> wrong handling in setNamespaceMap for AbstractDataBinding
> ---------------------------------------------------------
>
> Key: CXF-2520
> URL: https://issues.apache.org/jira/browse/CXF-2520
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.2.4
> Reporter: Hasan Hosgel
>
> The Class org.apache.cxf.databinding.AbstractDataBinding has a Bug in the checking of duplicate NamespacePrefixes during the setting of the namespaceMap.
> Extraction of class:
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if (namespaceMap != null) {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> }
> }
> this.namespaceMap = namespaceMap;
> }
> There is no adding method for prefixesSoFar-Set.
> My solving idea is:
> /**
> * @param namespaceMap The namespaceMap to set.
> */
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if ((namespaceMap == null) || namespaceMap.isEmpty()) {
> throw new IllegalArgumentException("adding a null or empty namespaceMap is not allowed");
> } else {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> prefixesSoFar.add(mapping.getValue());
> }
> mapper = new NamespaceMapper(namespaceMap);
> }
> }
> This solution is more strict, because it does not allow to add a null or an empty Map.
> The same Bug goes for checkNameSpaceMap.
> The both method are smelling, because it is copy paste. It can be solved in a smater way :).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (CXF-2520) wrong handling in setNamespaceMap for
AbstractDataBinding
Posted by "Benson Margulies (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2520?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benson Margulies resolved CXF-2520.
-----------------------------------
Resolution: Fixed
Fix Version/s: 2.3
I did this in r833963. I did not reject null, rejecting null was never intended.
> wrong handling in setNamespaceMap for AbstractDataBinding
> ---------------------------------------------------------
>
> Key: CXF-2520
> URL: https://issues.apache.org/jira/browse/CXF-2520
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.2.4
> Reporter: Hasan Hosgel
> Fix For: 2.3
>
>
> The Class org.apache.cxf.databinding.AbstractDataBinding has a Bug in the checking of duplicate NamespacePrefixes during the setting of the namespaceMap.
> Extraction of class:
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if (namespaceMap != null) {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> }
> }
> this.namespaceMap = namespaceMap;
> }
> There is no adding method for prefixesSoFar-Set.
> My solving idea is:
> /**
> * @param namespaceMap The namespaceMap to set.
> */
> public void setNamespaceMap(Map<String, String> namespaceMap) {
> // make some checks. This is a map from namespace to prefix, but we want unique prefixes.
> if ((namespaceMap == null) || namespaceMap.isEmpty()) {
> throw new IllegalArgumentException("adding a null or empty namespaceMap is not allowed");
> } else {
> Set<String> prefixesSoFar = new HashSet<String>();
> for (Map.Entry<String, String> mapping : namespaceMap.entrySet()) {
> if (prefixesSoFar.contains(mapping.getValue())) {
> throw new IllegalArgumentException("Duplicate prefix " + mapping.getValue());
> }
> prefixesSoFar.add(mapping.getValue());
> }
> mapper = new NamespaceMapper(namespaceMap);
> }
> }
> This solution is more strict, because it does not allow to add a null or an empty Map.
> The same Bug goes for checkNameSpaceMap.
> The both method are smelling, because it is copy paste. It can be solved in a smater way :).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.