From eb91d17982f01b311e76043f86796780c138e808 Mon Sep 17 00:00:00 2001 From: CaiHQ Date: Mon, 24 Jul 2023 12:33:54 +0800 Subject: [PATCH] support interface --- .../sc/compiler/AnnotationProcessor.java | 3 ++- .../org/bdware/sc/compiler/YJSCompiler.java | 19 ++++++++++--------- .../java/org/bdware/sc/compiler/ap/DOOP.java | 3 ++- .../java/org/bdware/sc/compiler/ap/Join.java | 3 ++- .../java/org/bdware/sc/compiler/ap/Route.java | 3 ++- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/bdware/sc/compiler/AnnotationProcessor.java b/src/main/java/org/bdware/sc/compiler/AnnotationProcessor.java index e3d48dd..79b81aa 100644 --- a/src/main/java/org/bdware/sc/compiler/AnnotationProcessor.java +++ b/src/main/java/org/bdware/sc/compiler/AnnotationProcessor.java @@ -14,8 +14,9 @@ public abstract class AnnotationProcessor { FunctionNode functionNode) throws Exception { return; } + public void processInterface(AnnotationNode anno, ContractNode contractNode, - InterfaceNode functionNode) throws Exception { + InterfaceNode functionNode) throws Exception { return; } } diff --git a/src/main/java/org/bdware/sc/compiler/YJSCompiler.java b/src/main/java/org/bdware/sc/compiler/YJSCompiler.java index 3da8b87..d0b723d 100644 --- a/src/main/java/org/bdware/sc/compiler/YJSCompiler.java +++ b/src/main/java/org/bdware/sc/compiler/YJSCompiler.java @@ -34,8 +34,7 @@ public class YJSCompiler { ContractNode contract; private static final Logger LOGGER = LogManager.getLogger(YJSCompiler.class); - public YJSCompiler() { - } + public YJSCompiler() {} public static ScriptFunction compileWithGlobal(Source source, Global global, Context context) { Global oldGlobal = Context.getGlobal(); @@ -56,7 +55,7 @@ public class YJSCompiler { } private static Context makeContext(final InputStream in, final OutputStream out, - final OutputStream err) { + final OutputStream err) { final PrintStream pout = out instanceof PrintStream ? (PrintStream) out : new PrintStream(out); final PrintStream perr = @@ -68,7 +67,7 @@ public class YJSCompiler { final ErrorManager errors = new ErrorManager(werr); // Set up options. final Options options = new Options("nashorn", werr); - options.process(new String[]{}); + options.process(new String[] {}); // detect scripting mode by any source's first character being '#' options.set("persistent.code.cache", true); options.set("print.code", "true"); @@ -121,7 +120,7 @@ public class YJSCompiler { Set todo = new HashSet<>(); Set allEntries = new HashSet<>(); Enumeration iter = zf.entries(); - for (; iter.hasMoreElements(); ) { + for (; iter.hasMoreElements();) { ZipEntry ele = iter.nextElement(); if (ele != null) allEntries.add(ele.getName()); @@ -140,7 +139,8 @@ public class YJSCompiler { String cnPath = entry.getName(); int i = cnPath.lastIndexOf("/"); String cnDir = ""; - if (i != -1) cnDir = cnPath.substring(0, i); + if (i != -1) + cnDir = cnPath.substring(0, i); czb.put(str, cn); for (ImportNode in : cn.getImports()) { String path = in.getPath(); @@ -155,9 +155,10 @@ public class YJSCompiler { if (allEntries.contains(str)) toParse.add(str); else { - //TODO parse manifest.json first? + // TODO parse manifest.json first? for (String entry : allEntries) - if (!czb.containsPath(entry) && entry.startsWith(str) && entry.endsWith(".yjs")) { + if (!czb.containsPath(entry) && entry.startsWith(str) + && entry.endsWith(".yjs")) { toParse.add(entry); } } @@ -181,7 +182,7 @@ public class YJSCompiler { + " function getGlobal () { return Global; }}"; czb.put(globalBeanName + ".yjs", compile(new ByteArrayInputStream( - globalBeanContract.getBytes(StandardCharsets.UTF_8)), + globalBeanContract.getBytes(StandardCharsets.UTF_8)), globalBeanName + ".yjs")); LOGGER.info("--compile-- " + globalBeanName); czb.setMergedContractNode(); diff --git a/src/main/java/org/bdware/sc/compiler/ap/DOOP.java b/src/main/java/org/bdware/sc/compiler/ap/DOOP.java index 050907a..8da3d03 100644 --- a/src/main/java/org/bdware/sc/compiler/ap/DOOP.java +++ b/src/main/java/org/bdware/sc/compiler/ap/DOOP.java @@ -18,9 +18,10 @@ public class DOOP extends AnnotationProcessor { functionNode.setIsDoipOperation(true); functionNode.setDoipOperationInfo(DoipOperationInfo.create(anno, contractNode)); } + @Override public void processInterface(AnnotationNode anno, ContractNode contractNode, - InterfaceNode interfaceNode) throws Exception { + InterfaceNode interfaceNode) throws Exception { interfaceNode.setIsDoipOperation(true); interfaceNode.setDoipOperationInfo(DoipOperationInfo.create(anno, contractNode)); } diff --git a/src/main/java/org/bdware/sc/compiler/ap/Join.java b/src/main/java/org/bdware/sc/compiler/ap/Join.java index 571c203..4a9cd62 100644 --- a/src/main/java/org/bdware/sc/compiler/ap/Join.java +++ b/src/main/java/org/bdware/sc/compiler/ap/Join.java @@ -15,9 +15,10 @@ public class Join extends AnnotationProcessor { // 增加标记,在ContractNode中记录Join相关的函数和Join规则 functionNode.setJoinInfo(JoinInfo.create(anno, contractNode)); } + @Override public void processInterface(AnnotationNode anno, ContractNode contractNode, - InterfaceNode interfaceNode) { + InterfaceNode interfaceNode) { interfaceNode.setJoinInfo(JoinInfo.create(anno, contractNode)); } } diff --git a/src/main/java/org/bdware/sc/compiler/ap/Route.java b/src/main/java/org/bdware/sc/compiler/ap/Route.java index 63e42ad..31ce5ac 100644 --- a/src/main/java/org/bdware/sc/compiler/ap/Route.java +++ b/src/main/java/org/bdware/sc/compiler/ap/Route.java @@ -13,9 +13,10 @@ public class Route extends AnnotationProcessor { FunctionNode functionNode) { functionNode.setRouteInfo(RouteInfo.create(anno, contractNode)); } + @Override public void processInterface(AnnotationNode anno, ContractNode contractNode, - InterfaceNode interfaceNode) { + InterfaceNode interfaceNode) { interfaceNode.setRouteInfo(RouteInfo.create(anno, contractNode)); } }