Browse Source

Merge remote-tracking branch 'origin/dev' into dev

吕金泽 4 years ago
parent
commit
6e260c995e

+ 1 - 1
README.md

@@ -43,7 +43,7 @@
 <dependency>
 <dependency>
 	<groupId>org.ssssssss</groupId>
 	<groupId>org.ssssssss</groupId>
 	<artifactId>magic-api-spring-boot-starter</artifactId>
 	<artifactId>magic-api-spring-boot-starter</artifactId>
-    <version>0.3.4</version>
+    <version>0.4.0</version>
 </dependency>
 </dependency>
 ```
 ```
 ## 修改application.properties
 ## 修改application.properties

+ 2 - 2
pom.xml

@@ -11,7 +11,7 @@
     </parent>
     </parent>
     <groupId>org.ssssssss</groupId>
     <groupId>org.ssssssss</groupId>
     <artifactId>magic-api</artifactId>
     <artifactId>magic-api</artifactId>
-    <version>0.3.4</version>
+    <version>0.4.0</version>
     <packaging>jar</packaging>
     <packaging>jar</packaging>
     <name>magic-api</name>
     <name>magic-api</name>
     <description>auto generate http api</description>
     <description>auto generate http api</description>
@@ -38,7 +38,7 @@
         <dependency>
         <dependency>
             <groupId>org.ssssssss</groupId>
             <groupId>org.ssssssss</groupId>
             <artifactId>magic-script</artifactId>
             <artifactId>magic-script</artifactId>
-            <version>1.2.3</version>
+            <version>1.2.4</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>

+ 3 - 3
src/main/resources/magicapi-support/index.html

@@ -2,7 +2,7 @@
 <html>
 <html>
 <head>
 <head>
 	<meta charset="UTF-8">
 	<meta charset="UTF-8">
-	<title>MagicAPI v0.3.4 - Powered by ssssssss-team</title>
+	<title>MagicAPI v0.4.0 - Powered by ssssssss-team</title>
 	<link rel="icon" href="images/favicon.png" />
 	<link rel="icon" href="images/favicon.png" />
 	<style type="text/css">.loading-wrapper{position:fixed;top:0;bottom:0;left:0;right:0;z-index:2147483647;text-align:center;background:#fff}.loading{position:absolute;top:50%;left:50%;width:500px;height:100px;margin-left:-250px;margin-top:-50px;text-align:center}.loading .title{font-size:0;color:#0075ff;letter-spacing:0}.loading .title label{font-size:36px;display:inline-block;margin-top:5px;vertical-align:top}.loading .title span{font-size:72px;display:inline-block;padding:0 3px;animation:stretch 1s infinite}.loading .title span:nth-child(1){animation-delay:calc(1s / 8 * 0 / 2)}.loading .title span:nth-child(2){animation-delay:calc(1s / 8 * 1 / 2)}.loading .title span:nth-child(3){animation-delay:calc(1s / 8 * 2 / 2)}.loading .title span:nth-child(4){animation-delay:calc(1s / 8 * 3 / 2)}.loading .title span:nth-child(5){animation-delay:calc(1s / 8 * 4 / 2)}.loading .title span:nth-child(6){animation-delay:calc(1s / 8 * 5 / 2)}.loading .title span:nth-child(7){animation-delay:calc(1s / 8 * 6 / 2)}.loading .title span:nth-child(8){animation-delay:calc(1s / 8 * 7 / 2)}.loading .loading-text{text-align:center;font-weight:bolder;font-style:italic;color:#889aa4;font-size:32px;animation:blink-loading 2s ease-in infinite}@keyframes stretch{0%{transform:scale(1)}25%{transform:scale(1.2)}50%{transform:scale(1)}100%{transform:scale(1)}}@keyframes blink-loading{0%{opacity:100%}50%{opacity:50%}100%{opacity:100%}}</style>
 	<style type="text/css">.loading-wrapper{position:fixed;top:0;bottom:0;left:0;right:0;z-index:2147483647;text-align:center;background:#fff}.loading{position:absolute;top:50%;left:50%;width:500px;height:100px;margin-left:-250px;margin-top:-50px;text-align:center}.loading .title{font-size:0;color:#0075ff;letter-spacing:0}.loading .title label{font-size:36px;display:inline-block;margin-top:5px;vertical-align:top}.loading .title span{font-size:72px;display:inline-block;padding:0 3px;animation:stretch 1s infinite}.loading .title span:nth-child(1){animation-delay:calc(1s / 8 * 0 / 2)}.loading .title span:nth-child(2){animation-delay:calc(1s / 8 * 1 / 2)}.loading .title span:nth-child(3){animation-delay:calc(1s / 8 * 2 / 2)}.loading .title span:nth-child(4){animation-delay:calc(1s / 8 * 3 / 2)}.loading .title span:nth-child(5){animation-delay:calc(1s / 8 * 4 / 2)}.loading .title span:nth-child(6){animation-delay:calc(1s / 8 * 5 / 2)}.loading .title span:nth-child(7){animation-delay:calc(1s / 8 * 6 / 2)}.loading .title span:nth-child(8){animation-delay:calc(1s / 8 * 7 / 2)}.loading .loading-text{text-align:center;font-weight:bolder;font-style:italic;color:#889aa4;font-size:32px;animation:blink-loading 2s ease-in infinite}@keyframes stretch{0%{transform:scale(1)}25%{transform:scale(1.2)}50%{transform:scale(1)}100%{transform:scale(1)}}@keyframes blink-loading{0%{opacity:100%}50%{opacity:50%}100%{opacity:100%}}</style>
 	<link rel="stylesheet" href="css/index.css" />
 	<link rel="stylesheet" href="css/index.css" />
@@ -25,7 +25,7 @@
 			<span>A</span>
 			<span>A</span>
 			<span>P</span>
 			<span>P</span>
 			<span>I</span>
 			<span>I</span>
-			<label>v0.3.4</label>
+			<label>v0.4.0</label>
 		</div>
 		</div>
 		<div class="loading-text">Loading...</div>
 		<div class="loading-text">Loading...</div>
 	</div>
 	</div>
@@ -34,7 +34,7 @@
 	<div class="header">
 	<div class="header">
 		<img src="images/logo.png"/>
 		<img src="images/logo.png"/>
 		<label>magic-api</label>
 		<label>magic-api</label>
-		<label class="version">v0.3.4</label>
+		<label class="version">v0.4.0</label>
 	</div>
 	</div>
 	<span class="button-run" title="运行(Ctrl+Q)"><i class="iconfont icon-run"></i></span>
 	<span class="button-run" title="运行(Ctrl+Q)"><i class="iconfont icon-run"></i></span>
 	<span class="button-save" title="保存(Ctrl+S)"><i class="iconfont icon-save"></i></span>
 	<span class="button-save" title="保存(Ctrl+S)"><i class="iconfont icon-save"></i></span>

+ 2 - 2
src/main/resources/magicapi-support/js/index.js

@@ -237,7 +237,7 @@ var MagicEditor = {
         var _this = this;
         var _this = this;
         element.onload = element.onreadystatechange = function(){
         element.onload = element.onreadystatechange = function(){
             if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete') {
             if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete') {
-                _this.report('v0_3_4');
+                _this.report('v0_4_0');
             }
             }
         }
         }
 
 
@@ -902,7 +902,7 @@ var MagicEditor = {
             url : 'https://img.shields.io/maven-central/v/org.ssssssss/magic-api.json',
             url : 'https://img.shields.io/maven-central/v/org.ssssssss/magic-api.json',
             dataType : 'json',
             dataType : 'json',
             success : function(data){
             success : function(data){
-                if(data.value != 'v0.3.4'){
+                if(data.value != 'v0.4.0'){
                     if(ignoreVersion != data.value){
                     if(ignoreVersion != data.value){
                         _this.createDialog({
                         _this.createDialog({
                             title : '更新提示',
                             title : '更新提示',

+ 34 - 18
src/main/resources/magicapi-support/monaco/language/magicscript.js

@@ -548,16 +548,33 @@ var Parser = {
         }
         }
         return target || 'java.lang.Object';
         return target || 'java.lang.Object';
     },
     },
+    loadClass : function(value){
+        MagicEditor.ajax({
+            url: 'class',
+            async : false,
+            data: {
+                className: value
+            },
+            success: function (list) {
+                Parser.scriptClass[value] = null;
+                for (var i = 0, len = list.length; i < len; i++) {
+                    var item = list[i];
+                    Parser.scriptClass[item.className] = item;
+                }
+            }
+        })
+    },
     parse: function (stream) {
     parse: function (stream) {
         try{
         try{
             var vars = {
             var vars = {
             };
             };
             for(var key in  Parser.scriptClass){
             for(var key in  Parser.scriptClass){
                 if(key.indexOf('.') == -1){
                 if(key.indexOf('.') == -1){
-                    var clazzName = Parser.scriptClass[key].className;
+                    var target = Parser.scriptClass[key];
+                    var clazzName = target.className;
                     vars[key] = clazzName;
                     vars[key] = clazzName;
                     if(!Parser.scriptClass[clazzName]){
                     if(!Parser.scriptClass[clazzName]){
-                        Parser.scriptClass[clazzName] = Parser.scriptClass[key];
+                        Parser.scriptClass[clazzName] = target;
                     }
                     }
                 }
                 }
             }
             }
@@ -587,19 +604,7 @@ var Parser = {
                         varName = stream.consume().getText();
                         varName = stream.consume().getText();
                     }
                     }
                     if (Parser.scriptClass[value] === undefined) {
                     if (Parser.scriptClass[value] === undefined) {
-                        MagicEditor.ajax({
-                            url: 'class',
-                            data: {
-                                className: value
-                            },
-                            success: function (list) {
-                                Parser.scriptClass[value] = null;
-                                for (var i = 0, len = list.length; i < len; i++) {
-                                    var item = list[i];
-                                    Parser.scriptClass[item.className] = item;
-                                }
-                            }
-                        })
+                        this.loadClass(value);
                     }
                     }
                     if (varName) {
                     if (varName) {
                         vars[varName] = value;
                         vars[varName] = value;
@@ -623,6 +628,9 @@ var Parser = {
                 }
                 }
             }
             }
             var type = expression && expression.getJavaType(vars);
             var type = expression && expression.getJavaType(vars);
+            if(type&&Parser.scriptClass[type] === undefined){
+                this.loadClass(type)
+            }
             return type;
             return type;
         }catch(e){
         }catch(e){
             return '';
             return '';
@@ -851,7 +859,7 @@ var Parser = {
                 }
                 }
             } else {
             } else {
                 stream.expect(":");
                 stream.expect(":");
-                values.add(parseExpression(stream));
+                values.push(this.parseExpression(stream));
                 if (!stream.match("}", false)) {
                 if (!stream.match("}", false)) {
                     stream.expect(TokenType.Comma);
                     stream.expect(TokenType.Comma);
                 }
                 }
@@ -1093,6 +1101,9 @@ var AST = {
         this.getJavaType = function (env) {
         this.getJavaType = function (env) {
             var target = node.node.getJavaType(env);
             var target = node.node.getJavaType(env);
             var targetMethod = node.member;
             var targetMethod = node.member;
+            if (Parser.scriptClass[target] === undefined) {
+                Parser.loadClass(target);
+            }
             target = Parser.scriptClass[target];
             target = Parser.scriptClass[target];
             var methods = target && target.methods;
             var methods = target && target.methods;
             if (methods) {
             if (methods) {
@@ -1126,6 +1137,9 @@ var AST = {
         this.member = member.getText();
         this.member = member.getText();
         this.getJavaType = function (env, args) {
         this.getJavaType = function (env, args) {
             var target = node.getJavaType(env);
             var target = node.getJavaType(env);
+            if (Parser.scriptClass[target] === undefined) {
+                Parser.loadClass(target);
+            }
             target = Parser.scriptClass[target];
             target = Parser.scriptClass[target];
             if(target.superClass == 'java.util.HashMap'){
             if(target.superClass == 'java.util.HashMap'){
                 var methods = target && target.methods;
                 var methods = target && target.methods;
@@ -1314,6 +1328,7 @@ require(['vs/editor/editor.main'], function() {
                     method.sortText = padding(sort,10) + method.name;
                     method.sortText = padding(sort,10) + method.name;
                     method.fullName = method.name + '(' + params2.join(', ') + ')';
                     method.fullName = method.name + '(' + params2.join(', ') + ')';
                     method.insertText += '(' + params.join(',') + ')';
                     method.insertText += '(' + params.join(',') + ')';
+                    method.signature = method.name + params2.join(',');
                 } else {
                 } else {
                     method.sortText = padding(sort,10) + method.name;
                     method.sortText = padding(sort,10) + method.name;
                     method.insertText += '()';
                     method.insertText += '()';
@@ -1321,6 +1336,7 @@ require(['vs/editor/editor.main'], function() {
                     if (!method.comment) {
                     if (!method.comment) {
                         method.comment = Parser.getSimpleClass(method.returnType) + ':' + method.name + '()';
                         method.comment = Parser.getSimpleClass(method.returnType) + ':' + method.name + '()';
                     }
                     }
+                    method.signature = method.name;
                 }
                 }
                 methods.push(method);
                 methods.push(method);
             }
             }
@@ -1445,10 +1461,10 @@ require(['vs/editor/editor.main'], function() {
                             var mmap = {};
                             var mmap = {};
                             for (var j = 0; j < methods.length; j++) {
                             for (var j = 0; j < methods.length; j++) {
                                 var method = methods[j];
                                 var method = methods[j];
-                                if(mmap[method.fullName]){
+                                if(mmap[method.signature]){
                                     continue;
                                     continue;
                                 }
                                 }
-                                mmap[method.fullName] = true;
+                                mmap[method.signature] = true;
                                 suggestions.push({
                                 suggestions.push({
                                     sortText: method.sortText || method.fullName,
                                     sortText: method.sortText || method.fullName,
                                     label: method.fullName,
                                     label: method.fullName,