doric plugin

This commit is contained in:
pengfei.zhou 2019-07-19 11:31:51 +08:00
parent 51c8924c2a
commit ac8d111f7b
7 changed files with 41 additions and 37 deletions

View File

@ -20,7 +20,7 @@ public class DoricContext {
public static DoricContext createContext(String script, String alias) {
String contextId = String.valueOf(sCounter.incrementAndGet());
DoricDriver.getInstance().createPage(contextId, script, alias);
DoricDriver.getInstance().createContext(contextId, script, alias);
return new DoricContext(contextId);
}
@ -29,6 +29,6 @@ public class DoricContext {
}
public void teardown() {
DoricDriver.getInstance().destoryContext(mContextId);
DoricDriver.getInstance().destroyContext(mContextId);
}
}

View File

@ -28,11 +28,11 @@ public class DoricDriver {
return Inner.sInstance;
}
public void createPage(final String contextId, final String script, final String source) {
public void createContext(final String contextId, final String script, final String source) {
doricJSEngine.prepareContext(contextId, script, source);
}
public void destoryContext(String contextId) {
public void destroyContext(String contextId) {
doricJSEngine.destroyContext(contextId);
}

View File

@ -7,12 +7,14 @@ import com.github.pengfeizhou.doric.DoricContext;
* @Author: pengfei.zhou
* @CreateDate: 2019-07-18
*/
public abstract class BaseModule {
public abstract class DoricNativePlugin {
private final DoricContext doricContext;
protected BaseModule(DoricContext doricContext) {
protected DoricNativePlugin(DoricContext doricContext) {
this.doricContext = doricContext;
}
public abstract String moduleName();
public DoricContext getDoricContext() {
return doricContext;
}
}

View File

@ -1,6 +1,7 @@
package com.github.pengfeizhou.doric.bridge;
import com.github.pengfeizhou.doric.DoricContext;
import com.github.pengfeizhou.doric.extension.DoricComponent;
import com.github.pengfeizhou.doric.extension.DoricMethod;
/**
@ -8,17 +9,13 @@ import com.github.pengfeizhou.doric.extension.DoricMethod;
* @Author: pengfei.zhou
* @CreateDate: 2019-07-18
*/
public class ModalModule extends BaseModule {
@DoricComponent(name = "modal")
public class ModalPlugin extends DoricNativePlugin {
protected ModalModule(DoricContext doricContext) {
protected ModalPlugin(DoricContext doricContext) {
super(doricContext);
}
@Override
public String moduleName() {
return "modal";
}
@DoricMethod(name = "toast")
public void toast() {

View File

@ -17,8 +17,6 @@ import com.github.pengfeizhou.jscore.JSDecoder;
import com.github.pengfeizhou.jscore.JavaFunction;
import com.github.pengfeizhou.jscore.JavaValue;
import org.json.JSONObject;
import java.util.ArrayList;
/**
@ -214,25 +212,7 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
public void run() {
ArrayList<JavaValue> values = new ArrayList<>();
for (Object arg : args) {
if (arg == null) {
values.add(new JavaValue());
} else if (arg instanceof JSONObject) {
values.add(new JavaValue((JSONObject) arg));
} else if (arg instanceof String) {
values.add(new JavaValue((String) arg));
} else if (arg instanceof Integer) {
values.add(new JavaValue((Integer) arg));
} else if (arg instanceof Long) {
values.add(new JavaValue((Long) arg));
} else if (arg instanceof Double) {
values.add(new JavaValue((Double) arg));
} else if (arg instanceof Boolean) {
values.add(new JavaValue((Boolean) arg));
} else if (arg instanceof JavaValue) {
values.add((JavaValue) arg);
} else {
values.add(new JavaValue(String.valueOf(arg)));
}
values.add(DoricUtils.toJavaValue(arg));
}
settableFuture.set(mDoricJSE.invokeMethod(DoricConstant.GLOBAL_DORIC, method,
values.toArray(new JavaValue[values.size()]), true));

View File

@ -14,6 +14,6 @@ import java.lang.annotation.Target;
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DoricModule {
public @interface DoricComponent {
String name() default "";
}

View File

@ -3,6 +3,9 @@ package com.github.pengfeizhou.doric.utils;
import android.content.res.AssetManager;
import com.github.pengfeizhou.doric.Doric;
import com.github.pengfeizhou.jscore.JavaValue;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
@ -35,4 +38,26 @@ public class DoricUtils {
}
return "";
}
public static JavaValue toJavaValue(Object arg) {
if (arg == null) {
return new JavaValue();
} else if (arg instanceof JSONObject) {
return new JavaValue((JSONObject) arg);
} else if (arg instanceof String) {
return new JavaValue((String) arg);
} else if (arg instanceof Integer) {
return new JavaValue((Integer) arg);
} else if (arg instanceof Long) {
return new JavaValue((Long) arg);
} else if (arg instanceof Double) {
return new JavaValue((Double) arg);
} else if (arg instanceof Boolean) {
return new JavaValue((Boolean) arg);
} else if (arg instanceof JavaValue) {
return (JavaValue) arg;
} else {
return new JavaValue(String.valueOf(arg));
}
}
}