test_class.declarator: embeddedApollo = new EmbeddedApollo()
test_class.modifier: @ClassRule
      public static
test_class.original_string: @ClassRule
      public static EmbeddedApollo embeddedApollo = new EmbeddedApollo();
test_class.type: EmbeddedApollo
test_class.var_name: embeddedApollo
test_class.declarator: configWrapper
test_class.modifier: private
test_class.original_string: private ApolloConfigWrapper configWrapper;
test_class.type: ApolloConfigWrapper
test_class.var_name: configWrapper
test_class.file: shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-provider/shardingsphere-governance-repository-apollo/src/test/java/org/apache/shardingsphere/governance/repository/apollo/wrapper/ApolloConfigWrapperTest.java
test_class.identifier: ApolloConfigWrapperTest
test_case.body: @Test
      public void assertAddChangeListener() throws InterruptedException, TimeoutException, ExecutionException {
          SettableFuture<ConfigChangeEvent> future = SettableFuture.create();
          ConfigChangeListener listener = future::set;
          configWrapper.addChangeListener(listener, Collections.singleton("test.children.2"));
          embeddedApollo.addOrModifyProperty("governance", "test.children.2", "value3");
          ConfigChangeEvent changeEvent = future.get(5, TimeUnit.SECONDS);
          assertTrue(changeEvent.isChanged("test.children.2"));
          assertThat(changeEvent.getChange("test.children.2").getOldValue(), is("value2"));
          assertThat(changeEvent.getChange("test.children.2").getNewValue(), is("value3"));
          assertThat(changeEvent.getChange("test.children.2").getChangeType(), is(PropertyChangeType.MODIFIED));
      }
test_case.class_method_signature: ApolloConfigWrapperTest.assertAddChangeListener()
test_case.full_signature: @Test public void assertAddChangeListener()
test_case.identifier: assertAddChangeListener
test_case.invocations: create addChangeListener singleton addOrModifyProperty get assertTrue isChanged assertThat getOldValue getChange is assertThat getNewValue getChange is assertThat getChangeType getChange is
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void assertAddChangeListener()
focal_class.declarator: APOLLO_KEY_APP_ID = "app.id"
focal_class.modifier: private static final
focal_class.original_string: private static final String APOLLO_KEY_APP_ID = "app.id";
focal_class.type: String
focal_class.var_name: APOLLO_KEY_APP_ID
focal_class.declarator: APOLLO_KEY_ENV = "env"
focal_class.modifier: private static final
focal_class.original_string: private static final String APOLLO_KEY_ENV = "env";
focal_class.type: String
focal_class.var_name: APOLLO_KEY_ENV
focal_class.declarator: apolloConfig
focal_class.modifier: private final
focal_class.original_string: private final Config apolloConfig;
focal_class.type: Config
focal_class.var_name: apolloConfig
focal_class.file: shardingsphere-governance/shardingsphere-governance-repository/shardingsphere-governance-repository-provider/shardingsphere-governance-repository-apollo/src/main/java/org/apache/shardingsphere/governance/repository/apollo/wrapper/ApolloConfigWrapper.java
focal_class.identifier: ApolloConfigWrapper
focal_class.class_method_signature: ApolloConfigWrapper.ApolloConfigWrapper(final String namespace, final GovernanceCenterConfiguration config, final ApolloProperties props)
focal_class.full_signature: public  ApolloConfigWrapper(final String namespace, final GovernanceCenterConfiguration config, final ApolloProperties props)
focal_class.identifier: ApolloConfigWrapper
focal_class.modifiers: public
focal_class.parameters: (final String namespace, final GovernanceCenterConfiguration config, final ApolloProperties props)
focal_class.signature:  ApolloConfigWrapper(final String namespace, final GovernanceCenterConfiguration config, final ApolloProperties props)
focal_class.class_method_signature: ApolloConfigWrapper.getProperty(final String key)
focal_class.full_signature: public String getProperty(final String key)
focal_class.identifier: getProperty
focal_class.modifiers: public
focal_class.parameters: (final String key)
focal_class.return: String
focal_class.signature: String getProperty(final String key)
focal_class.class_method_signature: ApolloConfigWrapper.addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_class.full_signature: public void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_class.identifier: addChangeListener
focal_class.modifiers: public
focal_class.parameters: (final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_class.return: void
focal_class.signature: void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_class.class_method_signature: ApolloConfigWrapper.addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys, final Set<String> interestedKeyPrefixes)
focal_class.full_signature: public void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys, final Set<String> interestedKeyPrefixes)
focal_class.identifier: addChangeListener
focal_class.modifiers: public
focal_class.parameters: (final ConfigChangeListener listener, final Set<String> interestedKeys, final Set<String> interestedKeyPrefixes)
focal_class.return: void
focal_class.signature: void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys, final Set<String> interestedKeyPrefixes)
focal_method.body: public void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys) {
          apolloConfig.addChangeListener(listener, interestedKeys);
      }
focal_method.class_method_signature: ApolloConfigWrapper.addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_method.full_signature: public void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_method.identifier: addChangeListener
focal_method.invocations: addChangeListener
focal_method.modifiers: public
focal_method.parameters: (final ConfigChangeListener listener, final Set<String> interestedKeys)
focal_method.return: void
focal_method.signature: void addChangeListener(final ConfigChangeListener listener, final Set<String> interestedKeys)