playerglobal-source-gen: special case for XML/XMLList constructors
diff --git a/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java b/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
index e58e160..88f1449 100644
--- a/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
+++ b/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
@@ -747,7 +747,7 @@
functionBuilder.append("function ");
functionBuilder.append(functionName);
functionBuilder.append("(");
- parseParameters(apiParamElements, contextClassName, functionBuilder);
+ parseParameters(apiParamElements, contextClassName, functionName, functionBuilder);
functionBuilder.append(")");
functionBuilder.append(":");
functionBuilder.append(returnType);
@@ -793,7 +793,7 @@
functionBuilder.append("function ");
functionBuilder.append(constructorName);
functionBuilder.append("(");
- parseParameters(apiParamElements, contextClassName, functionBuilder);
+ parseParameters(apiParamElements, contextClassName, constructorName, functionBuilder);
functionBuilder.append(")");
functionBuilder.append(";");
functionBuilder.append("\n");
@@ -958,8 +958,10 @@
}
}
- private void parseParameters(List<Element> apiParamElements, String contextClassName, StringBuilder functionBuilder)
- throws Exception {
+ private void parseParameters(List<Element> apiParamElements, String contextClassName, String contextFunctionName,
+ StringBuilder functionBuilder) throws Exception {
+ boolean isXMLConstructor = ("XML".equals(contextClassName) && "XML".equals(contextFunctionName))
+ || ("XMLList".equals(contextClassName) && "XMLList".equals(contextFunctionName));
for (int i = 0; i < apiParamElements.size(); i++) {
if (i > 0) {
functionBuilder.append(", ");
@@ -979,18 +981,23 @@
throw new Exception("apiItemName not found");
}
functionBuilder.append(apiItemNameElement.getTextTrim());
- Element apiOperationClassifierElement = apiParamElement.element("apiOperationClassifier");
- if (apiOperationClassifierElement != null) {
- paramType = apiOperationClassifierElement.getTextTrim();
- paramType = paramType.replace(":", ".");
- }
- if (paramType != null) {
- functionBuilder.append(":");
- functionBuilder.append(paramType);
- }
- Element apiDataElement = apiParamElement.element("apiData");
- if (apiDataElement != null) {
- writeVariableOrParameterValue(apiDataElement, paramType, functionBuilder);
+ if (isXMLConstructor) {
+ //workaround for missing data in asdoc dita
+ functionBuilder.append(":* = null");
+ } else {
+ Element apiOperationClassifierElement = apiParamElement.element("apiOperationClassifier");
+ if (apiOperationClassifierElement != null) {
+ paramType = apiOperationClassifierElement.getTextTrim();
+ paramType = paramType.replace(":", ".");
+ }
+ if (paramType != null) {
+ functionBuilder.append(":");
+ functionBuilder.append(paramType);
+ }
+ Element apiDataElement = apiParamElement.element("apiData");
+ if (apiDataElement != null) {
+ writeVariableOrParameterValue(apiDataElement, paramType, functionBuilder);
+ }
}
}
}