package com.marklogic.client.modulesloader.xcc; import java.util.ArrayList; import java.util.List; import com.marklogic.xcc.ContentCapability; import com.marklogic.xcc.ContentPermission; /** * Simple implementation that expects permissions to be comma-delimited in the format * role1,capability1,role2,capability2,etc - just like when using mlcp. * */ public class CommaDelimitedPermissionsParser implements PermissionsParser { @Override public ContentPermission[] parsePermissions(String text) { List<ContentPermission> list = new ArrayList<ContentPermission>(); if (text != null && text.trim().length() > 0) { String[] tokens = text.split(","); for (int i = 0; i < tokens.length; i += 2) { String role = tokens[i]; list.add(new ContentPermission(parseCapability(tokens[i + 1]), role)); } } return list.toArray(new ContentPermission[] {}); } protected ContentCapability parseCapability(String capability) { if (capability.equals("execute")) { return ContentCapability.EXECUTE; } else if (capability.equals("insert")) { return ContentCapability.INSERT; } else if (capability.equals("update")) { return ContentCapability.UPDATE; } else if (capability.equals("read")) { return ContentCapability.READ; } throw new IllegalArgumentException("Unrecognized content capability: " + capability); } }