當前位置: 首頁>>代碼示例>>Java>>正文


Java JsType類代碼示例

本文整理匯總了Java中jsinterop.annotations.JsType的典型用法代碼示例。如果您正苦於以下問題:Java JsType類的具體用法?Java JsType怎麽用?Java JsType使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


JsType類屬於jsinterop.annotations包,在下文中一共展示了JsType類的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: isJsObject

import jsinterop.annotations.JsType; //導入依賴的package包/類
@GwtIncompatible
private static final boolean isJsObject(Class<?> type) {
    JsType jsType = type.getAnnotation(JsType.class);
    if (jsType == null) {
        return false;
    }
    if (!jsType.isNative()) {
        return false;
    }
    if (!JsPackage.GLOBAL.equals(jsType.namespace())) {
        return false;
    }
    if (!"Object".equals(jsType.name())) {
        return false;
    }
    return true;
}
 
開發者ID:codegen-io,項目名稱:jso-builder,代碼行數:18,代碼來源:PrimitivesJSOJSOBuilder.java

示例2: generate

import jsinterop.annotations.JsType; //導入依賴的package包/類
/**
 * Generate and save the Java file for the typeElement passed to the constructor
 * @param directiveTypeElement The {@link VueDirective} class to
 * generate {@link VueDirectiveOptions} from
 */
public void generate(TypeElement directiveTypeElement)
{
    ClassName optionsClassName = GenerationNameUtil.directiveOptionsName(directiveTypeElement);

    Builder componentClassBuilder = TypeSpec
        .classBuilder(optionsClassName)
        .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
        .superclass(VueDirectiveOptions.class)
        .addAnnotation(JsType.class)
        .addJavadoc("VueComponent Directive Options for directive {@link $S}",
            directiveTypeElement.getQualifiedName().toString());

    // Initialize constructor
    MethodSpec.Builder constructorBuilder =
        MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC);

    // Add the Java Component Instance initialization
    constructorBuilder.addStatement("this.$L = new $T()",
        "vuegwt$javaDirectiveInstance",
        TypeName.get(directiveTypeElement.asType()));

    // Call the method to copy hooks functions
    constructorBuilder.addStatement("this.copyHooks()");

    // Finish building the constructor
    componentClassBuilder.addMethod(constructorBuilder.build());

    // Build the DirectiveOptions class
    GenerationUtil.toJavaFile(filer,
        componentClassBuilder,
        optionsClassName,
        directiveTypeElement);
}
 
開發者ID:Axellience,項目名稱:vue-gwt,代碼行數:39,代碼來源:VueDirectiveOptionsGenerator.java

示例3: getComponentJsTypeBuilder

import jsinterop.annotations.JsType; //導入依賴的package包/類
/**
 * Create and return the builder for the JsType of our {@link VueComponent}.
 * @param component The {@link VueComponent} we are generating for
 * @param jsTypeClassName The name of the generated JsType class
 * @return A Builder to build the class
 */
private Builder getComponentJsTypeBuilder(TypeElement component, ClassName jsTypeClassName)
{
    Builder componentJsTypeBuilder = TypeSpec
        .classBuilder(jsTypeClassName)
        .addModifiers(Modifier.PUBLIC)
        .superclass(TypeName.get(component.asType()));

    // Add @JsType annotation. This ensure this class is included.
    // As we use a class reference to use our Components, this class would be removed by GWT
    // tree shaking.
    componentJsTypeBuilder.addAnnotation(AnnotationSpec
        .builder(JsType.class)
        .addMember("namespace", "\"VueGWT.javaComponentConstructors\"")
        .addMember("name", "$S", component.getQualifiedName().toString().replaceAll("\\.", "_"))
        .build());

    // Add a block that registers the VueFactory for the VueComponent
    componentJsTypeBuilder.addStaticBlock(CodeBlock
        .builder()
        .addStatement("$T.onReady(() -> $T.register($S, () -> $T.get()))",
            VueGWT.class,
            VueGWT.class,
            component.getQualifiedName(),
            componentFactoryName(component))
        .build());

    return componentJsTypeBuilder;
}
 
開發者ID:Axellience,項目名稱:vue-gwt,代碼行數:35,代碼來源:ComponentJsTypeGenerator.java

示例4: createInitMethod

import jsinterop.annotations.JsType; //導入依賴的package包/類
@Override
protected List<CodeBlock> createInitMethod(TypeElement component, Builder vueFactoryBuilder)
{
    JsType jsType = component.getAnnotation(JsType.class);
    if (jsType == null || !jsType.isNative())
    {
        messager.printMessage(Kind.ERROR,
            component.asType().toString()
                + " @JsComponent must have a @JsType annotation with isNative to true");
        return null;
    }
    if (!JsPackage.GLOBAL.equals(jsType.namespace()))
    {
        messager.printMessage(Kind.ERROR,
            component.asType().toString()
                + " @JsType annotation on @JsComponent must have namespace set to JsPackage.GLOBAL");
        return null;
    }

    JsComponent jsComponent = component.getAnnotation(JsComponent.class);

    MethodSpec.Builder initBuilder =
        MethodSpec.methodBuilder("init").addModifiers(Modifier.PRIVATE);

    if ("Function".equals(jsType.name()))
    {
        initForComponentConstructor(jsComponent, initBuilder);
    }
    else if ("Object".equals(jsType.name()))
    {
        initForComponentOptions(jsComponent, initBuilder);
    }
    else
    {
        messager.printMessage(Kind.ERROR,
            component.asType().toString()
                + " @JsType annotation on @JsComponent must have name set to either Function or Object.");
    }

    vueFactoryBuilder.addMethod(initBuilder.build());
    return new LinkedList<>();
}
 
開發者ID:Axellience,項目名稱:vue-gwt,代碼行數:43,代碼來源:VueJsComponentFactoryGenerator.java

示例5: isFieldVisibleInJS

import jsinterop.annotations.JsType; //導入依賴的package包/類
/**
 * Return weather a given field is visible in JS (JsInterop).
 * It will be the case if it's public and it's class has the {@link JsType} annotation, or
 * if it has the {@link JsProperty} annotation.
 * @param field The field to check
 * @return true if it is visible (JsInterop), false otherwise
 */
public static boolean isFieldVisibleInJS(VariableElement field)
{
    return (hasAnnotation(field.getEnclosingElement(), JsType.class) && field
        .getModifiers()
        .contains(Modifier.PUBLIC)) || hasAnnotation(field, JsProperty.class);
}
 
開發者ID:Axellience,項目名稱:vue-gwt,代碼行數:14,代碼來源:ComponentGenerationUtil.java

示例6: isMethodVisibleInJS

import jsinterop.annotations.JsType; //導入依賴的package包/類
/**
 * Return weather a given method is visible in JS (JsInterop).
 * It will be the case if it's public and it's class/interface has the {@link JsType}
 * annotation, or
 * if it has the {@link JsMethod} annotation.
 * @param method The method to check
 * @return true if it is visible (JsInterop), false otherwise
 */
public static boolean isMethodVisibleInJS(ExecutableElement method)
{
    return (hasAnnotation(method.getEnclosingElement(), JsType.class) && method
        .getModifiers()
        .contains(Modifier.PUBLIC)) || hasAnnotation(method, JsMethod.class);
}
 
開發者ID:Axellience,項目名稱:vue-gwt,代碼行數:15,代碼來源:ComponentGenerationUtil.java


注:本文中的jsinterop.annotations.JsType類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。