test_class.declarator: LOCK_CONFIGURATION = new LockConfiguration(now(),"name", Duration.of(5, ChronoUnit.MINUTES), Duration.ZERO)
test_class.modifier: private static final
test_class.original_string: private static final LockConfiguration LOCK_CONFIGURATION = new LockConfiguration(now(),"name", Duration.of(5, ChronoUnit.MINUTES), Duration.ZERO);
test_class.type: LockConfiguration
test_class.var_name: LOCK_CONFIGURATION
test_class.declarator: LOCK_EXCEPTION = new LockException("Test")
test_class.modifier: private static final
test_class.original_string: private static final LockException LOCK_EXCEPTION = new LockException("Test");
test_class.type: LockException
test_class.var_name: LOCK_EXCEPTION
test_class.declarator: storageAccessor = mock(StorageAccessor.class)
test_class.modifier: private final
test_class.original_string: private final StorageAccessor storageAccessor = mock(StorageAccessor.class);
test_class.type: StorageAccessor
test_class.var_name: storageAccessor
test_class.declarator: lockProvider = new StorageBasedLockProvider(storageAccessor)
test_class.modifier: private final
test_class.original_string: private final StorageBasedLockProvider lockProvider = new StorageBasedLockProvider(storageAccessor);
test_class.type: StorageBasedLockProvider
test_class.var_name: lockProvider
test_class.file: shedlock-core/src/test/java/net/javacrumbs/shedlock/support/StorageBasedLockProviderTest.java
test_class.identifier: StorageBasedLockProviderTest
test_case.body: @Test
      void shouldRethrowExceptionFromInsert() {
          when(storageAccessor.insertRecord(LOCK_CONFIGURATION)).thenThrow(LOCK_EXCEPTION);
          assertThatThrownBy(() -> lockProvider.lock(LOCK_CONFIGURATION)).isSameAs(LOCK_EXCEPTION);
      }
test_case.class_method_signature: StorageBasedLockProviderTest.shouldRethrowExceptionFromInsert()
test_case.full_signature: @Test void shouldRethrowExceptionFromInsert()
test_case.identifier: shouldRethrowExceptionFromInsert
test_case.invocations: thenThrow when insertRecord isSameAs assertThatThrownBy lock
test_case.modifiers: @Test
test_case.parameters: ()
test_case.return: void
test_case.signature: void shouldRethrowExceptionFromInsert()
focal_class.declarator: storageAccessor
focal_class.modifier: @NonNull
      private final
focal_class.original_string: @NonNull
      private final StorageAccessor storageAccessor;
focal_class.type: StorageAccessor
focal_class.var_name: storageAccessor
focal_class.declarator: lockRecordRegistry = new LockRecordRegistry()
focal_class.modifier: private final
focal_class.original_string: private final LockRecordRegistry lockRecordRegistry = new LockRecordRegistry();
focal_class.type: LockRecordRegistry
focal_class.var_name: lockRecordRegistry
focal_class.file: shedlock-core/src/main/java/net/javacrumbs/shedlock/support/StorageBasedLockProvider.java
focal_class.identifier: StorageBasedLockProvider
focal_class.interfaces: implements LockProvider
focal_class.class_method_signature: StorageBasedLockProvider.StorageBasedLockProvider(@NonNull StorageAccessor storageAccessor)
focal_class.full_signature: protected  StorageBasedLockProvider(@NonNull StorageAccessor storageAccessor)
focal_class.identifier: StorageBasedLockProvider
focal_class.modifiers: protected
focal_class.parameters: (@NonNull StorageAccessor storageAccessor)
focal_class.signature:  StorageBasedLockProvider(@NonNull StorageAccessor storageAccessor)
focal_class.class_method_signature: StorageBasedLockProvider.clearCache()
focal_class.full_signature: public void clearCache()
focal_class.identifier: clearCache
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void clearCache()
focal_class.class_method_signature: StorageBasedLockProvider.lock(@NonNull LockConfiguration lockConfiguration)
focal_class.full_signature: @Override @NonNull public Optional<SimpleLock> lock(@NonNull LockConfiguration lockConfiguration)
focal_class.identifier: lock
focal_class.modifiers: @Override @NonNull public
focal_class.parameters: (@NonNull LockConfiguration lockConfiguration)
focal_class.return: Optional<SimpleLock>
focal_class.signature: Optional<SimpleLock> lock(@NonNull LockConfiguration lockConfiguration)
focal_class.class_method_signature: StorageBasedLockProvider.doLock(LockConfiguration lockConfiguration)
focal_class.full_signature: protected boolean doLock(LockConfiguration lockConfiguration)
focal_class.identifier: doLock
focal_class.modifiers: protected
focal_class.parameters: (LockConfiguration lockConfiguration)
focal_class.return: boolean
focal_class.signature: boolean doLock(LockConfiguration lockConfiguration)
focal_method.body: @Override
      @NonNull
      public Optional<SimpleLock> lock(@NonNull LockConfiguration lockConfiguration) {
          boolean lockObtained = doLock(lockConfiguration);
          if (lockObtained) {
              return Optional.of(new StorageLock(lockConfiguration, storageAccessor));
          } else {
              return Optional.empty();
          }
      }
focal_method.class_method_signature: StorageBasedLockProvider.lock(@NonNull LockConfiguration lockConfiguration)
focal_method.full_signature: @Override @NonNull public Optional<SimpleLock> lock(@NonNull LockConfiguration lockConfiguration)
focal_method.identifier: lock
focal_method.invocations: doLock of empty
focal_method.modifiers: @Override @NonNull public
focal_method.parameters: (@NonNull LockConfiguration lockConfiguration)
focal_method.return: Optional<SimpleLock>
focal_method.signature: Optional<SimpleLock> lock(@NonNull LockConfiguration lockConfiguration)