diff --git a/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java b/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java index f759ddb92..758800916 100644 --- a/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java +++ b/ccm-core/src/main/java/org/libreccm/imexport/ImportExport.java @@ -25,6 +25,7 @@ import org.libreccm.files.FileAccessException; import org.libreccm.files.FileAlreadyExistsException; import org.libreccm.files.FileDoesNotExistException; import org.libreccm.files.InsufficientPermissionsException; +import org.libreccm.security.Permission; import java.io.BufferedReader; import java.io.IOException; @@ -228,6 +229,23 @@ public class ImportExport { ); final List orderedNodes = treeManager .orderImExporters(tree); + + // Put the node for Permissions to the end of the list. + final EntityImExporterTreeNode permissionsNode = orderedNodes + .stream() + .filter(node -> node.getEntityImExporter().getEntityClass().equals(Permission.class)) + .findAny() + .orElseThrow( + () -> new UnexpectedErrorException( + String.format( + "There should be an ImExporter in the tree for " + + "%s, but it is not.", + Permission.class.getName() + ) + ) + ); + orderedNodes.remove(permissionsNode); + orderedNodes.add(permissionsNode); final ImportManifest manifest = createImportManifest(importName); diff --git a/ccm-core/src/main/java/org/libreccm/security/PermissionImExporter.java b/ccm-core/src/main/java/org/libreccm/security/PermissionImExporter.java index 28d856115..86653960f 100644 --- a/ccm-core/src/main/java/org/libreccm/security/PermissionImExporter.java +++ b/ccm-core/src/main/java/org/libreccm/security/PermissionImExporter.java @@ -54,7 +54,6 @@ public class PermissionImExporter extends AbstractEntityImExporter { @Override protected Set> getRequiredEntities() { return Set.of( - CcmObject.class, Role.class ); }