List of usage examples for com.google.gwt.user.rebind ClassSourceFileComposerFactory setSuperclass
public void setSuperclass(String superclassName)
From source file:cc.alcina.framework.entity.gwtsynth.ClientReflectionGenerator.java
License:Apache License
@Override public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { filter = IntrospectorFilterHelper.getFilter(context); // System.out.println("ClientReflector generation..."); long start = System.currentTimeMillis(); Map<Class, String> ann2impl = new HashMap<Class, String>(); Map<String, String> simpleNameCheck = new HashMap<String, String>(); try {// ww w .j a v a 2 s .c o m ClassSourceFileComposerFactory crf = null; // scan for reflectable annotations etc String superClassName = null; JClassType intrType = context.getTypeOracle().getType(typeName); if (intrType.isInterface() != null) { intrType = context.getTypeOracle().getType(ClientReflector.class.getName()); } ReflectionModule module = intrType.getAnnotation(ReflectionModule.class); String moduleName = module.value(); filter.setModuleName(moduleName); String implementationName = String.format("ClientReflector_%s_Impl", moduleName); superClassName = intrType.getQualifiedSourceName(); crf = new ClassSourceFileComposerFactory(this.packageName, implementationName); PrintWriter printWriter = context.tryCreate(logger, packageName, implementationName); if (printWriter == null) { return packageName + "." + implementationName; } crf.addImport(LinkedHashMap.class.getName()); crf.addImport(Map.class.getName()); crf.addImport(GWT.class.getName()); crf.addImport(JavaScriptObject.class.getName()); crf.addImport(Registry.class.getName()); crf.addImport(Annotation.class.getName()); crf.addImport(UnsafeNativeLong.class.getName()); crf.setSuperclass(superClassName); crf.addImport(ClientBeanReflector.class.getName()); crf.addImport(ClientPropertyReflector.class.getName()); crf.addImport(ClientReflector.class.getName()); crf.addImport(RegistryLocation.class.getName()); ctLookup.clear(); visibleAnnotationClasses = new ArrayList<Class<? extends Annotation>>(); List<JAnnotationType> jAnns = this.getClientVisibleAnnotations(logger, context.getTypeOracle()); for (JAnnotationType jAnnotationType : jAnns) { visibleAnnotationClasses .add((Class<? extends Annotation>) Class.forName(jAnnotationType.getQualifiedBinaryName())); } visibleAnnotationClasses.add(Omit.class); filter.filterAnnotations(jAnns, visibleAnnotationClasses); writeAnnotations(logger, context, jAnns, crf, moduleName.equals(ReflectionModule.INITIAL)); List<JClassType> beanInfoTypes = this.getBeanInfoTypes(logger, context.getTypeOracle(), crf); List<JClassType> instantiableTypes = this.getInstantiableTypes(logger, context.getTypeOracle(), crf); Map<JClassType, Set<RegistryLocation>> gwtRegisteringClasses = getRegistryAnnotations( context.getTypeOracle()); filter.filterReflectionInfo(beanInfoTypes, instantiableTypes, gwtRegisteringClasses); SourceWriter srcW = createWriter(crf, printWriter); writeIt(beanInfoTypes, instantiableTypes, srcW, gwtRegisteringClasses, implementationName); commit(context, logger, printWriter); System.out.format( "Client reflection generation [%s] - " + "%s annotations, %s beans, " + "%s instantiable types - %s ms\n", filter.getModuleName(), jAnns.size(), beanInfoTypes.size(), instantiableTypes.size(), System.currentTimeMillis() - start); filter.generationComplete(); return packageName + "." + implementationName; } catch (Exception e) { e.printStackTrace(); throw new WrappedRuntimeException(e); } }
From source file:ch.unifr.pai.twice.comm.serverPush.rebind.RemoteEventDeSerializerGenerator.java
License:Apache License
public SourceWriter getSourceWriter(JClassType classType, GeneratorContext context, TreeLogger logger) { String packageName = classType.getPackage().getName(); String simpleName = classType.getSimpleSourceName() + "Impl"; ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, simpleName); composer.setSuperclass(classType.getName()); composer.addImport(classType.getQualifiedSourceName()); // Need to add whatever imports your generated class needs. // composer.addImport("com.google.gwt.user.client.Window"); // composer.addImport("com.google.gwt.user.client.rpc.AsyncCallback"); // composer.addImport("com.google.gwt.user.client.ui.Button"); // composer.addImport("com.google.gwt.user.client.ui.RootPanel"); PrintWriter printWriter = context.tryCreate(logger, packageName, simpleName); if (printWriter == null) { return null; } else {/*from w w w. j av a 2 s . c o m*/ SourceWriter sw = composer.createSourceWriter(context, printWriter); return sw; } }
From source file:ch.unifr.pai.twice.module.rebind.TWICEModuleGenerator.java
License:Apache License
/** * Define the class to be generated.//from ww w . java 2 s . co m * * @param classType * @param context * @param logger * @return */ public SourceWriter getSourceWriter(JClassType classType, GeneratorContext context, TreeLogger logger) { String packageName = classType.getPackage().getName(); String simpleName = classType.getSimpleSourceName() + "Impl"; ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, simpleName); composer.setSuperclass(classType.getName()); composer.addImplementedInterface(TWICEModuleInstantiator.class.getName() + "<" + getGenericClass(classType).getQualifiedSourceName() + ">"); PrintWriter printWriter = context.tryCreate(logger, packageName, simpleName); if (printWriter == null) { return null; } else { SourceWriter sw = composer.createSourceWriter(context, printWriter); return sw; } }
From source file:com.ait.ext4j.rebind.BeanModelGenerator.java
License:Apache License
@Override public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { oracle = context.getTypeOracle();// w ww .j ava 2s . co m beanModelMarkerType = oracle.findType(BeanModelMarker.class.getName()); beanModelTagType = oracle.findType(BeanModelTag.class.getName()); try { // final all beans and bean markers beans = new ArrayList<JClassType>(); JClassType[] types = oracle.getTypes(); for (JClassType type : types) { if (isBeanMarker(type)) { beans.add(getMarkerBean(type)); } else if (isBean(type)) { beans.add(type); } } final String genPackageName = BeanModelLookup.class.getPackage().getName(); final String genClassName = "BeanModelLookupImpl"; ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(genPackageName, genClassName); composer.setSuperclass(BeanModelLookup.class.getCanonicalName()); composer.addImport(BeanModelFactory.class.getName()); composer.addImport(Map.class.getName()); composer.addImport(FastMap.class.getName()); PrintWriter pw = context.tryCreate(logger, genPackageName, genClassName); if (pw != null) { SourceWriter sw = composer.createSourceWriter(context, pw); sw.println("private Map<String, BeanModelFactory> m;"); sw.println("public BeanModelFactory getFactory(Class b) {"); sw.indent(); sw.println("String n = b.getName();"); sw.println("if (m == null) {"); sw.indentln("m = new FastMap<BeanModelFactory>();"); sw.println("}"); sw.println("if (m.get(n) == null) {"); sw.indent(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < beans.size(); i++) { JClassType bean = beans.get(i); String name = createBean(bean, logger, context); String factory = createFactory(bean, name, logger, context); if (i > 0) { sw.print(" else "); } sw.println("if (" + bean.getQualifiedSourceName() + ".class.getName().equals(n)) {"); sw.indentln("m" + i + "();"); sb.append("private void m" + i + "() {\n"); sb.append(" m.put(" + bean.getQualifiedSourceName() + ".class.getName(), new " + factory + "());\n"); sb.append("}\n"); sw.print("}"); } sw.outdent(); sw.println("}"); sw.println("return m.get(n);"); sw.outdent(); sw.println("}"); sw.println(sb.toString()); sw.commit(logger); } return composer.getCreatedClassName(); } catch (Exception e) { logger.log(TreeLogger.ERROR, "Class " + typeName + " not found.", e); throw new UnableToCompleteException(); } }
From source file:com.ait.ext4j.rebind.BeanModelGenerator.java
License:Apache License
protected String createFactory(JClassType bean, String beanModelName, TreeLogger logger, GeneratorContext context) throws Exception { final String genPackageName = BeanModelLookup.class.getPackage().getName(); final String genClassName = "BeanModel_" + bean.getQualifiedSourceName().replace(".", "_") + "_Factory"; ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(genPackageName, genClassName); composer.setSuperclass(BeanModelFactory.class.getCanonicalName()); PrintWriter pw = context.tryCreate(logger, genPackageName, genClassName); if (pw != null) { List<JMethod> getters = findGetters(bean); String typeName = bean.getQualifiedSourceName(); SourceWriter sw = composer.createSourceWriter(context, pw); sw.println("public BeanModel newInstance() {"); sw.println("return new " + beanModelName + "();"); sw.println("}"); sw.println("public BeanModel createModel(Object bean) {"); sw.println("BeanModel model = newInstance();"); for (JMethod method : getters) { String s = method.getName(); String p = lowerFirst(s.substring(s.startsWith("g") ? 3 : 2)); // get sw.println("model.set(\"" + p + "\"," + " ((" + typeName + ")bean)." + s + "()" + ");"); }/* w w w .ja va 2 s .c om*/ sw.println("model.setBean(bean);"); sw.println("return model;"); sw.println("}"); sw.commit(logger); } return composer.getCreatedClassName(); }
From source file:com.ait.ext4j.rebind.BeanModelGenerator.java
License:Apache License
protected String createBean(JClassType bean, TreeLogger logger, GeneratorContext context) throws Exception { final String genPackageName = bean.getPackage().getName(); final String genClassName = "BeanModel_" + bean.getQualifiedSourceName().replace(".", "_"); ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(genPackageName, genClassName); composer.setSuperclass(BeanModel.class.getCanonicalName()); composer.addImport(BeanModel.class.getName()); composer.addImport(NestedModelUtil.class.getName()); PrintWriter pw = context.tryCreate(logger, genPackageName, genClassName); if (pw != null) { List<JMethod> getters = findGetters(bean); List<JMethod> setters = findSetters(bean); SourceWriter sw = composer.createSourceWriter(context, pw); sw.println("public " + genClassName + "(){"); for (JMethod method : getters) { String s = method.getName(); String p = lowerFirst(s.substring(s.startsWith("g") ? 3 : 2)); // get // or // is sw.println("beanProperties.add(\"" + p + "\");"); }//from w w w.j av a2 s. c o m sw.println("}"); createGetMethods(getters, sw, bean.getQualifiedSourceName()); createSetMethods(setters, sw, bean.getQualifiedSourceName()); // delegate equals to bean sw.println("public boolean equals(Object obj) {"); sw.println(" if (obj instanceof " + "BeanModel" + ") {"); sw.println(" obj = ((BeanModel)obj).getBean();"); sw.println(" }"); sw.println(" return bean.equals(obj);"); sw.println("}"); // delegate hashCode to bean sw.println("public int hashCode(){"); sw.println(" return bean.hashCode();"); sw.println("}"); sw.commit(logger); } return composer.getCreatedClassName(); }
From source file:com.ait.toolkit.rebind.BeanModelGenerator.java
License:Open Source License
@Override public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { oracle = context.getTypeOracle();/*from www . j a v a 2 s . c om*/ beanModelMarkerType = oracle.findType(BeanMarker.class.getName()); beanModelTagType = oracle.findType(BeanTag.class.getName()); try { // final all beans and bean markers beans = new ArrayList<JClassType>(); JClassType[] types = oracle.getTypes(); for (JClassType type : types) { if (isBeanMarker(type)) { beans.add(getMarkerBean(type)); } else if (isBean(type)) { beans.add(type); } } final String genPackageName = BeanLookup.class.getPackage().getName(); final String genClassName = "BeanLookupImpl"; ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(genPackageName, genClassName); composer.setSuperclass(BeanLookup.class.getCanonicalName()); composer.addImport(BeanFactory.class.getName()); composer.addImport(Map.class.getName()); composer.addImport(FastMap.class.getName()); PrintWriter pw = context.tryCreate(logger, genPackageName, genClassName); if (pw != null) { SourceWriter sw = composer.createSourceWriter(context, pw); sw.println("private Map<String, BeanFactory> m;"); sw.println("public BeanFactory getFactory(Class b) {"); sw.indent(); sw.println("String n = b.getName();"); sw.println("if (m == null) {"); sw.indentln("m = new FastMap<BeanFactory>();"); sw.println("}"); sw.println("if (m.get(n) == null) {"); sw.indent(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < beans.size(); i++) { JClassType bean = beans.get(i); String name = createBean(bean, logger, context); String factory = createFactory(bean, name, logger, context); if (i > 0) { sw.print(" else "); } sw.println("if (" + bean.getQualifiedSourceName() + ".class.getName().equals(n)) {"); sw.indentln("m" + i + "();"); sb.append("private void m" + i + "() {\n"); sb.append(" m.put(" + bean.getQualifiedSourceName() + ".class.getName(), new " + factory + "());\n"); sb.append("}\n"); sw.print("}"); } sw.outdent(); sw.println("}"); sw.println("return m.get(n);"); sw.outdent(); sw.println("}"); sw.println(sb.toString()); sw.commit(logger); } return composer.getCreatedClassName(); } catch (Exception e) { logger.log(TreeLogger.ERROR, "Class " + typeName + " not found.", e); throw new UnableToCompleteException(); } }
From source file:com.ait.toolkit.rebind.BeanModelGenerator.java
License:Open Source License
protected String createFactory(JClassType bean, String beanModelName, TreeLogger logger, GeneratorContext context) throws Exception { final String genPackageName = BeanLookup.class.getPackage().getName(); final String genClassName = "Bean_" + bean.getQualifiedSourceName().replace(".", "_") + "_Factory"; ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(genPackageName, genClassName); composer.setSuperclass(BeanFactory.class.getCanonicalName()); PrintWriter pw = context.tryCreate(logger, genPackageName, genClassName); if (pw != null) { List<JMethod> getters = findGetters(bean); String typeName = bean.getQualifiedSourceName(); SourceWriter sw = composer.createSourceWriter(context, pw); sw.println("public Bean newInstance() {"); sw.println("return new " + beanModelName + "();"); sw.println("}"); sw.println("public Bean createModel(Object bean) {"); sw.println("Bean model = newInstance();"); for (JMethod method : getters) { String s = method.getName(); String p = lowerFirst(s.substring(s.startsWith("g") ? 3 : 2)); // get sw.println("model.set(\"" + p + "\"," + " ((" + typeName + ")bean)." + s + "()" + ");"); }//from ww w .ja va2s .c o m sw.println("model.setBean(bean);"); sw.println("return model;"); sw.println("}"); sw.commit(logger); } return composer.getCreatedClassName(); }
From source file:com.ait.toolkit.rebind.BeanModelGenerator.java
License:Open Source License
protected String createBean(JClassType bean, TreeLogger logger, GeneratorContext context) throws Exception { final String genPackageName = bean.getPackage().getName(); final String genClassName = "Bean_" + bean.getQualifiedSourceName().replace(".", "_"); ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(genPackageName, genClassName); composer.setSuperclass(Bean.class.getCanonicalName()); composer.addImport(Bean.class.getName()); composer.addImport(NestedModelUtil.class.getName()); PrintWriter pw = context.tryCreate(logger, genPackageName, genClassName); if (pw != null) { List<JMethod> getters = findGetters(bean); List<JMethod> setters = findSetters(bean); SourceWriter sw = composer.createSourceWriter(context, pw); sw.println("public " + genClassName + "(){"); for (JMethod method : getters) { String s = method.getName(); String p = lowerFirst(s.substring(s.startsWith("g") ? 3 : 2)); // get // or // is sw.println("beanProperties.add(\"" + p + "\");"); }/* w w w . j a va2s . c o m*/ sw.println("}"); createGetMethods(getters, sw, bean.getQualifiedSourceName()); createSetMethods(setters, sw, bean.getQualifiedSourceName()); // delegate equals to bean sw.println("public boolean equals(Object obj) {"); sw.println(" if (obj instanceof " + "Bean" + ") {"); sw.println(" obj = ((Bean)obj).getBean();"); sw.println(" }"); sw.println(" return bean.equals(obj);"); sw.println("}"); // delegate hashCode to bean sw.println("public int hashCode(){"); sw.println(" return bean.hashCode();"); sw.println("}"); sw.commit(logger); } return composer.getCreatedClassName(); }
From source file:com.bramosystems.oss.player.core.rebind.PlayerManagerGenerator.java
License:Apache License
/** * @param logger Logger object/*from w w w .j a v a 2s. c o m*/ * @param context Generator context */ private void generateClass(TreeLogger logger, GeneratorContext context) throws NotFoundException, BadPropertyValueException, UnableToCompleteException, IOException { // get print writer that receives the source code PrintWriter printWriter = context.tryCreate(logger, packageName, className); // print writer if null, source code has ALREADY been generated, return if (printWriter == null) { return; } // build plugin mime types ... ConfigurationProperty mimeFile = context.getPropertyOracle() .getConfigurationProperty("bstplayer.media.mimeTypes"); String val = mimeFile.getValues().get(0); if (val == null) { logger.log(TreeLogger.Type.INFO, "'" + mimeFile.getName() + "' configuration property not set! Using defaults"); parseMimeFile(DEFAULT_MIME_TYPES_FILE); } else { logger.log(TreeLogger.Type.INFO, "'" + mimeFile.getName() + "' set! Using '" + val + "'"); parseMimeFile(val); } collatePlayers(context.getTypeOracle()); // init composer, set class properties, create source writer ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, className); composer.setSuperclass("PlayerManager"); composer.addImport("com.google.gwt.core.client.GWT"); composer.addImport("com.bramosystems.oss.player.core.client.spi.PlayerProviderFactory"); composer.addImport("com.bramosystems.oss.player.core.client.impl.CallbackUtility"); composer.addImport("com.bramosystems.oss.player.core.client.spi.ConfigurationContext"); composer.addImport("com.bramosystems.oss.player.core.client.*"); composer.addImport("java.util.*"); SourceWriter sourceWriter = composer.createSourceWriter(context, printWriter); sourceWriter.println( "private HashMap<String, HashMap<String, PlayerInfo>> pInfos = new HashMap<String, HashMap<String, PlayerInfo>>();"); // collate widget factories & create static holders ... Iterator<String> fact = pMap.keySet().iterator(); while (fact.hasNext()) { String provClass = fact.next(); sourceWriter.println("private static PlayerProviderFactory pwf_" + escapeProviderName(pMap.get(provClass).name) + " = GWT.create(" + provClass + ".class);"); } sourceWriter.println(); Pattern ptrn = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)"); // generate constructor source code sourceWriter.println("public " + className + "() { "); sourceWriter.indent(); // init widget factories ... fact = pMap.keySet().iterator(); while (fact.hasNext()) { String provClass = fact.next(); String provName = escapeProviderName(pMap.get(provClass).name); sourceWriter.println( "pwf_" + provName + ".init(new ConfigurationContext(CallbackUtility.initCallbackHandlers(\"" + provName + "\"), \"bstplayer.handlers." + provName + "\"));"); } sourceWriter.println(); // init providers ... fact = pMap.keySet().iterator(); while (fact.hasNext()) { _provider pvd = pMap.get(fact.next()); sourceWriter.println("pInfos.put(\"" + pvd.name + "\", new HashMap<String, PlayerInfo>());"); Iterator<_player> pns = pvd.players.iterator(); while (pns.hasNext()) { _player ply = pns.next(); boolean ps = false, ms = false; JClassType ints[] = ply.interfaces; for (int j = 0; j < ints.length; j++) { if (ints[j].getQualifiedSourceName().equals(MatrixSupport.class.getName())) { ms = true; } else if (ints[j].getQualifiedSourceName().equals(PlaylistSupport.class.getName())) { ps = true; } } Matcher m = ptrn.matcher(ply.minPluginVer); if (m.matches()) { sourceWriter.println("pInfos.get(\"" + pvd.name + "\").put(\"" + ply.name + "\", new PlayerInfo(\"" + pvd.name + "\",\"" + ply.name + "\"," + "PluginVersion.get(" + Integer.parseInt(m.group(1)) + "," + Integer.parseInt(m.group(2)) + "," + Integer.parseInt(m.group(3)) + ")," + ps + "," + ms + "));"); } else { logger.log(TreeLogger.Type.WARN, "Min"); } } } sourceWriter.outdent(); sourceWriter.println("}"); // end constructor source generation sourceWriter.println(); // implement get provider names ... sourceWriter.println("@Override"); sourceWriter.println("public Set<String> getProviders(){"); sourceWriter.indent(); sourceWriter.println("return new TreeSet<String>(pInfos.keySet());"); sourceWriter.outdent(); sourceWriter.println("}"); sourceWriter.println(); // implement get player names by provider ... sourceWriter.println("@Override"); sourceWriter.println("public Set<String> getPlayerNames(String providerName) {"); sourceWriter.indent(); sourceWriter.println("if(!pInfos.containsKey(providerName))"); sourceWriter.println("throw new IllegalArgumentException(\"Unknown player provider - \" + providerName);"); sourceWriter.println("return new TreeSet<String>(pInfos.get(providerName).keySet());"); sourceWriter.outdent(); sourceWriter.println("}"); sourceWriter.println(); // implement get player infos ... sourceWriter.println("@Override"); sourceWriter.println("public PlayerInfo getPlayerInfo(String providerName, String playerName) {"); sourceWriter.indent(); sourceWriter.println("if(!pInfos.containsKey(providerName)) {"); sourceWriter.println("throw new IllegalArgumentException(\"Unknown player provider - \" + providerName);}"); sourceWriter.println("if(providerName.equals(\"api\")){"); sourceWriter.println("return getApiPlayerInfoForPlugin(playerName);}"); sourceWriter.println("else if(!pInfos.get(providerName).containsKey(playerName)){"); sourceWriter.println("throw new IllegalArgumentException(\"Unknown player name - \" + playerName);}"); sourceWriter.println("return pInfos.get(providerName).get(playerName);"); sourceWriter.outdent(); sourceWriter.println("}"); sourceWriter.println(); // implement get widget factory with defered binding on demand .... sourceWriter.println("@Override"); sourceWriter.println("public PlayerProviderFactory getProviderFactory(String provider) {"); sourceWriter.indent(); sourceWriter.println("PlayerProviderFactory wf = null;"); boolean firstRun = true; Iterator<_provider> provs = pMap.values().iterator(); while (provs.hasNext()) { _provider prov = provs.next(); if (firstRun) { sourceWriter.println("if(\"" + prov.name + "\".equals(provider)) {"); } else { sourceWriter.println("else if(\"" + prov.name + "\".equals(provider)) {"); } sourceWriter.indent(); sourceWriter.println("wf = pwf_" + escapeProviderName(prov.name) + ";"); sourceWriter.outdent(); sourceWriter.println("}"); firstRun = false; } sourceWriter.println("return wf;"); sourceWriter.outdent(); sourceWriter.println("}"); sourceWriter.println(); // implement mimeTypes .... sourceWriter.println("@Override"); sourceWriter.println("protected void initMimeTypes(HashMap<String, String> mimeTypes) {"); sourceWriter.indent(); Iterator<String> mimeKeys = mimeMap.keySet().iterator(); while (mimeKeys.hasNext()) { String mime = mimeKeys.next(); sourceWriter.println("mimeTypes.put(\"" + mime + "\",\"" + mimeMap.get(mime) + "\");"); } sourceWriter.outdent(); sourceWriter.println("}"); sourceWriter.println(); // close generated class sourceWriter.outdent(); sourceWriter.println("}"); // commit generated class context.commit(logger, printWriter); }