// EV: invoke private methods
//IProfile profile = initializeProfile();
//Collection<IInstallableUnit> installs = collectRoots(profile, rootsToInstall, true);
//Collection<IInstallableUnit> uninstalls = collectRoots(profile, rootsToUninstall, false);
IProfile profile = (IProfile)
invokePrivate("initializeProfile", new Class[0], new Object[0]);
Collection<IInstallableUnit> installs = (Collection<IInstallableUnit>)
invokePrivate("collectRoots",
new Class[]{IProfile.class, List.class, Boolean.TYPE},
new Object[]{profile, rootsToInstall, true});
Collection<IInstallableUnit> uninstalls = (Collection<IInstallableUnit>)
invokePrivate("collectRoots",
new Class[]{IProfile.class, List.class, Boolean.TYPE},
new Object[]{profile, rootsToUninstall, false});
// keep this result status in case there is a problem so we can report it to the user
boolean wasRoaming = Boolean.valueOf(profile.getProperty(IProfile.PROP_ROAMING)).booleanValue();
try {
// EV: invoke private methods
//updateRoamingProperties(profile);
invokePrivate("updateRoamingProperties",
new Class[]{IProfile.class}, new Object[]{profile});
// EV: pull in private fields
IProvisioningAgent targetAgent = (IProvisioningAgent)this.getPrivateField("targetAgent");
List<URI> metadataRepositoryLocations = (List<URI>)this.getPrivateField("metadataRepositoryLocations");
List<URI> artifactRepositoryLocations = (List<URI>)this.getPrivateField("artifactRepositoryLocations");
boolean followReferences = ((Boolean)this.getPrivateField("followReferences")).booleanValue();
String FOLLOW_ARTIFACT_REPOSITORY_REFERENCES = (String)this.getPrivateField("FOLLOW_ARTIFACT_REPOSITORY_REFERENCES");
ProvisioningContext context = new ProvisioningContext(targetAgent);
context.setMetadataRepositories(metadataRepositoryLocations.toArray(new URI[metadataRepositoryLocations.size()]));
context.setArtifactRepositories(artifactRepositoryLocations.toArray(new URI[artifactRepositoryLocations.size()]));
context.setProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES, String.valueOf(followReferences));
context.setProperty(FOLLOW_ARTIFACT_REPOSITORY_REFERENCES, String.valueOf(followReferences));
// EV: invoke private methods
//ProfileChangeRequest request = buildProvisioningRequest(profile, installs, uninstalls);
//printRequest(request);
ProfileChangeRequest request = (ProfileChangeRequest)
invokePrivate("buildProvisioningRequest",
new Class[]{IProfile.class, Collection.class, Collection.class},
new Object[]{profile, installs, uninstalls});
invokePrivate(
"printRequest",
new Class[]{ProfileChangeRequest.class},
new Object[]{request});
planAndExecute(profile, context, request);
} finally {
// if we were originally were set to be roaming and we changed it, change it back before we return
if (wasRoaming && !Boolean.valueOf(profile.getProperty(IProfile.PROP_ROAMING)).booleanValue())
// EV: invoke private method
//setRoaming(profile);
invokePrivate("setRoaming", new Class[]{IProfile.class}, new Object[]{profile});
}
}