test_class.declarator: clock = new Clock.Virtual()
test_class.modifier: private final
test_class.original_string: private final Clock clock = new Clock.Virtual();
test_class.type: Clock
test_class.var_name: clock
test_class.declarator: refreshCallback = new RecordingRunnable()
test_class.modifier: private final
test_class.original_string: private final RecordingRunnable refreshCallback = new RecordingRunnable();
test_class.type: RecordingRunnable
test_class.var_name: refreshCallback
test_class.declarator: policy = new RefreshOnReadPolicy(clock, TimeUnit.SECONDS, 1)
test_class.modifier: private final
test_class.original_string: private final RefreshOnReadPolicy policy = new RefreshOnReadPolicy(clock, TimeUnit.SECONDS, 1);
test_class.type: RefreshOnReadPolicy
test_class.var_name: policy
test_class.declarator: refreshDelta = TimeUnit.SECONDS.toMillis(1) + 1
test_class.modifier: private final
test_class.original_string: private final long refreshDelta = TimeUnit.SECONDS.toMillis(1) + 1;
test_class.type: long
test_class.var_name: refreshDelta
test_class.file: oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/search/update/RefreshOnReadPolicyTest.java
test_class.identifier: RefreshOnReadPolicyTest
test_case.body: @Test
      public void noRefreshOnReadIfNotUpdated() throws Exception{
          policy.refreshOnReadIfRequired(refreshCallback);
          refreshCallback.assertNotInvokedAndReset();
      }
test_case.class_method_signature: RefreshOnReadPolicyTest.noRefreshOnReadIfNotUpdated()
test_case.full_signature: @Test public void noRefreshOnReadIfNotUpdated()
test_case.identifier: noRefreshOnReadIfNotUpdated
test_case.invocations: refreshOnReadIfRequired assertNotInvokedAndReset
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void noRefreshOnReadIfNotUpdated()
focal_class.declarator: dirty = new AtomicBoolean()
focal_class.modifier: private final
focal_class.original_string: private final AtomicBoolean dirty = new AtomicBoolean();
focal_class.type: AtomicBoolean
focal_class.var_name: dirty
focal_class.declarator: lock = new Object()
focal_class.modifier: private final
focal_class.original_string: private final Object lock = new Object();
focal_class.type: Object
focal_class.var_name: lock
focal_class.declarator: clock
focal_class.modifier: private final
focal_class.original_string: private final Clock clock;
focal_class.type: Clock
focal_class.var_name: clock
focal_class.declarator: refreshDelta
focal_class.modifier: private final
focal_class.original_string: private final long refreshDelta;
focal_class.type: long
focal_class.var_name: refreshDelta
focal_class.declarator: lastRefreshTime
focal_class.modifier: private volatile
focal_class.original_string: private volatile long lastRefreshTime;
focal_class.type: long
focal_class.var_name: lastRefreshTime
focal_class.file: oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/update/RefreshOnReadPolicy.java
focal_class.identifier: RefreshOnReadPolicy
focal_class.interfaces: implements ReaderRefreshPolicy, IndexUpdateListener
focal_class.class_method_signature: RefreshOnReadPolicy.RefreshOnReadPolicy(Clock clock, TimeUnit unit, long refreshDelta)
focal_class.full_signature: public  RefreshOnReadPolicy(Clock clock, TimeUnit unit, long refreshDelta)
focal_class.identifier: RefreshOnReadPolicy
focal_class.modifiers: public
focal_class.parameters: (Clock clock, TimeUnit unit, long refreshDelta)
focal_class.signature:  RefreshOnReadPolicy(Clock clock, TimeUnit unit, long refreshDelta)
focal_class.class_method_signature: RefreshOnReadPolicy.refreshOnReadIfRequired(Runnable refreshCallback)
focal_class.full_signature: @Override public void refreshOnReadIfRequired(Runnable refreshCallback)
focal_class.identifier: refreshOnReadIfRequired
focal_class.modifiers: @Override public
focal_class.parameters: (Runnable refreshCallback)
focal_class.return: void
focal_class.signature: void refreshOnReadIfRequired(Runnable refreshCallback)
focal_class.class_method_signature: RefreshOnReadPolicy.refreshOnWriteIfRequired(Runnable refreshCallback)
focal_class.full_signature: @Override public void refreshOnWriteIfRequired(Runnable refreshCallback)
focal_class.identifier: refreshOnWriteIfRequired
focal_class.modifiers: @Override public
focal_class.parameters: (Runnable refreshCallback)
focal_class.return: void
focal_class.signature: void refreshOnWriteIfRequired(Runnable refreshCallback)
focal_class.class_method_signature: RefreshOnReadPolicy.updated()
focal_class.full_signature: @Override public void updated()
focal_class.identifier: updated
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void updated()
focal_class.class_method_signature: RefreshOnReadPolicy.refreshWithLock(Runnable refreshCallback, boolean forceRefresh)
focal_class.full_signature: private void refreshWithLock(Runnable refreshCallback, boolean forceRefresh)
focal_class.identifier: refreshWithLock
focal_class.modifiers: private
focal_class.parameters: (Runnable refreshCallback, boolean forceRefresh)
focal_class.return: void
focal_class.signature: void refreshWithLock(Runnable refreshCallback, boolean forceRefresh)
focal_method.body: @Override
      public void refreshOnReadIfRequired(Runnable refreshCallback) {
          if (dirty.get()){
              refreshWithLock(refreshCallback, false);
          }
      }
focal_method.class_method_signature: RefreshOnReadPolicy.refreshOnReadIfRequired(Runnable refreshCallback)
focal_method.full_signature: @Override public void refreshOnReadIfRequired(Runnable refreshCallback)
focal_method.identifier: refreshOnReadIfRequired
focal_method.invocations: get refreshWithLock
focal_method.modifiers: @Override public
focal_method.parameters: (Runnable refreshCallback)
focal_method.return: void
focal_method.signature: void refreshOnReadIfRequired(Runnable refreshCallback)