List of usage examples for com.google.gwt.core.ext GeneratorContext commitResource
GeneratedResource commitResource(TreeLogger logger, OutputStream os) throws UnableToCompleteException;
From source file:com.chrome.gwt.linker.ComponentGenerator.java
License:Apache License
private static void emitComponentPage(TreeLogger logger, GeneratorContext context, String name, String path) throws UnableToCompleteException { final OutputStream stream = context.tryCreateResource(logger, path); if (stream != null) { final PrintWriter writer = new PrintWriter(new OutputStreamWriter(stream)); writer.println("<html>"); writer.println("<head></head>"); writer.println("<body>"); writer.println(" <script>"); writer.println(" window.onload = function() {"); writer.println(" var views = chrome.self.getViews();"); writer.println(" views[0][\"" + name + "\"](window);"); writer.println(" };"); writer.println(" </script>"); writer.println("</body>"); writer.println("</html>"); writer.close();// w ww . jav a 2 s . c o m context.commitResource(logger, stream); } }
From source file:com.chrome.gwt.linker.ExtensionGenerator.java
License:Apache License
private static IconInfo[] createIconResources(TreeLogger logger, GeneratorContext context, JClassType userType, String[] icons) throws UnableToCompleteException { final IconInfo[] result = new IconInfo[icons.length]; for (int i = 0, n = icons.length; i < n; ++i) { final String icon = icons[i]; // Open a stream for the icon resource. InputStream iconStream = ExtensionGenerator.class.getClassLoader() .getResourceAsStream(getResourcePath(userType, icon)); if (iconStream == null) { logger.log(TreeLogger.ERROR, "Resource not found on classpath: " + icon); throw new UnableToCompleteException(); }//ww w .j a v a2 s .c om try { // Read the icon's byte data and decode it to determine the size. final byte[] iconData = getBytesFromStream(iconStream); assert iconData != null; final String strongname = Util.computeStrongName(iconData) + getIconExtension(icon); result[i] = new IconInfo(strongname, getImageSize(iconData)); // Write the icon's bytes into GWT resource. try { final OutputStream resStream = context.tryCreateResource(logger, strongname); if (resStream != null) { resStream.write(iconData); context.commitResource(logger, resStream); } } catch (IOException e) { logger.log(TreeLogger.ERROR, "Unable to write resource: " + icon, e); throw new UnableToCompleteException(); } } catch (IOException e) { logger.log(TreeLogger.ERROR, "Unable to read image: " + icon, e); throw new UnableToCompleteException(); } } return result; }
From source file:com.eleven.rebind.SkinBundleBuilder.java
License:Apache License
public String writeBundledImage(final TreeLogger logger, final GeneratorContext context) throws UnableToCompleteException { // Create the bundled image from all of the constituent images. BufferedImage bundledImage = drawBundledImage(); // Write the bundled image into a byte array, so that we can compute // its strong name. byte[] imageBytes; try {/* w w w . j a v a2 s .c o m*/ ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); ImageIO.write(bundledImage, BUNDLE_FILE_TYPE, byteOutputStream); imageBytes = byteOutputStream.toByteArray(); } catch (IOException e) { logger.log(TreeLogger.ERROR, "Unable to generate file name for image bundle file", null); throw new UnableToCompleteException(); } // Compute the file name. The strong name is generated from the bytes of // the bundled image. The '.cache' part indicates that it can be // permanently cached. String bundleFileName = Util.computeStrongName(imageBytes) + ".cache." + BUNDLE_FILE_TYPE; // Try and write the file to disk. If a file with bundleFileName already // exists, then the file will not be written. OutputStream outStream = context.tryCreateResource(logger, bundleFileName); if (outStream != null) { try { // Write the image bytes from the byte array to the pending // stream. outStream.write(imageBytes); // Commit the stream. context.commitResource(logger, outStream); } catch (IOException e) { logger.log(TreeLogger.ERROR, "Failed while writing", e); throw new UnableToCompleteException(); } } else logger.log(TreeLogger.TRACE, "Generated image bundle file already exists; no need to rewrite it.", null); return bundleFileName; }
From source file:com.msco.mil.server.com.sencha.gxt.explorer.rebind.SampleGenerator.java
License:sencha.com license
private void writeFileToHtml(TreeLogger l, GeneratorContext ctx, String path) throws UnableToCompleteException { Resource file = ctx.getResourcesOracle().getResourceMap().get(path); if (file == null) { l.log(Type.ERROR, "File cannot be found."); throw new UnableToCompleteException(); }/* www.j av a 2s. c om*/ OutputStream stream = ctx.tryCreateResource(l, "code/" + path.replace('/', '.') + ".html"); if (stream == null) { // file already exists for this compile return; } try { InputStream input = file.openContents(); byte[] bytes = new byte[input.available()]; input.read(bytes); input.close(); // Write out the HTML file // TODO change this header stream.write(javaHeader.getBytes()); stream.write(bytes); stream.write(footer.getBytes()); stream.close(); } catch (Exception e) { l.log(Type.ERROR, "An error occured writing out a file into html", e); throw new UnableToCompleteException(); } ctx.commitResource(l, stream); }
From source file:com.msco.mil.server.com.sencha.gxt.explorer.rebind.SampleGenerator.java
License:sencha.com license
/** * Writes out the given class/interface to an HTML file, using the current * header/footer strings// w w w.j av a 2 s. c o m * * @param l * @param ctx * @param type * @throws UnableToCompleteException */ private void writeTypeToHtml(TreeLogger l, GeneratorContext ctx, JClassType type) throws UnableToCompleteException { assert type.isClassOrInterface() != null : "Can only generate source for classes or interfaces"; OutputStream stream = ctx.tryCreateResource(l, "code/" + type.getQualifiedSourceName() + ".html"); if (stream == null) { // file already exists for this compile return; } try { String name = type.getQualifiedSourceName().replace('.', '/') + ".java"; l.log(Type.DEBUG, "Reading from " + name); InputStream input = sourceOracle.getResourceMap().get(name).openContents(); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); // Write out the HTML file stream.write(javaHeader.getBytes()); String line; boolean skip = false; while (null != (line = reader.readLine())) { if (line.startsWith("@Detail") || line.startsWith("@Example.Detail")) { skip = true; } else if (skip) { if (line.startsWith("public")) { skip = false; } } if (!skip) { stream.write(line.getBytes()); stream.write('\n'); } } stream.write(footer.getBytes()); stream.close(); } catch (Exception e) { l.log(Type.ERROR, "Error occured writing out a java file into html", e); throw new UnableToCompleteException(); } ctx.commitResource(l, stream); }
From source file:de.csenk.gwt.ws.rebind.filter.serialization.GWTSerializerGenerator.java
License:Open Source License
/** * @param serializerLogger//from w w w.j a v a 2 s . c om * @param context * @param serializerInterface * @return */ private String createSerializer(TreeLogger serializerLogger, GeneratorContext context, JClassType serializerInterface) throws UnableToCompleteException { TypeOracle typeOracle = context.getTypeOracle(); SourceWriter sourceWriter = getSourceWriter(serializerLogger, context, serializerInterface); if (sourceWriter == null) return getImplementationQualifiedName(serializerInterface); // TODO gwtws: validate serializerInterface final PropertyOracle propertyOracle = context.getPropertyOracle(); // Load the blacklist/whitelist TypeFilter blacklistTypeFilter = new BlacklistTypeFilter(serializerLogger, propertyOracle); // Determine the set of serializable types SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder( serializerLogger, propertyOracle, typeOracle); typesSentFromBrowserBuilder.setTypeFilter(blacklistTypeFilter); SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder( serializerLogger, propertyOracle, typeOracle); typesSentToBrowserBuilder.setTypeFilter(blacklistTypeFilter); addRoots(serializerLogger, typeOracle, typesSentFromBrowserBuilder, typesSentToBrowserBuilder, serializerInterface); // TODO gwtws: Type name ellision? // Create a resource file to receive all of the serialization // information // computed by STOB and mark it as private so it does not end up in the // output. OutputStream pathInfo = context.tryCreateResource(serializerLogger, serializerInterface.getQualifiedSourceName() + ".rpc.log"); PrintWriter writer = null; SerializableTypeOracle typesSentFromBrowser; SerializableTypeOracle typesSentToBrowser; try { writer = new PrintWriter(pathInfo); typesSentFromBrowserBuilder.setLogOutputStream(pathInfo); typesSentToBrowserBuilder.setLogOutputStream(pathInfo); writer.write("====================================\n"); writer.write("Types potentially sent from browser:\n"); writer.write("====================================\n\n"); writer.flush(); typesSentFromBrowser = typesSentFromBrowserBuilder.build(serializerLogger); writer.write("===================================\n"); writer.write("Types potentially sent from server:\n"); writer.write("===================================\n\n"); writer.flush(); typesSentToBrowser = typesSentToBrowserBuilder.build(serializerLogger); if (pathInfo != null) { context.commitResource(serializerLogger, pathInfo).setPrivate(true); } } finally { if (writer != null) { writer.close(); } } Map<JType, String> typeStrings = generateTypeHandlers(serializerLogger, context, typesSentFromBrowser, typesSentToBrowser, serializerInterface); String serializationPolicyStrongName = writeSerializationPolicyFile(serializerLogger, context, typesSentFromBrowser, typesSentToBrowser, typeStrings, serializerInterface); String serializerInterfaceName = TypeOracleMediator.computeBinaryClassName(serializerInterface); generateFields(sourceWriter, typesSentFromBrowser, serializationPolicyStrongName, serializerInterfaceName, serializerInterface); generateContructor(sourceWriter, serializerInterface, typeStrings); sourceWriter.commit(serializerLogger); return getImplementationQualifiedName(serializerInterface); }
From source file:de.csenk.gwt.ws.rebind.filter.serialization.GWTSerializerGenerator.java
License:Open Source License
/** * @param serializerLogger// w ww .j a v a 2 s . c o m * @param context * @param typesSentFromBrowser * @param typesSentToBrowser * @param typeStrings * @return */ private String writeSerializationPolicyFile(TreeLogger logger, GeneratorContext ctx, SerializableTypeOracle serializationSto, SerializableTypeOracle deserializationSto, Map<JType, String> typeStrings, JClassType serializerInterface) throws UnableToCompleteException { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(baos, SerializationPolicyLoader.SERIALIZATION_POLICY_FILE_ENCODING); TypeOracle oracle = ctx.getTypeOracle(); PrintWriter pw = new PrintWriter(osw); JType[] serializableTypes = unionOfTypeArrays(serializationSto.getSerializableTypes(), deserializationSto.getSerializableTypes(), new JType[] { serializerInterface }); for (int i = 0; i < serializableTypes.length; ++i) { JType type = serializableTypes[i]; String binaryTypeName = TypeOracleMediator.computeBinaryClassName(type); pw.print(binaryTypeName); pw.print(", " + Boolean.toString(deserializationSto.isSerializable(type))); pw.print(", " + Boolean.toString(deserializationSto.maybeInstantiated(type))); pw.print(", " + Boolean.toString(serializationSto.isSerializable(type))); pw.print(", " + Boolean.toString(serializationSto.maybeInstantiated(type))); pw.print(", " + typeStrings.get(type)); /* * Include the serialization signature to bump the RPC file name * if obfuscated identifiers are used. */ pw.print(", " + SerializationUtils.getSerializationSignature(oracle, type)); pw.print('\n'); /* * Emit client-side field information for classes that may be * enhanced on the server. Each line consists of a * comma-separated list containing the keyword '@ClientFields', * the class name, and a list of all potentially serializable * client-visible fields. */ if ((type instanceof JClassType) && ((JClassType) type).isEnhanced()) { JField[] fields = ((JClassType) type).getFields(); JField[] rpcFields = new JField[fields.length]; int numRpcFields = 0; for (JField f : fields) { if (f.isTransient() || f.isStatic() || f.isFinal()) { continue; } rpcFields[numRpcFields++] = f; } pw.print(SerializationPolicyLoader.CLIENT_FIELDS_KEYWORD); pw.print(','); pw.print(binaryTypeName); for (int idx = 0; idx < numRpcFields; idx++) { pw.print(','); pw.print(rpcFields[idx].getName()); } pw.print('\n'); } } // Closes the wrapped streams. pw.close(); byte[] serializationPolicyFileContents = baos.toByteArray(); String serializationPolicyName = Util.computeStrongName(serializationPolicyFileContents); String serializationPolicyFileName = SerializationPolicyLoader .getSerializationPolicyFileName(serializationPolicyName); OutputStream os = ctx.tryCreateResource(logger, serializationPolicyFileName); if (os != null) { os.write(serializationPolicyFileContents); GeneratedResource resource = ctx.commitResource(logger, os); /* * Record which proxy class created the resource. A manifest * will be emitted by the RpcPolicyManifestLinker. */ ctx.commitArtifact(logger, new RpcPolicyFileArtifact(serializerInterface.getQualifiedSourceName(), resource)); } else { logger.log(TreeLogger.TRACE, "SerializationPolicy file for RemoteService '" + serializerInterface.getQualifiedSourceName() + "' already exists; no need to rewrite it.", null); } return serializationPolicyName; } catch (UnsupportedEncodingException e) { logger.log(TreeLogger.ERROR, SerializationPolicyLoader.SERIALIZATION_POLICY_FILE_ENCODING + " is not supported", e); throw new UnableToCompleteException(); } catch (IOException e) { logger.log(TreeLogger.ERROR, null, e); throw new UnableToCompleteException(); } }
From source file:net.zschech.gwt.comet.rebind.CometSerializerGenerator.java
License:Apache License
@Override public RebindResult generateIncrementally(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { TypeOracle typeOracle = context.getTypeOracle(); // Create the CometSerializer impl String packageName = "comet"; String className = typeName.replace('.', '_') + "Impl"; PrintWriter printWriter = context.tryCreate(logger, packageName, className); if (printWriter != null) { try {// w w w. j a va 2s .co m JClassType type = typeOracle.getType(typeName); SerialTypes annotation = type.getAnnotation(SerialTypes.class); if (annotation == null) { logger.log(TreeLogger.ERROR, "No SerialTypes annotation on CometSerializer type: " + typeName); throw new UnableToCompleteException(); } SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder(logger, context.getPropertyOracle(), context); SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder( logger, context.getPropertyOracle(), context); for (Class<? extends Serializable> serializable : annotation.value()) { int rank = 0; if (serializable.isArray()) { while (serializable.isArray()) { serializable = (Class<? extends Serializable>) serializable.getComponentType(); rank++; } } JType resolvedType = typeOracle.getType(serializable.getCanonicalName()); while (rank > 0) { resolvedType = typeOracle.getArrayType(resolvedType); rank--; } typesSentToBrowserBuilder.addRootType(logger, resolvedType); } OutputStream pathInfo = context.tryCreateResource(logger, typeName + ".rpc.log"); PrintWriter writer = new PrintWriter(new OutputStreamWriter(pathInfo)); writer.write("====================================\n"); writer.write("Types potentially sent from browser:\n"); writer.write("====================================\n\n"); writer.flush(); typesSentToBrowserBuilder.setLogOutputWriter(writer); SerializableTypeOracle typesSentFromBrowser = typesSentFromBrowserBuilder.build(logger); writer.write("===================================\n"); writer.write("Types potentially sent from server:\n"); writer.write("===================================\n\n"); writer.flush(); typesSentFromBrowserBuilder.setLogOutputWriter(writer); SerializableTypeOracle typesSentToBrowser = typesSentToBrowserBuilder.build(logger); writer.close(); if (pathInfo != null) { context.commitResource(logger, pathInfo).setPrivate(true); } // Create the serializer String modifiedTypeName = typeName.replace('.', '_') + "Serializer"; TypeSerializerCreator tsc = new TypeSerializerCreator(logger, typesSentFromBrowser, typesSentToBrowser, context, "comet." + modifiedTypeName, modifiedTypeName); String realize = tsc.realize(logger); // Create the CometSerializer impl ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, className); composerFactory.addImport(Serializer.class.getName()); composerFactory.addImport(SerialMode.class.getName()); composerFactory.setSuperclass(typeName); // TODO is the SERIALIZER required for DE RPC? SourceWriter sourceWriter = composerFactory.createSourceWriter(context, printWriter); sourceWriter.print("private Serializer SERIALIZER = new " + realize + "();"); sourceWriter.print("protected Serializer getSerializer() {return SERIALIZER;}"); sourceWriter .print("public SerialMode getMode() {return SerialMode." + annotation.mode().name() + ";}"); sourceWriter.commit(logger); if (annotation.mode() == SerialMode.DE_RPC) { RpcDataArtifact data = new RpcDataArtifact(type.getQualifiedSourceName()); for (JType t : typesSentToBrowser.getSerializableTypes()) { if (!(t instanceof JClassType)) { continue; } JField[] serializableFields = SerializationUtils .getSerializableFields(context.getTypeOracle(), (JClassType) t); List<String> names = Lists.create(); for (int i = 0, j = serializableFields.length; i < j; i++) { names = Lists.add(names, serializableFields[i].getName()); } data.setFields(SerializationUtils.getRpcTypeName(t), names); } context.commitArtifact(logger, data); } } catch (NotFoundException e) { logger.log(TreeLogger.ERROR, "", e); throw new UnableToCompleteException(); } } return new RebindResult(RebindMode.USE_PARTIAL_CACHED, packageName + '.' + className); }
From source file:org.atmosphere.extensions.gwtwrapper.rebind.SerializerGenerator.java
License:Apache License
@Override public RebindResult generateIncrementally(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { TypeOracle typeOracle = context.getTypeOracle(); // Create the CometSerializer impl String packageName = "comet"; String className = typeName.replace('.', '_') + "Impl"; PrintWriter printWriter = context.tryCreate(logger, packageName, className); if (printWriter != null) { try {// w ww . j a v a2 s. c o m JClassType type = typeOracle.getType(typeName); GwtSerialTypes annotation = type.getAnnotation(GwtSerialTypes.class); if (annotation == null) { logger.log(TreeLogger.ERROR, "No SerialTypes annotation on CometSerializer type: " + typeName); throw new UnableToCompleteException(); } SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder(logger, context.getPropertyOracle(), context); SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder( logger, context.getPropertyOracle(), context); List<Class<?>> serializableTypes = new ArrayList(); Collections.addAll(serializableTypes, annotation.value()); for (Class<?> serializable : serializableTypes) { int rank = 0; if (serializable.isArray()) { while (serializable.isArray()) { serializable = (Class<?>) serializable.getComponentType(); rank++; } } JType resolvedType = typeOracle.getType(serializable.getCanonicalName()); while (rank > 0) { resolvedType = typeOracle.getArrayType(resolvedType); rank--; } typesSentToBrowserBuilder.addRootType(logger, resolvedType); typesSentFromBrowserBuilder.addRootType(logger, resolvedType); } // Create a resource file to receive all of the serialization information // computed by STOB and mark it as private so it does not end up in the // output. OutputStream pathInfo = context.tryCreateResource(logger, typeName + ".rpc.log"); PrintWriter writer = new PrintWriter(new OutputStreamWriter(pathInfo)); writer.write("====================================\n"); writer.write("Types potentially sent from server:\n"); writer.write("====================================\n\n"); writer.flush(); typesSentToBrowserBuilder.setLogOutputWriter(writer); SerializableTypeOracle typesSentToBrowser = typesSentToBrowserBuilder.build(logger); writer.write("===================================\n"); writer.write("Types potentially sent from browser:\n"); writer.write("===================================\n\n"); writer.flush(); typesSentFromBrowserBuilder.setLogOutputWriter(writer); SerializableTypeOracle typesSentFromBrowser = typesSentFromBrowserBuilder.build(logger); writer.close(); if (pathInfo != null) { context.commitResource(logger, pathInfo).setPrivate(true); } // Create the serializer final String modifiedTypeName = typeName.replace('.', '_'); TypeSerializerCreator tsc = new TypeSerializerCreator(logger, typesSentFromBrowser, typesSentToBrowser, context, "comet." + modifiedTypeName, modifiedTypeName); String realize = tsc.realize(logger); // Create the CometSerializer impl ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, className); composerFactory.addImport(Serializer.class.getName()); composerFactory.addImport(SerializationException.class.getName()); composerFactory.addImport(Serializable.class.getName()); composerFactory.setSuperclass(typeName); // TODO is the SERIALIZER required for DE RPC? SourceWriter sourceWriter = composerFactory.createSourceWriter(context, printWriter); sourceWriter.print("private Serializer SERIALIZER = new " + realize + "();"); sourceWriter.print("protected Serializer getRPCSerializer() {return SERIALIZER;}"); sourceWriter.commit(logger); } catch (NotFoundException e) { logger.log(TreeLogger.ERROR, "", e); throw new UnableToCompleteException(); } } return new RebindResult(RebindMode.USE_ALL_NEW_WITH_NO_CACHING, packageName + '.' + className); }
From source file:org.atmosphere.gwt20.rebind.SerializerGenerator.java
License:Apache License
@Override public RebindResult generateIncrementally(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { TypeOracle typeOracle = context.getTypeOracle(); // Create the CometSerializer impl String packageName = "comet"; String className = typeName.replace('.', '_') + "Impl"; PrintWriter printWriter = context.tryCreate(logger, packageName, className); if (printWriter != null) { try {// w w w . j ava2s. c o m JClassType type = typeOracle.getType(typeName); GwtRpcSerialTypes annotation = type.getAnnotation(GwtRpcSerialTypes.class); if (annotation == null) { logger.log(TreeLogger.ERROR, "No SerialTypes annotation on CometSerializer type: " + typeName); throw new UnableToCompleteException(); } SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder(logger, context.getPropertyOracle(), context); SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder( logger, context.getPropertyOracle(), context); List<Class<?>> serializableTypes = new ArrayList(); Collections.addAll(serializableTypes, annotation.value()); for (Class<?> serializable : serializableTypes) { int rank = 0; if (serializable.isArray()) { while (serializable.isArray()) { serializable = (Class<?>) serializable.getComponentType(); rank++; } } JType resolvedType = typeOracle.getType(serializable.getCanonicalName()); while (rank > 0) { resolvedType = typeOracle.getArrayType(resolvedType); rank--; } typesSentToBrowserBuilder.addRootType(logger, resolvedType); typesSentFromBrowserBuilder.addRootType(logger, resolvedType); } // Create a resource file to receive all of the serialization information // computed by STOB and mark it as private so it does not end up in the // output. OutputStream pathInfo = context.tryCreateResource(logger, typeName + ".rpc.log"); PrintWriter writer = new PrintWriter(new OutputStreamWriter(pathInfo)); writer.write("====================================\n"); writer.write("Types potentially sent from server:\n"); writer.write("====================================\n\n"); writer.flush(); typesSentToBrowserBuilder.setLogOutputWriter(writer); SerializableTypeOracle typesSentToBrowser = typesSentToBrowserBuilder.build(logger); writer.write("===================================\n"); writer.write("Types potentially sent from browser:\n"); writer.write("===================================\n\n"); writer.flush(); typesSentFromBrowserBuilder.setLogOutputWriter(writer); SerializableTypeOracle typesSentFromBrowser = typesSentFromBrowserBuilder.build(logger); writer.close(); if (pathInfo != null) { context.commitResource(logger, pathInfo).setPrivate(true); } // Create the serializer final String modifiedTypeName = typeName.replace('.', '_'); TypeSerializerCreator tsc = new TypeSerializerCreator(logger, typesSentFromBrowser, typesSentToBrowser, context, "comet." + modifiedTypeName, modifiedTypeName); String realize = tsc.realize(logger); // Create the CometSerializer impl ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, className); composerFactory.addImport(Serializer.class.getName()); composerFactory.addImport(SerializationException.class.getName()); composerFactory.addImport(Serializable.class.getName()); composerFactory.setSuperclass(typeName); SourceWriter sourceWriter = composerFactory.createSourceWriter(context, printWriter); sourceWriter.print("private Serializer SERIALIZER = new " + realize + "();"); sourceWriter.print("protected Serializer getRPCSerializer() {return SERIALIZER;}"); sourceWriter.commit(logger); } catch (NotFoundException e) { logger.log(TreeLogger.ERROR, "", e); throw new UnableToCompleteException(); } } return new RebindResult(RebindMode.USE_ALL_NEW_WITH_NO_CACHING, packageName + '.' + className); }