| /* | |
| * Copyright 2008 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.module.rebind; | |
| import com.google.gwt.core.ext.BadPropertyValueException; | |
| import com.google.gwt.core.ext.ConfigurationProperty; | |
| 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.UnableToCompleteException; | |
| import com.google.gwt.core.ext.typeinfo.JClassType; | |
| import java.io.PrintWriter; | |
| /** | |
| * A test generator to dump the contents of the "testProperty" configuration | |
| * property. | |
| */ | |
| public class ConfigurationPropertiesGenerator extends Generator { | |
| @Override | |
| public String generate(TreeLogger logger, GeneratorContext context, | |
| String typeName) throws UnableToCompleteException { | |
| JClassType type = context.getTypeOracle().findType(typeName); | |
| assert type != null; | |
| PrintWriter out = context.tryCreate(logger, type.getPackage().getName(), | |
| "TestHookImpl"); | |
| if (out != null) { | |
| String propertyValue; | |
| try { | |
| ConfigurationProperty prop = context.getPropertyOracle(). | |
| getConfigurationProperty("testProperty"); | |
| propertyValue = prop.getValues().get(0); | |
| } catch (BadPropertyValueException e) { | |
| logger.log(TreeLogger.ERROR, "testProperty not set", e); | |
| throw new UnableToCompleteException(); | |
| } | |
| try { | |
| ConfigurationProperty prop = context.getPropertyOracle(). | |
| getConfigurationProperty("bad_property"); | |
| logger.log(TreeLogger.ERROR, | |
| "Did not get an exception trying to access fake property"); | |
| throw new UnableToCompleteException(); | |
| } catch (BadPropertyValueException e) { | |
| // OK | |
| } | |
| out.println("package " + type.getPackage().getName() + ";"); | |
| out.println("public class TestHookImpl implements ConfigurationPropertiesTest.TestHook {"); | |
| out.println("public String getConfigProperty() {"); | |
| out.println("return \"" + escape(propertyValue) + "\";"); | |
| out.println("}}"); | |
| context.commit(logger, out); | |
| } | |
| return type.getPackage().getName() + ".TestHookImpl"; | |
| } | |
| } |