/* * Copyright 2014 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.util.tools; import static com.google.gwt.thirdparty.guava.common.base.Preconditions.checkArgument; /** * Argument handler for deprecated no-op flags. */ public class ArgHandlerNoopDeprecatedFlag extends ArgHandler { private final int numberOfArgumentsToConsume; private String[] tags; public ArgHandlerNoopDeprecatedFlag(int numberOfArgumentsToConsume, String... tags) { checkArgument(tags != null); checkArgument(tags.length != 0); this.numberOfArgumentsToConsume = numberOfArgumentsToConsume; this.tags = tags; } public ArgHandlerNoopDeprecatedFlag(String... tags) { this(0, tags); } @Override public boolean isUndocumented() { return true; } @Override public String getPurpose() { return "DEPRECATED: Has no effect and will be removed in a future release"; } @Override public String getTag() { return tags[0]; } @Override public String[] getTagArgs() { return tags; } @Override public int handle(String[] args, int startIndex) { String tag = args[startIndex]; if (startIndex + numberOfArgumentsToConsume >= args.length) { System.err.println(tag + " should be followed by parameters."); return -1; } System.err.println(getWarningMessage(tag)); return numberOfArgumentsToConsume; } protected String getWarningMessage(String tag) { return "The " + tag + " option is deprecated. It will be removed in a future release and will" + " throw an error if it is still used."; } }