class GovernedAssetHandler {

    public List<GovernedAsset> getGovernedAssets(String userId, List<String> entityTypes, Integer offset, Integer pageSize)
            throws UserNotAuthorizedException, PropertyServerException, InvalidParameterException {

        String methodName = "getGovernedAssets";
        invalidParameterHandler.validateUserId(userId, methodName);

        List<EntityDetail> response = new ArrayList<>();

        if (CollectionUtils.isEmpty(entityTypes)) {
            response = repositoryHandler.getEntitiesForClassificationType(userId, null, SECURITY_TAG, offset, pageSize, methodName);
        } else {
            for (String typeName : entityTypes) {
                TypeDef typeDefByName = repositoryHelper.getTypeDefByName(userId, typeName);
                if (typeDefByName != null && typeDefByName.getGUID() != null) {
                    response.addAll(repositoryHandler.getEntitiesForClassificationType(userId, typeDefByName.getGUID(), SECURITY_TAG, offset, pageSize, methodName));
                }
            }
        }

        return convertGovernedAssets(userId, response);
    }

    public  GovernedAssetHandler(String serviceName, String serverName, InvalidParameterHandler invalidParameterHandler,
                                RepositoryHandler repositoryHandler, OMRSRepositoryHelper repositoryHelper, RepositoryErrorHandler errorHandler,
                                List<String> supportedZones);

}