/******************************************************************************* * Copyright (c) 2006, 2007 BEA Systems, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * wharley@bea.com - initial API and implementation * *******************************************************************************/ package org.eclipse.jdt.compiler.apt.tests.processors.checkargs; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; import javax.lang.model.SourceVersion; import javax.lang.model.element.TypeElement; /** * A processor that echoes its command-line arguments to standard out. */ @SupportedAnnotationTypes("org.eclipse.jdt.compiler.apt.tests.annotations.CheckArgs") @SupportedSourceVersion(SourceVersion.RELEASE_6) public class CheckArgsProc extends AbstractProcessor { private final static String[] _expected = { "foo", "bar", "novalue", null, "bar2", null }; /* (non-Javadoc) * @see javax.annotation.processing.AbstractProcessor#process(java.util.Set, javax.annotation.processing.RoundEnvironment) */ @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { if (roundEnv.processingOver()) return true; Map<String, String> options = new HashMap<String, String>(processingEnv.getOptions()); options.remove("phase"); if (_expected.length/2 != options.size()) { throw new IllegalStateException( "Bad processor arguments: expected " + _expected.length/2 + " arguments but found " + options.size()); } for (int i = 0; i < _expected.length; ++i) { String key = _expected[i++]; String value = _expected[i]; String observedValue = options.get(key); if (value == null && observedValue != null) { throw new IllegalStateException( "Bad processor arguments: key " + key + " expected null value but observed value " + observedValue); } else if (value != null && !value.equals(observedValue)){ throw new IllegalStateException( "Bad processor arguments: key " + key + " expected value " + value + " but observed value " + observedValue); } } return true; } }