All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.lteconsulting.hexa.rebind.JSONBrowserGenerator Maven / Gradle / Ivy

The newest version!
package fr.lteconsulting.hexa.rebind;

import java.io.PrintWriter;

import com.google.gwt.core.ext.Generator;
import com.google.gwt.core.ext.GeneratorContext;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.TreeLogger.Type;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
import com.google.gwt.user.rebind.SourceWriter;
import fr.lteconsulting.hexa.client.jsonbrowser.Path;

public class JSONBrowserGenerator extends Generator {
	TypeOracle oracle;
	SourceWriter sourceWriter;
	
	@Override
	public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
		logger.log( Type.ERROR, "On me demande de générer : " + typeName );
		
		oracle = context.getTypeOracle();
		
		String generatedClass = typeName + "Impl";
		JClassType type = oracle.findType( typeName );
		
		PrintWriter pw = context.tryCreate(logger, type.getPackage().getName(), type.getSimpleSourceName()+"Impl");
		if( pw == null )
			return generatedClass;
		
		logger.log(Type.ERROR, "PKNAME:"+type.getPackage().getName()+" / CLSNAME:"+type.getSimpleSourceName()+"Impl" );
		
		ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory( type.getPackage().getName(), type.getSimpleSourceName()+"Impl" );
		composer.addImplementedInterface(typeName);
		composer.addImport( "com.google.gwt.json.client.JSONValue" );
		composer.addImport( "com.google.gwt.json.client.JSONObject" );
		composer.addImport( "com.google.gwt.json.client.JSONString" );
		
		logger.log(Type.ERROR, "Composer: " + composer);
		sourceWriter = composer.createSourceWriter( context, pw );
		
		// quelles méthodes dans l'interface à implémenter ?
		JMethod[] methods = type.getMethods();
		for( int m=0; m




© 2015 - 2025 Weber Informatics LLC | Privacy Policy