1e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/* 2e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. 3e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 5e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * This code is free software; you can redistribute it and/or modify it 6e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * under the terms of the GNU General Public License version 2 only, as 7e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * published by the Free Software Foundation. Oracle designates this 8e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * particular file as subject to the "Classpath" exception as provided 9e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * by Oracle in the LICENSE file that accompanied this code. 10e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 11e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * This code is distributed in the hope that it will be useful, but WITHOUT 12e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * version 2 for more details (a copy is included in the LICENSE file that 15e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * accompanied this code). 16e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 17e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * You should have received a copy of the GNU General Public License version 18e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 2 along with this work; if not, write to the Free Software Foundation, 19e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 21e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * or visit www.oracle.com if you need additional information or have any 23e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * questions. 24e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 25e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 26e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmerapackage sun.nio.fs; 27e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 28e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.nio.file.attribute.*; 29e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.util.*; 30e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.io.IOException; 31e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 32e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/** 33e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * An implementation of FileOwnerAttributeView that delegates to a given 34e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * PosixFileAttributeView or AclFileAttributeView object. 35e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 36e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 37e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmerafinal class FileOwnerAttributeViewImpl 38e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera implements FileOwnerAttributeView, DynamicFileAttributeView 39e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera{ 40e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private static final String OWNER_NAME = "owner"; 41e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 42e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private final FileAttributeView view; 43e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private final boolean isPosixView; 44e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 45e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera FileOwnerAttributeViewImpl(PosixFileAttributeView view) { 46e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.view = view; 47e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.isPosixView = true; 48e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 49e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 50e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera FileOwnerAttributeViewImpl(AclFileAttributeView view) { 51e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.view = view; 52e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.isPosixView = false; 53e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 54e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 55e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 56e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String name() { 57e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return "owner"; 58e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 59e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 60e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 61e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public void setAttribute(String attribute, Object value) 62e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throws IOException 63e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera { 64e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (attribute.equals(OWNER_NAME)) { 65e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera setOwner((UserPrincipal)value); 66e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } else { 67e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new IllegalArgumentException("'" + name() + ":" + 68e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera attribute + "' not recognized"); 69e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 70e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 71e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 72e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 73e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public Map<String,Object> readAttributes(String[] attributes) throws IOException { 74e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera Map<String,Object> result = new HashMap<>(); 75e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera for (String attribute: attributes) { 76e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (attribute.equals("*") || attribute.equals(OWNER_NAME)) { 77e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera result.put(OWNER_NAME, getOwner()); 78e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } else { 79e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new IllegalArgumentException("'" + name() + ":" + 80e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera attribute + "' not recognized"); 81e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 82e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 83e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return result; 84e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 85e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 86e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 87e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public UserPrincipal getOwner() throws IOException { 88e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (isPosixView) { 89e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return ((PosixFileAttributeView)view).readAttributes().owner(); 90e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } else { 91e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return ((AclFileAttributeView)view).getOwner(); 92e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 93e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 94e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 95e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 96e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public void setOwner(UserPrincipal owner) 97e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throws IOException 98e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera { 99e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (isPosixView) { 100e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera ((PosixFileAttributeView)view).setOwner(owner); 101e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } else { 102e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera ((AclFileAttributeView)view).setOwner(owner); 103e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 104e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 105e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 106