List of usage examples for com.google.gwt.core.ext.typeinfo JPackage getName
String getName();
From source file:com.google.code.gwt.database.rebind.SqlProxyCreator.java
License:Apache License
/** * Returns a SourceWriter which is prepared to write the class' body. * //w w w . j a va2 s . c om * @throws UnableToCompleteException */ private SourceWriter getSourceWriter() throws UnableToCompleteException { JPackage serviceIntfPkg = dataService.getPackage(); String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName(); PrintWriter printWriter = context.tryCreate(logger, packageName, getProxySimpleName()); if (printWriter == null) { // Proxy already exists. return null; } ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, getProxySimpleName()); for (String imp : IMPORTED_CLASSES) { composerFactory.addImport(imp); } JClassType superType = dataService.getImplementedInterfaces()[0]; if (GeneratorUtils.isType(superType, DataService.class)) { composerFactory.setSuperclass(genUtils.getClassName(BaseDataService.class)); isBaseType = true; } else { isBaseType = false; // the dataService inherits from a different interface. // Create another SqlProxyCreator to take care of that interface: SqlProxyCreator superClassCreator = new SqlProxyCreator(logger.branch(TreeLogger.DEBUG, "Generating proxy methods for superclass '" + superType.getQualifiedSourceName() + "'..."), context, superType); String className = superClassCreator.create(); composerFactory.setSuperclass(genUtils.shortenName(className)); } composerFactory.addImplementedInterface(genUtils.getClassName(dataService)); composerFactory.setJavaDocCommentForClass("Generated by {@link " + genUtils.getClassName(getClass()) + "}"); return composerFactory.createSourceWriter(context, printWriter); }
From source file:com.google.gwt.testing.easygwtmock.rebind.MocksControlGenerator.java
License:Apache License
/** * Generates the concrete MocksControl implementation of the {@code typeName} interface and * delegates generation of mock classes to * {@link com.google.gwt.testing.easygwtmock.rebind.MocksGenerator} *//*w w w.j a v a2s. c o m*/ @Override public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException { TypeOracle typeOracle = context.getTypeOracle(); JClassType mockControlInterface = typeOracle.findType(typeName); if (mockControlInterface == null) { logger.log(TreeLogger.ERROR, "Unable to find metadata for type '" + typeName + "'", null); throw new UnableToCompleteException(); } if (mockControlInterface.isInterface() == null) { logger.log(TreeLogger.ERROR, mockControlInterface.getQualifiedSourceName() + " is not an interface", null); throw new UnableToCompleteException(); } JPackage interfacePackage = mockControlInterface.getPackage(); String packageName = interfacePackage == null ? "" : interfacePackage.getName(); String newClassName = mockControlInterface.getName().replace(".", "_") + "Impl"; String fullNewClassName = packageName + "." + newClassName; PrintWriter printWriter = context.tryCreate(logger, packageName, newClassName); if (printWriter == null) { // We generated this before. return fullNewClassName; } ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, newClassName); composer.setSuperclass(MocksControlBase.class.getCanonicalName()); composer.addImplementedInterface(mockControlInterface.getQualifiedSourceName()); SourceWriter writer = composer.createSourceWriter(context, printWriter); writer.println(); MocksGenerator mocksGenerator = new MocksGenerator(context, logger); JClassType markerInterface = typeOracle.findType(MocksControl.class.getCanonicalName()); Set<String> reservedNames = getMethodNames(composer.getSuperclassName(), logger, typeOracle); // Report one error per method in the control interface. They are likely to be independent, // so it's a bit nicer for the user. boolean failed = false; for (JMethod method : mockControlInterface.getOverridableMethods()) { if (method.getEnclosingType().equals(markerInterface)) { // Method is implemented in MocksControlBase continue; } if (reservedNames.contains(method.getName())) { // Method name is already used in base class and method should not be overwritten! logger.log(TreeLogger.ERROR, method.getName() + " is a reserved name. Do not use it in the extended MocksControl interface", null); failed = true; continue; } JClassType typeToMock = method.getReturnType().isClassOrInterface(); if (typeToMock == null) { logger.log(TreeLogger.ERROR, method.getReturnType().getQualifiedSourceName() + " is not an interface or a class", null); failed = true; continue; } if (typeToMock.isInterface() != null) { if (method.getParameterTypes().length != 0) { String methodName = mockControlInterface.getSimpleSourceName() + "." + method.getName(); logger.log(TreeLogger.ERROR, "This method should not have parameters because it creates Ua mock of an interface: " + methodName, null); failed = true; continue; } } else { JConstructor constructorToCall = typeToMock.findConstructor(method.getParameterTypes()); if (constructorToCall == null) { String methodName = mockControlInterface.getSimpleSourceName() + "." + method.getName(); logger.log(TreeLogger.ERROR, "Cannot find matching constructor to call for " + methodName, null); failed = true; continue; } } String mockClassName = mocksGenerator.generateMock(typeToMock); printFactoryMethod(writer, method, mockControlInterface, mockClassName); } if (failed) { throw new UnableToCompleteException(); } writer.commit(logger); return fullNewClassName; }
From source file:com.google.gwt.testing.easygwtmock.rebind.MocksGenerator.java
License:Apache License
/** * Generates a mock class for {@code interfaceToMock}. *///from w w w.ja va2 s .com String generateMock(JClassType typeToMock) throws UnableToCompleteException { JPackage interfacePackage = typeToMock.getPackage(); String packageName = interfacePackage == null ? "" : interfacePackage.getName(); String newClassName = typeToMock.getName().replace(".", "_") + "Mock"; // GenericType<Integer> has to generate a different mock implementation than // GenericType<String>, that's what we check and do here if (typeToMock.isParameterized() != null) { StringBuilder typeList = new StringBuilder(); for (JClassType genericArg : typeToMock.isParameterized().getTypeArgs()) { typeList.append(genericArg.getParameterizedQualifiedSourceName()); } newClassName += Integer.toHexString(typeList.toString().hashCode()); } String fullNewClassName = packageName + "." + newClassName; PrintWriter printWriter = this.context.tryCreate(this.logger, packageName, newClassName); if (printWriter == null) { // We generated this before. return fullNewClassName; } ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, newClassName); composer.addImport(MocksControlBase.class.getCanonicalName()); composer.addImport(Method.class.getCanonicalName()); composer.addImport(Call.class.getCanonicalName()); composer.addImport(UndeclaredThrowableException.class.getCanonicalName()); if (typeToMock.isInterface() != null) { composer.addImplementedInterface(typeToMock.getParameterizedQualifiedSourceName()); } else { composer.setSuperclass(typeToMock.getParameterizedQualifiedSourceName()); } SourceWriter sourceWriter = composer.createSourceWriter(this.context, printWriter); sourceWriter.println(); JMethod[] overridableMethods = typeToMock.getOverridableMethods(); List<JMethod> methodsToMock = new ArrayList<JMethod>(); Set<String> needsDefaultImplementation = new HashSet<String>(); for (JMethod method : overridableMethods) { if (isSpecialMethodOfObject(method)) { needsDefaultImplementation.add(method.getName()); } else if (method.getParameterTypes().length == 0 && method.getName().equals("getClass")) { // ignore, Bug 5026788 in GWT } else { methodsToMock.add(method); } } printFields(sourceWriter, methodsToMock); printConstructors(sourceWriter, newClassName, typeToMock.getConstructors()); printMockMethods(sourceWriter, methodsToMock, newClassName); printDefaultMethods(sourceWriter, typeToMock, needsDefaultImplementation); sourceWriter.commit(this.logger); return fullNewClassName; }
From source file:com.gwtplatform.mvp.rebind.ProxyGenerator.java
License:Apache License
@Override public String generate(TreeLogger logger, GeneratorContext ctx, String requestedClass) throws UnableToCompleteException { // Initialize dependencies TypeOracle oracle = ctx.getTypeOracle(); classCollection = new ClassCollection(oracle); ginjectorInspector = new GinjectorInspector(classCollection, ctx, logger); presenterInspector = new PresenterInspector(oracle, logger, classCollection, ginjectorInspector); proxyOutputterFactory = new ProxyOutputterFactory(oracle, logger, classCollection, ginjectorInspector, presenterInspector);/*from ww w . j av a 2s . c om*/ // Find the requested class JClassType proxyInterface = oracle.findType(requestedClass); if (proxyInterface == null) { logger.log(TreeLogger.ERROR, "Unable to find metadata for type '" + requestedClass + "'", null); throw new UnableToCompleteException(); } // If it's not an interface it's a custom user-made proxy class. Don't use generator. if (proxyInterface.isInterface() == null) { return null; } ginjectorInspector.init(); if (!presenterInspector.init(proxyInterface)) { return null; } // Find the package, build the generated class name. JPackage interfacePackage = proxyInterface.getPackage(); String packageName = interfacePackage == null ? "" : interfacePackage.getName(); String implClassName = presenterInspector.getPresenterClassName() + proxyInterface.getSimpleSourceName() + "Impl"; String generatedClassName = packageName + "." + implClassName; // Create the printWriter PrintWriter printWriter = ctx.tryCreate(logger, packageName, implClassName); if (printWriter == null) { // We've already created it, so nothing to do return generatedClassName; } try { ProxyOutputter proxyOutputter = proxyOutputterFactory.create(proxyInterface); // Start composing the class ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, implClassName); proxyOutputter.initComposerFactory(composerFactory); // Get a source writer SourceWriter writer = composerFactory.createSourceWriter(ctx, printWriter); proxyOutputter.writeFields(writer); proxyOutputter.writeInnerClasses(writer); proxyOutputter.writeConstructor(writer, implClassName, true); proxyOutputter.writeMethods(writer); writer.commit(logger); return generatedClassName; } finally { printWriter.close(); } }
From source file:de.csenk.gwt.ws.rebind.filter.serialization.GWTSerializerGenerator.java
License:Open Source License
/** * @param logger/*w ww. jav a2s . co m*/ * @param ctx * @param serializerInterface * @return */ private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx, JClassType serializerInterface) { JPackage serializerIntfPkg = serializerInterface.getPackage(); String packageName = serializerIntfPkg == null ? "" : serializerIntfPkg.getName(); PrintWriter printWriter = ctx.tryCreate(logger, packageName, getImplementationSimpleName(serializerInterface)); if (printWriter == null) { return null; } ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, getImplementationSimpleName(serializerInterface)); String[] imports = new String[] { ClientGWTSerializer.class.getCanonicalName(), GWT.class.getCanonicalName() }; for (String imp : imports) { composerFactory.addImport(imp); } composerFactory.setSuperclass(ClientGWTSerializer.class.getSimpleName()); composerFactory.addImplementedInterface(serializerInterface.getErasedType().getQualifiedSourceName()); return composerFactory.createSourceWriter(ctx, printWriter); }
From source file:de.knightsoftnet.validators.rebind.AbstractCreator.java
License:Apache License
protected final String getPackage() { final JPackage serviceIntfPkg = this.validatorType.getPackage(); return serviceIntfPkg == null ? "" : serviceIntfPkg.getName(); }
From source file:io.reinert.requestor.rebind.JsonAutoBeanGenerator.java
License:Apache License
private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx, JClassType intfType) { JPackage serviceIntfPkg = intfType.getPackage(); String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName(); PrintWriter printWriter = ctx.tryCreate(logger, packageName, getTypeSimpleName()); if (printWriter == null) { return null; }// w w w .j a v a 2s .c o m ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, getTypeSimpleName()); String[] imports = new String[] { // java.util ArrayList.class.getCanonicalName(), Collection.class.getCanonicalName(), List.class.getCanonicalName(), Iterator.class.getCanonicalName(), Set.class.getCanonicalName(), // com.google.gwt.core.client GWT.class.getCanonicalName(), // com.google.web.bindery.autobean.shared AutoBean.class.getCanonicalName(), AutoBeanCodex.class.getCanonicalName(), AutoBeanFactory.class.getCanonicalName(), AutoBeanUtils.class.getCanonicalName(), // io.reinert.requestor.serialization DeserializationContext.class.getCanonicalName(), Deserializer.class.getCanonicalName(), HasImpl.class.getCanonicalName(), Serdes.class.getCanonicalName(), Serializer.class.getCanonicalName(), SerializationContext.class.getCanonicalName(), UnableToDeserializeException.class.getName(), UnableToSerializeException.class.getName(), // io.reinert.requestor.serialization.json JsonObjectSerdes.class.getCanonicalName(), JsonRecordReader.class.getCanonicalName(), JsonRecordWriter.class.getCanonicalName(), }; for (String imp : imports) { composerFactory.addImport(imp); } composerFactory.addImplementedInterface(intfType.getErasedType().getQualifiedSourceName()); return composerFactory.createSourceWriter(ctx, printWriter); }
From source file:io.reinert.requestor.rebind.JsonGwtJacksonGenerator.java
License:Apache License
private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx, JClassType intfType) { JPackage serviceIntfPkg = intfType.getPackage(); String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName(); PrintWriter printWriter = ctx.tryCreate(logger, packageName, getTypeSimpleName()); if (printWriter == null) { return null; }//from www . j a v a 2 s . c om ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, getTypeSimpleName()); String[] imports = new String[] { // java ArrayList.class.getCanonicalName(), Collection.class.getCanonicalName(), HashSet.class.getCanonicalName(), Iterator.class.getCanonicalName(), LinkedHashSet.class.getCanonicalName(), LinkedList.class.getCanonicalName(), List.class.getCanonicalName(), Set.class.getCanonicalName(), TreeSet.class.getCanonicalName(), // com.github.nmorel.gwtjackson ObjectMapper.class.getCanonicalName(), ObjectReader.class.getCanonicalName(), ObjectWriter.class.getCanonicalName(), // com.google.gwt GWT.class.getCanonicalName(), // io.reinert.requestor DeserializationContext.class.getCanonicalName(), Deserializer.class.getCanonicalName(), JsonObjectSerdes.class.getCanonicalName(), JsonRecordReader.class.getCanonicalName(), JsonRecordWriter.class.getCanonicalName(), UnableToDeserializeException.class.getName(), UnableToSerializeException.class.getName(), Serdes.class.getCanonicalName(), Serializer.class.getCanonicalName(), SerializationContext.class.getCanonicalName() }; for (String imp : imports) { composerFactory.addImport(imp); } composerFactory.addImplementedInterface(intfType.getErasedType().getQualifiedSourceName()); return composerFactory.createSourceWriter(ctx, printWriter); }
From source file:org.cruxframework.crux.core.rebind.AbstractInterfaceWrapperProxyCreator.java
License:Apache License
/** * @return a sourceWriter for the proxy class *///from www. j a v a 2 s . co m @Override protected SourcePrinter getSourcePrinter() { JPackage pkg = baseIntf.getPackage(); String packageName = pkg == null ? "" : pkg.getName(); PrintWriter printWriter = context.tryCreate(logger, packageName, getProxySimpleName()); if (printWriter == null) { return null; } ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, getProxySimpleName()); String[] imports = getImports(); for (String imp : imports) { composerFactory.addImport(imp); } composerFactory.addImplementedInterface(baseIntf.getQualifiedSourceName()); return new SourcePrinter(composerFactory.createSourceWriter(context, printWriter), logger); }
From source file:org.cruxframework.crux.core.rebind.controller.ControllerProxyCreator.java
License:Apache License
/** * @return a sourceWriter for the proxy class *///ww w . j a v a 2 s . c o m protected SourcePrinter getSourcePrinter() { JPackage pkg = controllerClass.getPackage(); String packageName = pkg == null ? "" : pkg.getName(); PrintWriter printWriter = context.tryCreate(logger, packageName, getProxySimpleName()); if (printWriter == null) { return null; } ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, getProxySimpleName()); String[] imports = getImports(); for (String imp : imports) { composerFactory.addImport(imp); } composerFactory.setSuperclass(controllerClass.getQualifiedSourceName()); composerFactory.addImplementedInterface(ViewAware.class.getCanonicalName()); return new SourcePrinter(composerFactory.createSourceWriter(context, printWriter), logger); }