private RepositoryService setupRepositoryViaMidPointHome(ConnectionOptions options) { log.info("Initializing repository using midpoint home"); System.setProperty(MIDPOINT_SILENT_PROPERTY_NAME, "true"); String midpointHome = options.getMidpointHome(); String jdbcUrl = options.getUrl(); String jdbcUsername = options.getUsername(); String jdbcPassword = getPassword(options); System.setProperty(MIDPOINT_HOME_OPTION, midpointHome); InitializationBeanPostprocessor postprocessor = new InitializationBeanPostprocessor(); postprocessor.setJdbcUrl(jdbcUrl); postprocessor.setJdbcUsername(jdbcUsername); postprocessor.setJdbcPassword(jdbcPassword); GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.addBeanFactoryPostProcessor(beanFactory -> beanFactory.addBeanPostProcessor(postprocessor)); ctx.load(CTX_NINJA); ctx.load(CTX_MIDPOINT); ctx.refresh(); context = ctx; return context.getBean(REPOSITORY_SERVICE_BEAN, RepositoryService.class); }
@Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (jdbcUrl == null) { return bean; } if (!(bean instanceof MidpointConfiguration)) { return bean; } MidpointConfiguration config = (MidpointConfiguration) bean; Configuration repositoryConfig = config.getConfiguration(MidpointConfiguration.REPOSITORY_CONFIGURATION); repositoryConfig.setProperty(SqlRepositoryConfiguration.PROPERTY_DATABASE, getDatabase(jdbcUrl)); repositoryConfig.setProperty(SqlRepositoryConfiguration.PROPERTY_JDBC_URL, jdbcUrl); repositoryConfig.setProperty(SqlRepositoryConfiguration.PROPERTY_JDBC_USERNAME, jdbcUsername); repositoryConfig.setProperty(SqlRepositoryConfiguration.PROPERTY_JDBC_PASSWORD, jdbcPassword); return config; }