do not deconstruct component, keep it in an usable state
diff --git a/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java b/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java
index 022e44d..f34b4ac 100644
--- a/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java
+++ b/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java
@@ -24,6 +24,7 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Arrays;
+import java.util.Objects;
import org.apache.sling.commons.crypto.PasswordProvider;
import org.jetbrains.annotations.NotNull;
@@ -74,7 +75,6 @@
@Deactivate
protected void deactivate() {
logger.debug("deactivating");
- this.configuration = null;
}
private char[] readPassword(final String path, final boolean fixPosixNewline) throws IOException {
@@ -106,6 +106,7 @@
@Override
public char @NotNull [] getPassword() {
+ Objects.requireNonNull(configuration, "Configuration must not be null");
try {
return readPassword(configuration.path(), configuration.fix_posixNewline());
} catch (IOException e) {
diff --git a/src/test/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderTest.java b/src/test/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderTest.java
index 5510451..bf38ed2 100644
--- a/src/test/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderTest.java
+++ b/src/test/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderTest.java
@@ -43,6 +43,14 @@
public ExpectedException exception = ExpectedException.none();
@Test
+ public void testMissingConfiguration() {
+ final FilePasswordProvider provider = new FilePasswordProvider();
+ exception.expect(NullPointerException.class);
+ exception.expectMessage("Configuration must not be null");
+ provider.getPassword();
+ }
+
+ @Test
public void testComponentLifecycle() throws IOException {
final FilePasswordProvider provider = new FilePasswordProvider();
{ // activate
@@ -59,6 +67,10 @@
provider.modified(configuration);
assertThat(provider.getPassword()).isEqualTo(PASSWORD_UTF8);
}
+ { // deactivate
+ provider.deactivate();
+ assertThat(provider.getPassword()).isEqualTo(PASSWORD_UTF8);
+ }
}
@Test