use of com.sun.identity.entitlement.ApplicationType in project OpenAM by OpenRock.
the class UmaPolicyApplicationListener method createApplication.
private void createApplication(String realm, String resourceServerId) {
Subject adminSubject = SubjectUtils.createSuperAdminSubject();
try {
Application application = applicationManager.getApplication(adminSubject, realm, resourceServerId);
if (application == null) {
ApplicationType applicationType = applicationTypeManagerWrapper.getApplicationType(adminSubject, UmaConstants.UMA_POLICY_APPLICATION_TYPE);
application = new Application(resourceServerId, applicationType);
application.setEntitlementCombiner(DenyOverride.class);
applicationManager.saveApplication(adminSubject, realm, application);
}
} catch (EntitlementException e) {
logger.error("Failed to create policy application", e);
}
}
use of com.sun.identity.entitlement.ApplicationType in project OpenAM by OpenRock.
the class UpgradeEntitlementSubConfigsStep method addMissingApplications.
/**
* Adds missing applications.
*
* @throws UpgradeException
* should the processing of creating new applications fail
*/
private void addMissingApplications() throws UpgradeException {
for (final Node applicationNode : missingApps) {
final Map<String, Set<String>> keyValueMap = parseAttributeValuePairTags(applicationNode);
final String name = getNodeAttributeValue(applicationNode, NAME);
UpgradeProgress.reportStart(AUDIT_NEW_APPLICATION_START, name);
keyValueMap.put(NAME, Collections.singleton(name));
final String typeName = retrieveSingleValue(APPLICATION_TYPE, keyValueMap);
final ApplicationType applicationType = getType(typeName);
if (applicationType == null) {
UpgradeProgress.reportEnd(AUDIT_UPGRADE_FAIL);
throw new UpgradeException("Unknown requested application type " + typeName);
}
try {
DEBUG.message("Saving new entitlement application: " + name);
entitlementService.storeApplication(createApplication(applicationType, name, keyValueMap));
UpgradeProgress.reportEnd(AUDIT_UPGRADE_SUCCESS);
} catch (EntitlementException eE) {
UpgradeProgress.reportEnd(AUDIT_UPGRADE_FAIL);
throw new UpgradeException(eE);
} catch (InstantiationException ie) {
UpgradeProgress.reportEnd(AUDIT_UPGRADE_FAIL);
throw new UpgradeException(ie);
} catch (IllegalAccessException iae) {
UpgradeProgress.reportEnd(AUDIT_UPGRADE_FAIL);
throw new UpgradeException(iae);
}
}
}
use of com.sun.identity.entitlement.ApplicationType in project OpenAM by OpenRock.
the class UpgradeEntitlementSubConfigsStep method initialize.
@Override
public void initialize() throws UpgradeException {
DEBUG.message("Initialising the upgrade entitlement sub-config step");
final Set<ApplicationType> existingApplicationTypes = entitlementService.getApplicationTypes();
final Set<String> existingResourceTypeUUIDs = getResourceTypeUUIDs(ROOT_REALM);
final Set<String> presentTypes = extract(existingApplicationTypes, new TypeNameExtractor());
final Set<String> presentApps = extract(entitlementService.getApplications(), new AppNameExtractor());
final Document entitlementDoc = getEntitlementXML();
final NodeList subConfigs = entitlementDoc.getElementsByTagName(SMSUtils.SUB_CONFIG);
for (int idx = 0; idx < subConfigs.getLength(); idx++) {
final Node subConfig = subConfigs.item(idx);
final String id = getNodeAttributeValue(subConfig, ID);
final String name = getNodeAttributeValue(subConfig, NAME);
if (APPLICATION_TYPE.equals(id)) {
captureMissingEntry(name, subConfig, presentTypes, missingApplicationTypes);
captureMissingActions(name, subConfig);
} else if (APPLICATION.equals(id)) {
captureMissingEntry(name, subConfig, presentApps, missingApps);
//app will be null if application needs to be created (see missing entries)
final Application app = getApplication(name);
final Map<String, Set<String>> subConfigAttrs = parseAttributeValuePairTags(subConfig);
captureDifferentSet(app == null ? null : app.getSubjects(), getSubjects(subConfigAttrs), changedSubjects, name);
captureDifferentSet(app == null ? null : app.getConditions(), getConditions(subConfigAttrs), changedConditions, name);
captureDifferentSet(app == null ? null : app.getResourceTypeUuids(), EntitlementUtils.getResourceTypeUUIDs(subConfigAttrs), changedResourceTypeUUIDs, name);
Set<String> configDescriptionSet = getDescription(subConfigAttrs);
String configDescription = null;
if (configDescriptionSet != null && !configDescriptionSet.isEmpty()) {
configDescription = configDescriptionSet.iterator().next();
}
captureDifferentString(app == null ? null : app.getDescription(), configDescription, changedDescriptions, name);
final EntitlementCombiner combiner = (app == null ? null : app.getEntitlementCombiner());
captureDifferentEntitlementCombiner(combiner == null ? null : combiner.getName(), getCombiner(subConfigAttrs), name);
} else if (RESOURCE_TYPE.equals(id)) {
// note that the name variable actually holds the UUID of the ResourceType
// the name is buried in the config.
//
captureMissingEntry(name, subConfig, existingResourceTypeUUIDs, missingResourceTypes);
}
}
}
use of com.sun.identity.entitlement.ApplicationType in project OpenAM by OpenRock.
the class UpgradeEntitlementSubConfigsStepTest method modifiedApplicationType.
@Test
public void modifiedApplicationType() throws Exception {
//application type type4 does not have the UPDATE action, so it needs to be upgraded
ApplicationType type = newType("type4");
type.getActions().remove("UPDATE");
mockTypes.add(type);
mockApplications.add(app);
when(entitlementService.getApplicationTypes()).thenReturn(mockTypes);
when(entitlementService.getApplications()).thenReturn(mockApplications);
upgradeStep.initialize();
assertThat(upgradeStep.isApplicable()).isTrue();
upgradeStep.perform();
verify(entitlementService, atMost(3)).getApplicationTypes();
verify(entitlementService, atMost(5)).getApplications();
verify(entitlementService).storeApplicationType(argThat(new TypeMatch()));
}
use of com.sun.identity.entitlement.ApplicationType in project OpenAM by OpenRock.
the class UpgradeEntitlementSubConfigsStepTest method setUp.
@BeforeMethod
public void setUp() throws IllegalAccessException, InstantiationException {
mockTypes = new HashSet<ApplicationType>(3);
final ApplicationType type1 = newType("type1");
final ApplicationType type2 = newType("type2");
final ApplicationType type3 = newType("type3");
mockTypes.addAll(Arrays.asList(type1, type2, type3));
this.type1 = type1;
mockApplications = new HashSet<Application>(3);
final Application application1 = newApplication("application1", type1);
final Application application2 = newApplication("application2", type1);
final Application application3 = newApplication("application3", type1);
mockApplications.addAll(Arrays.asList(application1, application2, application3));
entitlementService = mock(EntitlementConfiguration.class);
adminTokenAction = mock(PrivilegedAction.class);
connectionFactory = mock(ConnectionFactory.class);
resourceTypeConfiguration = mock(ResourceTypeConfiguration.class);
upgradeStep = new SafeUpgradeEntitlementSubConfigsStep(entitlementService, resourceTypeConfiguration, adminTokenAction, connectionFactory);
final HashSet<String> conditions = new HashSet<String>();
conditions.add("condition.entry.1");
conditions.add("condition.entry.2");
final HashSet<String> subjects = new HashSet<String>();
subjects.add("subject.entry.1");
subjects.add("subject.entry.2");
final HashSet<String> resources = new HashSet<String>();
resources.add("http://*");
resources.add("https://*");
app = newApplication("application4", type1);
app.setConditions(conditions);
app.setSubjects(subjects);
app.setEntitlementCombinerName(DEFAULT_COMBINER);
}
Aggregations