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

com.google.gwt.validation.rebind.AbstractCreator Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.validation.rebind;

import com.google.gwt.core.ext.GeneratorContext;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JPackage;
import com.google.gwt.user.rebind.AbstractSourceCreator;
import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
import com.google.gwt.user.rebind.SourceWriter;

import java.io.PrintWriter;

/**
 * EXPERIMENTAL and subject to change. Do not use this in
 * production code.
 * 

* Abstract Class for Creating source files. *

* This class is not thread safe. */ public abstract class AbstractCreator extends AbstractSourceCreator { protected final GeneratorContext context; protected final TreeLogger logger; protected final JClassType validatorType; public AbstractCreator(GeneratorContext context, TreeLogger logger, JClassType validatorType) { super(); this.context = context; this.logger = branch(logger, "Creating " + validatorType); this.validatorType = validatorType; } public final String create() throws UnableToCompleteException { SourceWriter sourceWriter = getSourceWriter(logger, context); if (sourceWriter != null) { writeClassBody(sourceWriter); sourceWriter.commit(logger); } return getQualifiedName(); } protected void addImports(ClassSourceFileComposerFactory composerFactory, Class... imports) { for (Class imp : imports) { composerFactory.addImport(imp.getCanonicalName()); } } protected abstract void compose(ClassSourceFileComposerFactory composerFactory); protected BeanHelper createBeanHelper(Class clazz) throws UnableToCompleteException { return BeanHelper.createBeanHelper(clazz, logger, context); } protected BeanHelper createBeanHelper(JClassType jType) throws UnableToCompleteException { return BeanHelper.createBeanHelper(jType, logger, context); } protected final String getPackage() { JPackage serviceIntfPkg = validatorType.getPackage(); String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName(); return packageName; } protected abstract void writeClassBody(SourceWriter sourceWriter) throws UnableToCompleteException; protected void writeValidatorInstance(SourceWriter sw, BeanHelper bean) { BeanHelper.writeInterface(context, logger, bean); // private final MyBeanValidator myBeanValidator = sw.print("private final " + bean.getFullyQualifiedValidatorName() + " "); sw.print(bean.getValidatorInstanceName()); sw.println(" = "); sw.indent(); sw.indent(); // MyBeanValidator.INSTANCE; sw.print(bean.getFullyQualifiedValidatorName()); sw.println(".INSTANCE;"); sw.outdent(); sw.outdent(); } private String getQualifiedName() { String packageName = getPackage(); return (packageName == "" ? "" : packageName + ".") + getSimpleName(); } private String getSimpleName() { return validatorType.getSimpleSourceName() + "Impl"; } private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx) { String packageName = getPackage(); String simpleName = getSimpleName(); PrintWriter printWriter = ctx.tryCreate(logger, packageName, simpleName); if (printWriter == null) { return null; } ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory( packageName, simpleName); compose(composerFactory); SourceWriter sourceWriter = composerFactory.createSourceWriter(ctx, printWriter); return sourceWriter; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy