/** Creates the actions. */ @Override public void createActions(MigrationContext ctx) throws MigrationException { // Config fragments for (IConfigFragment fragment : ctx.getMigrationData().get(SecurityMigrator.class).getConfigFragments()) { if (fragment instanceof ApplicationPolicyBean) { try { SecurityDomainBean appPolicy = migrateAppPolicy((ApplicationPolicyBean) fragment, ctx); ctx.getActions().addAll(createSecurityDomainCliAction(appPolicy)); } catch (CliScriptException e) { throw new MigrationException( "Migration of application-policy failed: " + e.getMessage(), e); } continue; } throw new MigrationException( "Config fragment unrecognized by " + this.getClass().getSimpleName() + ": " + fragment); } // Files to copy File as5profileDir = getGlobalConfig().getAS5Config().getProfileDir(); String as7Dir = getGlobalConfig().getAS7Config().getDir(); for (String fileName : this.fileNames) { File src; try { // TODO: MIGR-54 The paths in AS 5 config relate to some base dir. Find out which and use // that, instead of searching. // Then, create the actions directly in the code creating this "files to copy" // collection. src = Utils.searchForFile(fileName, as5profileDir).iterator().next(); } catch (CopyException ex) { // throw new ActionException("Failed copying a security file: " + ex.getMessage(), ex); // Some files referenced in security may not exist. (?) log.warn("Couldn't find file referenced in AS 5 security config: " + fileName); continue; } File target = Utils.createPath(as7Dir, "standalone", "configuration", src.getName()); // Default value for overwrite => false ctx.getActions().add(new CopyFileAction(this.getClass(), src, target, false)); } }
/** Loads the AS 5 data. */ @Override public void loadAS5Data(MigrationContext ctx) throws LoadMigrationException { try { File file = new File(getGlobalConfig().getAS5Config().getConfDir(), "login-config.xml"); if (!file.canRead()) { throw new LoadMigrationException("Can't read: " + file.getAbsolutePath()); } Unmarshaller unmarshaller = JAXBContext.newInstance(SecurityAS5Bean.class).createUnmarshaller(); SecurityAS5Bean securityAS5 = (SecurityAS5Bean) unmarshaller.unmarshal(file); MigrationData mData = new MigrationData(); mData.getConfigFragments().addAll(securityAS5.getApplicationPolicies()); ctx.getMigrationData().put(SecurityMigrator.class, mData); } catch (JAXBException e) { throw new LoadMigrationException(e); } }