Index: main/java/org/exolab/castor/builder/SourceFactory.java
===================================================================
--- main/java/org/exolab/castor/builder/SourceFactory.java (Revision 5965)
+++ main/java/org/exolab/castor/builder/SourceFactory.java (Arbeitskopie)
@@ -1733,7 +1733,7 @@
boolean useValuesAsName = true;
while (enumeration.hasMoreElements()) {
Facet facet = (Facet)enumeration.nextElement();
- String possibleId = translateEnumValueToIdentifier(facet.getValue());
+ String possibleId = translateEnumValueToIdentifier(facet);
if (!JavaNaming.isValidJavaIdentifier(possibleId)) {
useValuesAsName = false;
break;
@@ -1841,7 +1841,7 @@
String typeName = null;
String objName = null;
- if (useValuesAsName) objName = translateEnumValueToIdentifier(value);
+ if (useValuesAsName) objName = translateEnumValueToIdentifier(facet);
else objName = "VALUE_" + count;
//-- create typeName
@@ -2073,28 +2073,43 @@
* - the characters |\/?~!@#$%^&*-+=:;., and any whitespace are replaced with _
* @author rhett-sutphin@uiowa.edu
*/
- private String translateEnumValueToIdentifier(String enumValue)
+ private String translateEnumValueToIdentifier(Facet facet)
{
+ String enumValue = facet.getValue();
try {
- int intVal = Integer.parseInt(enumValue);
+ int intVal = Integer.parseInt(facet.getValue());
if (intVal >= 0) return "VALUE_" + intVal;
return "VALUE_NEG_" + Math.abs(intVal);
} catch (NumberFormatException e) {
// just keep going
}
- StringBuffer sb = new StringBuffer(enumValue.toUpperCase());
- char c;
- for (int i = 0 ; i < sb.length() ; i++) {
- c = sb.charAt(i);
- if ("[](){}<>'`\"".indexOf(c) >= 0) {
- sb.deleteCharAt(i);
- i--;
+
+ XMLBindingComponent component = new XMLBindingComponent(_config);
+ if (_binding != null) component.setBinding(_binding);
+ // set binding view
+ component.setView(facet);
+
+ StringBuffer sb = new StringBuffer();
+
+ String memberName = component.getJavaMemberName();
+ if (memberName != null) {
+ sb.append(memberName);
+ } else {
+
+ sb.append(enumValue.toUpperCase());
+ char c;
+ for (int i = 0 ; i < sb.length() ; i++) {
+ c = sb.charAt(i);
+ if ("[](){}<>'`\"".indexOf(c) >= 0) {
+ sb.deleteCharAt(i);
+ i--;
+ }
+ else if (Character.isWhitespace(c) || "\\/?~!@#$%^&*-+=:;.,".indexOf(c) >= 0) {
+ sb.setCharAt(i, '_');
+ }
}
- else if (Character.isWhitespace(c) || "\\/?~!@#$%^&*-+=:;.,".indexOf(c) >= 0) {
- sb.setCharAt(i, '_');
- }
}
return sb.toString();
} //-- translateEnumValueToIdentifier
Index: main/resources/org/exolab/castor/builder/binding/binding.xsd
===================================================================
--- main/resources/org/exolab/castor/builder/binding/binding.xsd (Revision 5965)
+++ main/resources/org/exolab/castor/builder/binding/binding.xsd (Arbeitskopie)
@@ -37,8 +37,7 @@
-
-
+
@@ -50,6 +49,7 @@
+
@@ -127,6 +127,7 @@
+
@@ -191,15 +192,17 @@
-
+
Index: build.xml
===================================================================
--- build.xml (Revision 5965)
+++ build.xml (Arbeitskopie)
@@ -798,4 +798,24 @@
+
+
+
+
+
+
+
+
+
+
+