Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过java追加perforce权限表将导致空权限表_Java_Perforce_P4java - Fatal编程技术网

通过java追加perforce权限表将导致空权限表

通过java追加perforce权限表将导致空权限表,java,perforce,p4java,Java,Perforce,P4java,我正在尝试授予组对Perforce中文件夹的权限。但是,在Perforce中从Java创建/更新的权限表为空 以下是我所做的步骤- //Get the server object. IOptionsServer server = ServerFactory.getOptionsServer("p4java://<ip>:1666", null); server.connect(); server.setUserName("<username>"); // this is

我正在尝试授予组对Perforce中文件夹的权限。但是,在Perforce中从Java创建/更新的权限表为空

以下是我所做的步骤-

//Get the server object.
IOptionsServer server = ServerFactory.getOptionsServer("p4java://<ip>:1666", null);
server.connect();
server.setUserName("<username>"); // this is a super user
server.login("<password>");

//Create a user group and add users.
IUserGroup ug = new UserGroup();
String groupName = "<usergroup_somename>;
ug.setName(groupName);
List<String> userList = new ArrayList<>();
userList.add("<username1>");
userList.add("<username2>");
userList.add("<username3>");
ug.setUsers(userList);
server.createUserGroup(ug);

//Get the permission table.
GetProtectionEntriesOptions gpo = new GetProtectionEntriesOptions();
gpo.setAllUsers(true);
List<IProtectionEntry> peList = server.getProtectionEntries(null, gpo);

//Create a new Protection entry
IProtectionEntry pe = new ProtectionEntry();
pe.setGroup(true);
pe.setName(groupName);
depotFilePath = "//depottest/Level1/Level2/..."; // the folders exist in Perforce
pe.setPath(depotFilePath);
pe.setMode("write");
pe.setHost("*");
pe.setPathExcluded(false);
pe.setOrder(peList.size());
pe.setType(EntryType.INCLUDE);

//Add the new created permission into the fetched Permission table list.
peList.add(pe);

//Create/Update the Permission table using either of the following methods separately or in combination creates a blank permission table.

server.createProtectionEntries(peList);
server.updateProtectionEntries(peList);
//获取服务器对象。
IOptionsServer server=ServerFactory.getoptionServer(“p4java://:1666”,null);
connect();
server.setUserName(“”;//这是一个超级用户
server.login(“”);
//创建用户组并添加用户。
IUserGroup ug=新用户组();
字符串groupName=“;
ug.setName(groupName);
List userList=new ArrayList();
userList.add(“”);
userList.add(“”);
userList.add(“”);
ug.setUsers(用户列表);
createUserGroup(ug);
//获取权限表。
GetProtectionEntriesOptions gpo=新建GetProtectionEntriesOptions();
gpo.setAllUsers(真实);
List-peList=server.getProtectionEntries(null,gpo);
//创建新的保护条目
IProtectionEntry pe=新的ProtectionEntry();
pe.setGroup(真);
pe.setName(groupName);
depotFilePath=“//depottest/Level1/Level2/…”//文件夹存在于Performance中
pe.setPath(depotFilePath);
pe.设置模式(“写入”);
pe.setHost(“*”);
pe.setPathExcluded(假);
pe.setOrder(peList.size());
pe.setType(EntryType.INCLUDE);
//将新创建的权限添加到“获取的权限表”列表中。
添加(pe);
//单独使用或组合使用以下方法之一创建/更新权限表创建空白权限表。
createProtectionEntries(peList);
server.updateProtectionEntries(peList);
根据建议,最后的方法应该创建/替换/更新权限表,但是,这不会发生,而是删除/清空Performce server中的权限表

我可能遗漏了什么。有人能给我一些建议吗


另外,我尝试过只使用
updateProtectionEntries(peList)
方法或
server.createProtectionEntries(peList)
方法,同时使用这两种方法,Perforce服务器中的pemission表仍然是空的。

perforums.Perforce.com有论坛供您提问

有时(取决于Java和服务器版本),不正确的顺序值可能会丢失数据。路径中也存在空格问题

这对我很有用:

peList.add(pe);

// fix order values and spaces-in-path quoting
int i = 0;
for (IProtectionEntry pe : peList) {

    pe.setOrder(i++);

    if (pe.getPath().indexOf(" ") >= 0) {
        // this bug should be fixed in 2014.X (no promises) 
        if (pe.isPathExcluded()) {
            pe.setPath("\"-" + pe.getPath() + "\"");
            pe.setPathExcluded(false);
        } else {
            pe.setPath("\"" + pe.getPath() + "\"");
        }
    }
}

try {
    String createProtectionEntries = server.createProtectionEntries(peList);