001 /*
002 * Copyright (c) 2011, Cloudera, Inc. All Rights Reserved.
003 *
004 * Cloudera, Inc. licenses this file to you under the Apache License,
005 * Version 2.0 (the "License"). You may not use this file except in
006 * compliance with the License. You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
011 * CONDITIONS OF ANY KIND, either express or implied. See the License for
012 * the specific language governing permissions and limitations under the
013 * License.
014 */
015 package com.cloudera.lib.wsrs;
016
017 import com.cloudera.lib.util.Check;
018
019 import java.text.MessageFormat;
020
021 public abstract class Param<T> {
022 protected T value;
023
024 public T parseParam(String name, String str) {
025 Check.notNull(name, "name");
026 try {
027 return (str != null && str.trim().length() > 0) ? parse(str) : null;
028 }
029 catch (Exception ex) {
030 throw new IllegalArgumentException(
031 MessageFormat.format("Parameter [{0}], invalid value [{1}], value must be [{2}]",
032 name, str, getDomain()));
033 }
034 }
035
036 public T value() {
037 return value;
038 }
039
040 protected void setValue(T value) {
041 this.value = value;
042 }
043
044 protected abstract String getDomain();
045
046 protected abstract T parse(String str) throws Exception;
047
048 public String toString() {
049 return value.toString();
050 }
051 }