- 19 Views
- 0 Comments
IBM FileNet P8 Dev & Admin
Retrieve Security && Default Instance Security for all Classes and sub Classes
FunMaster
- Post By FunMaster
- 1 week ago
import java.io.IOException;
import java.util.Iterator;
import javax.security.auth.Subject;
import com.filenet.api.admin.ClassDefinition;
import com.filenet.api.collection.AccessPermissionList;
import com.filenet.api.collection.ClassDefinitionSet;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.security.AccessPermission;
import com.filenet.api.util.UserContext;
public class ClassPermissionInspector {
private static Connection serverConnection = null;
static String currentClassName = null;
static String defGrantee = null;
static String defGranteeType = null;
static String defSource = null;
static String defAccess = null;
static String defInheritance = null;
static String defRights = null;
static String directGrantee = null;
static String directGranteeType = null;
static String directSource = null;
static String directAccess = null;
static String directInheritance = null;
static String directRights = null;
public static Connection initializeConnection() {
try {
if (serverConnection == null) {
String ceURL = "http://localhost:9080/wsi/FNCEWS40MTOM/";
String user = "adminUser";
String pass = "adminPass";
serverConnection = Factory.Connection.getConnection(ceURL);
Subject subject = UserContext.createSubject(serverConnection, user, pass, null);
UserContext.get().pushSubject(subject);
}
} catch (Exception e) {
e.printStackTrace();
}
return serverConnection;
}
public static void exploreSecurityOfClasses(String repository) throws IOException {
try {
Connection conn = initializeConnection();
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStore store = Factory.ObjectStore.fetchInstance(domain, repository, null);
System.out.println("Connected to Object Store: " + store.get_DisplayName());
System.out.println("Checking security settings for class definitions...");
ClassDefinitionSet classSet = store.get_RootClassDefinitions();
Iterator<?> rootIterator = classSet.iterator();
while (rootIterator.hasNext()) {
ClassDefinition classDef = (ClassDefinition) rootIterator.next();
currentClassName = classDef.get_DisplayName();
printClassMetadata(classDef);
printPermissions(classDef.get_DefaultInstancePermissions(), true);
printPermissions(classDef.get_Permissions(), false);
ClassDefinitionSet subClasses = classDef.get_ImmediateSubclassDefinitions();
if (!subClasses.isEmpty()) {
System.out.println("Exploring subclasses of " + currentClassName);
recurseSubclasses(subClasses);
}
}
System.out.println("Completed scanning all classes.");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void recurseSubclasses(ClassDefinitionSet subDefs) throws IOException {
Iterator<?> it = subDefs.iterator();
while (it.hasNext()) {
ClassDefinition subClass = (ClassDefinition) it.next();
currentClassName = subClass.get_DisplayName();
printClassMetadata(subClass);
printPermissions(subClass.get_DefaultInstancePermissions(), true);
printPermissions(subClass.get_Permissions(), false);
ClassDefinitionSet deeperSubs = subClass.get_ImmediateSubclassDefinitions();
if (!deeperSubs.isEmpty()) {
recurseSubclasses(deeperSubs);
}
}
}
private static void printPermissions(AccessPermissionList perms, boolean isDefault) {
Iterator<?> it = perms.iterator();
while (it.hasNext()) {
AccessPermission perm = (AccessPermission) it.next();
String grantee = perm.get_GranteeName();
String type = perm.get_GranteeType().toString();
String source = perm.get_PermissionSource().toString();
String access = perm.get_AccessType().toString();
String depth = perm.get_InheritableDepth().toString();
String rights = perm.get_AccessMask().toString();
if (isDefault) {
defGrantee = grantee;
defGranteeType = type;
defSource = source;
defAccess = access;
defInheritance = depth;
defRights = rights;
System.out.println("[Default] " + currentClassName + " => " + defGrantee + " | " + defAccess + " | " + defRights);
} else {
directGrantee = grantee;
directGranteeType = type;
directSource = source;
directAccess = access;
directInheritance = depth;
directRights = rights;
System.out.println("[Direct] " + currentClassName + " => " + directGrantee + " | " + directAccess + " | " + directRights);
}
}
}
private static void printClassMetadata(ClassDefinition classDef) {
System.out.println("Class: " + classDef.get_DisplayName());
System.out.println("Symbolic Name: " + classDef.get_SymbolicName());
System.out.println("Created By: " + classDef.get_Creator());
System.out.println("Owner: " + classDef.get_Owner());
System.out.println("Created On: " + classDef.get_DateCreated());
System.out.println("Modified By: " + classDef.get_LastModifier());
System.out.println("Last Modified: " + classDef.get_DateLastModified());
System.out.println("Is Hidden: " + classDef.get_IsHidden());
System.out.println("Is Persistent: " + classDef.get_IsPersistent());
System.out.println("Is System Owned: " + classDef.get_IsSystemOwned());
}
public static void main(String[] args) throws IOException {
exploreSecurityOfClasses("SampleObjectStore");
}
}
Login To Post Your Comment