AssetItem asset = repository.loadAssetByUUID( uuid );
log.info( "USER:" + repository.getSession().getUserID() + " CHANGING ASSET STATUS. Asset name, uuid: " + "[" + asset.getName() + ", " + asset.getUUID() + "]" + " to [" + newState + "]" );
if ( Contexts.isSessionContextActive() ) {
Identity.instance().checkPermission( new PackageUUIDType( asset.getPackage().getUUID() ),
RoleTypes.PACKAGE_DEVELOPER );
try {
RuleAsset ruleAsset = loadAsset( asset );
if ( ruleAsset.metaData.categories.length == 0 ) {
Identity.instance().checkPermission( new CategoryPathType( null ),
RoleTypes.ANALYST_READ );
} else {
// Check category permissions
boolean passed = false;
RuntimeException exception = null;
for ( String cat : ruleAsset.metaData.categories ) {
try {
Identity.instance().checkPermission( new CategoryPathType( cat ),
RoleTypes.ANALYST );
passed = true;
} catch ( RuntimeException e ) {
exception = e;
}
}
if ( !passed ) {
throw exception;
}
}
} catch ( RulesRepositoryException e ) {
// This was not a rule asset
} catch ( SerializableException e ) {
// This was not a rule asset
}
asset.updateState( newState );
}
} else {
if ( Contexts.isSessionContextActive() ) {
Identity.instance().checkPermission( new PackageUUIDType( uuid ),
RoleTypes.PACKAGE_DEVELOPER );
}
PackageItem pkg = repository.loadPackageByUUID( uuid );
log.info( "USER:" + repository.getSession().getUserID() + " CHANGING Package STATUS. Asset name, uuid: " + "[" + pkg.getName() + ", " + pkg.getUUID() + "]" + " to [" + newState + "]" );