Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.hadoop.fs.permission; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; import org.apache.hadoop.io.*; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; /** * Store permission related information. */ @InterfaceAudience.LimitedPrivate({ "HDFS", "MapReduce" }) @InterfaceStability.Unstable public class PermissionStatus implements Writable { static final WritableFactory FACTORY = new WritableFactory() { @Override public Writable newInstance() { return new PermissionStatus(); } }; static { // register a ctor WritableFactories.setFactory(PermissionStatus.class, FACTORY); } /** Create an immutable {@link PermissionStatus} object. */ public static PermissionStatus createImmutable(String user, String group, FsPermission permission) { return new PermissionStatus(user, group, permission) { @Override public void readFields(DataInput in) throws IOException { throw new UnsupportedOperationException(); } }; } private String username; private String groupname; private FsPermission permission; private PermissionStatus() { } /** Constructor */ public PermissionStatus(String user, String group, FsPermission permission) { username = user; groupname = group; this.permission = permission; } /** Return user name */ public String getUserName() { return username; } /** Return group name */ public String getGroupName() { return groupname; } /** Return permission */ public FsPermission getPermission() { return permission; } @Override public void readFields(DataInput in) throws IOException { username = Text.readString(in, Text.DEFAULT_MAX_LEN); groupname = Text.readString(in, Text.DEFAULT_MAX_LEN); permission = FsPermission.read(in); } @Override public void write(DataOutput out) throws IOException { write(out, username, groupname, permission); } /** * Create and initialize a {@link PermissionStatus} from {@link DataInput}. */ public static PermissionStatus read(DataInput in) throws IOException { PermissionStatus p = new PermissionStatus(); p.readFields(in); return p; } /** * Serialize a {@link PermissionStatus} from its base components. */ public static void write(DataOutput out, String username, String groupname, FsPermission permission) throws IOException { Text.writeString(out, username, Text.DEFAULT_MAX_LEN); Text.writeString(out, groupname, Text.DEFAULT_MAX_LEN); permission.write(out); } @Override public String toString() { return username + ":" + groupname + ":" + permission; } }