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);
+                               }
                        }
                }
        }

Reply via email to