This is an automated email from the ASF dual-hosted git repository. joshtynjala pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit 870f3cab75e92a38757aa9c544ddf980a19339b6 Author: Josh Tynjala <[email protected]> AuthorDate: Thu Feb 18 11:56:33 2021 -0800 playerglobal-source-gen: special case for XML/XMLList constructors --- .../royale/playerglobal/PlayerglobalSourceGen.java | 39 +++++++++++++--------- 1 file changed, 23 insertions(+), 16 deletions(-) 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 @@ class PlayerglobalSourceGen { 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 @@ class PlayerglobalSourceGen { 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 @@ class PlayerglobalSourceGen { } } - 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 @@ class PlayerglobalSourceGen { 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); + } } } }
