001/**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hdfs.web.resources;
019
020import java.net.HttpURLConnection;
021
022/** Http POST operation parameter. */
023public class PutOpParam extends HttpOpParam<PutOpParam.Op> {
024  /** Put operations. */
025  public static enum Op implements HttpOpParam.Op {
026    CREATE(true, HttpURLConnection.HTTP_CREATED),
027
028    MKDIRS(false, HttpURLConnection.HTTP_OK),
029    CREATESYMLINK(false, HttpURLConnection.HTTP_OK),
030    RENAME(false, HttpURLConnection.HTTP_OK),
031    SETREPLICATION(false, HttpURLConnection.HTTP_OK),
032
033    SETOWNER(false, HttpURLConnection.HTTP_OK),
034    SETPERMISSION(false, HttpURLConnection.HTTP_OK),
035    SETTIMES(false, HttpURLConnection.HTTP_OK),
036    
037    RENEWDELEGATIONTOKEN(false, HttpURLConnection.HTTP_OK, true),
038    CANCELDELEGATIONTOKEN(false, HttpURLConnection.HTTP_OK, true),
039    
040    NULL(false, HttpURLConnection.HTTP_NOT_IMPLEMENTED);
041
042    final boolean doOutput;
043    final int expectedHttpResponseCode;
044    final boolean requireAuth;
045
046    Op(final boolean doOutput, final int expectedHttpResponseCode) {
047      this(doOutput, expectedHttpResponseCode, false);
048    }
049
050    Op(final boolean doOutput, final int expectedHttpResponseCode,
051       final boolean requireAuth) {
052      this.doOutput = doOutput;
053      this.expectedHttpResponseCode = expectedHttpResponseCode;
054      this.requireAuth = requireAuth;
055    }
056
057    @Override
058    public HttpOpParam.Type getType() {
059      return HttpOpParam.Type.PUT;
060    }
061    
062    @Override
063    public boolean getRequireAuth() {
064      return requireAuth;
065    }
066
067    @Override
068    public boolean getDoOutput() {
069      return doOutput;
070    }
071
072    @Override
073    public int getExpectedHttpResponseCode() {
074      return expectedHttpResponseCode;
075    }
076
077    @Override
078    public String toQueryString() {
079      return NAME + "=" + this;
080    }
081  }
082
083  private static final Domain<Op> DOMAIN = new Domain<Op>(NAME, Op.class);
084
085  /**
086   * Constructor.
087   * @param str a string representation of the parameter value.
088   */
089  public PutOpParam(final String str) {
090    super(DOMAIN, DOMAIN.parse(str));
091  }
092
093  @Override
094  public String getName() {
095    return NAME;
096  }
097}