Example usage for com.google.gwt.user.rebind.rpc SerializableTypeOracleBuilder setTypeFilter

List of usage examples for com.google.gwt.user.rebind.rpc SerializableTypeOracleBuilder setTypeFilter

Introduction

In this page you can find the example usage for com.google.gwt.user.rebind.rpc SerializableTypeOracleBuilder setTypeFilter.

Prototype

public void setTypeFilter(TypeFilter typeFilter) 

Source Link

Usage

From source file:com.googlecode.serialization.JsonSerializationGenerator.java

License:Apache License

@Override
public String generate(final TreeLogger logger, final GeneratorContext context, final String typeName)
        throws UnableToCompleteException {
    factoryType = null;//from  w ww  .  ja  va 2 s . com
    type = null;
    whiteListType = null;
    typeParameters = null;
    //logger.log(TreeLogger.Type.WARN, "typeName:" + typeName);
    final TypeOracle typeOracle = context.getTypeOracle();
    assert typeOracle != null;
    validateTypes(logger, typeOracle, typeName);
    final String packageName = factoryType.getPackage().getName();
    //logger.log(TreeLogger.Type.WARN, "packageName:" + packageName);

    final PropertyOracle propertyOracle = context.getPropertyOracle();

    // Debugging
    //        logger.log(TreeLogger.Type.WARN, "Logging blacklist:");
    //        try {
    //            final ConfigurationProperty prop = propertyOracle.getConfigurationProperty("rpc.blacklist");
    //            for (String value : prop.getValues()) {
    //                logger.log(TreeLogger.Type.WARN, "Blacklist:" + value);
    //            }
    //        } catch (BadPropertyValueException e) {
    //            logger.log(TreeLogger.Type.ERROR, "Could not find property rpc.blacklist");
    //            throw new UnableToCompleteException();
    //        }
    // end Debugging

    // Load the blacklist/whitelist
    final BlacklistFilter blacklistTypeFilter = new BlacklistFilter(logger, propertyOracle);

    final SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder(logger,
            propertyOracle, context);
    typesSentFromBrowserBuilder.setTypeFilter(blacklistTypeFilter);
    final SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder(logger,
            propertyOracle, context);
    typesSentToBrowserBuilder.setTypeFilter(blacklistTypeFilter);

    addRoots(logger, typeOracle, typesSentFromBrowserBuilder, typesSentToBrowserBuilder);

    final SerializableTypeOracle typesSentFromBrowser = typesSentFromBrowserBuilder.build(logger);
    final SerializableTypeOracle typesSentToBrowser = typesSentToBrowserBuilder.build(logger);

    final String typeNameParam;
    if (typeParameters != null && typeParameters.length > 0) {
        final StringBuilder sb = new StringBuilder();
        sb.append(type.getName()).append("<");
        for (JClassType typeParameter : typeParameters) {
            sb.append(typeParameter.getName()).append(",");
        }
        sb.delete(sb.length() - 1, sb.length());
        sb.append(">");
        typeNameParam = sb.toString();
    } else {
        typeNameParam = type.getName();
    }
    final String typeNameParamInline = typeNameParam.replace(",", "_").replace("<", "_").replace(">", "");

    final String jsonTypeSerializer = typeNameParamInline + "_JsonTypeSerializer";
    final TypeSerializerCreator tsc = new TypeSerializerCreator(logger, typesSentFromBrowser,
            typesSentToBrowser, context, packageName + "." + jsonTypeSerializer, jsonTypeSerializer);
    tsc.realize(logger);

    final String jsonFactoryName = factoryType.getName().replace('.', '_') + "_AutogeneratedImpl";
    final PrintWriter printWriter = context.tryCreate(logger, packageName, jsonFactoryName);

    if (printWriter != null) {
        printWriter.append("package ").append(packageName).append(";\n");
        printWriter.append("import com.google.gwt.user.client.rpc.impl.Serializer;\n");
        printWriter.append("import com.googlecode.gwt.serialization.JsonReader;\n");
        printWriter.append("import com.googlecode.gwt.serialization.JsonReaderImpl;\n");
        printWriter.append("import com.googlecode.gwt.serialization.JsonSerializationFactory;\n");
        printWriter.append("import com.googlecode.gwt.serialization.JsonWriter;\n");
        printWriter.append("import com.googlecode.gwt.serialization.JsonWriterImpl;\n");
        printWriter.append("import ").append(type.getQualifiedSourceName()).append(";\n");
        if (typeParameters != null && typeParameters.length > 0) {
            for (JClassType typeParameter : typeParameters) {
                printWriter.append("import ").append(typeParameter.getQualifiedSourceName()).append(";\n");
            }
        }
        printWriter.append("import ").append(packageName).append(".").append(jsonTypeSerializer)
                .append(";\n\n");

        printWriter.append("public class ").append(jsonFactoryName).append(" implements ")
                .append(factoryType.getQualifiedSourceName()).append(" {\n");
        printWriter.append("  private final Serializer serializer = new ").append(jsonTypeSerializer)
                .append("();\n");
        printWriter.append("  private final JsonReaderImpl<").append(typeNameParam)
                .append("> reader = new JsonReaderImpl<").append(typeNameParam).append(">(serializer);\n");
        printWriter.append("  private final JsonWriterImpl<").append(typeNameParam)
                .append("> writer = new JsonWriterImpl<").append(typeNameParam).append(">(serializer);\n\n");

        printWriter.append("  @Override\n");
        printWriter.append("  public JsonReader<").append(typeNameParam).append("> getReader() {\n");
        printWriter.append("    return reader;\n");
        printWriter.append("  }\n\n");

        printWriter.append("  @Override\n");
        printWriter.append("  public JsonWriter<").append(typeNameParam).append("> getWriter() {\n");
        printWriter.append("    return writer;\n");
        printWriter.append("  }\n");
        printWriter.append("}\n");

        context.commit(logger, printWriter);
    }
    return packageName + "." + jsonFactoryName;
}

From source file:com.googlecode.serialization.JsonWriterGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {

    //logger.log(TreeLogger.Type.WARN, "banana typeName:" + typeName);
    final TypeOracle typeOracle = context.getTypeOracle();
    assert typeOracle != null;
    validateTypes(logger, typeOracle, typeName);
    final String packageName = rwType.getPackage().getName();
    //logger.log(TreeLogger.Type.WARN, "packageName:" + packageName);

    final PropertyOracle propertyOracle = context.getPropertyOracle();

    // Load the blacklist/whitelist
    final BlacklistFilter blacklistTypeFilter = new BlacklistFilter(logger, propertyOracle);

    final SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder(logger,
            propertyOracle, context);//from  w w w .ja v a  2 s. c om
    typesSentFromBrowserBuilder.setTypeFilter(blacklistTypeFilter);
    final SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder(logger,
            propertyOracle, context);
    typesSentToBrowserBuilder.setTypeFilter(blacklistTypeFilter);

    addRoots(logger, typeOracle, typesSentFromBrowserBuilder, typesSentToBrowserBuilder);

    final SerializableTypeOracle typesSentFromBrowser = typesSentFromBrowserBuilder.build(logger);
    final SerializableTypeOracle typesSentToBrowser = typesSentToBrowserBuilder.build(logger);

    final String jsonTypeSerializer = type.getName() + "_JsonTypeSerializer";
    final TypeSerializerCreator tsc = new TypeSerializerCreator(logger, typesSentFromBrowser,
            typesSentToBrowser, context, type.getPackage().getName() + "." + jsonTypeSerializer,
            jsonTypeSerializer);
    tsc.realize(logger);

    final String jsonWriterName = rwType.getName().replace('.', '_') + "AutogeneratedImpl";
    final PrintWriter jwWriter = context.tryCreate(logger, packageName, jsonWriterName);

    if (jwWriter != null) {
        jwWriter.append("package ").append(packageName).append(";\n");
        jwWriter.append("import com.google.gwt.user.client.rpc.SerializationException;\n");
        jwWriter.append("import com.googlecode.gwt.serialization.JsonSerializationStreamWriter;\n");
        jwWriter.append("import com.googlecode.gwt.serialization.JsonWriter;\n");
        jwWriter.append("import ").append(type.getQualifiedSourceName()).append(";\n");
        jwWriter.append("import ").append(type.getQualifiedSourceName()).append("_JsonTypeSerializer;\n\n");

        jwWriter.append("public class ").append(jsonWriterName).append(" implements ")
                .append(rwType.getQualifiedSourceName()).append(" {\n");
        jwWriter.append("  @Override\n");
        jwWriter.append("  public String write(final ").append(type.getName()).append(" model) {\n");
        jwWriter.append(
                "    final JsonSerializationStreamWriter writer = new JsonSerializationStreamWriter(new ")
                .append(type.getName()).append("_JsonTypeSerializer());\n");
        jwWriter.append("    try {\n");
        jwWriter.append("      writer.writeObject(model);\n");
        jwWriter.append("    } catch (SerializationException e) {\n");
        jwWriter.append("      throw new RuntimeException(e);\n");
        jwWriter.append("    }\n");
        jwWriter.append("    return writer.toString();\n");
        jwWriter.append("  }\n");
        jwWriter.append("}\n");

        context.commit(logger, jwWriter);
    }
    return packageName + "." + jsonWriterName;
}