diff --git a/scm-webapp/src/main/java/sonia/scm/security/ApiKeyCollection.java b/scm-webapp/src/main/java/sonia/scm/security/ApiKeyCollection.java index 79d0b98191..528620604e 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/ApiKeyCollection.java +++ b/scm-webapp/src/main/java/sonia/scm/security/ApiKeyCollection.java @@ -31,6 +31,7 @@ import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; import java.util.ArrayList; import java.util.Collection; import java.util.function.Predicate; @@ -41,6 +42,7 @@ import static java.util.stream.Collectors.toList; @NoArgsConstructor(access = AccessLevel.PRIVATE) @Getter @XmlAccessorType(XmlAccessType.FIELD) +@XmlRootElement class ApiKeyCollection { private Collection keys; diff --git a/scm-webapp/src/main/java/sonia/scm/security/ApiKeyService.java b/scm-webapp/src/main/java/sonia/scm/security/ApiKeyService.java index ada0cd46e6..649ad4eb0f 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/ApiKeyService.java +++ b/scm-webapp/src/main/java/sonia/scm/security/ApiKeyService.java @@ -31,8 +31,8 @@ import org.apache.shiro.authc.credential.PasswordService; import org.apache.shiro.authz.AuthorizationException; import org.apache.shiro.util.ThreadContext; import sonia.scm.ContextEntry; -import sonia.scm.store.ConfigurationEntryStore; -import sonia.scm.store.ConfigurationEntryStoreFactory; +import sonia.scm.store.DataStore; +import sonia.scm.store.DataStoreFactory; import javax.inject.Inject; import java.security.SecureRandom; @@ -51,7 +51,7 @@ public class ApiKeyService { public static final int KEY_LENGTH = 20; - private final ConfigurationEntryStore store; + private final DataStore store; private final PasswordService passwordService; private final KeyGenerator keyGenerator; private final Supplier passphraseGenerator; @@ -60,11 +60,11 @@ public class ApiKeyService { private final Striped locks = Striped.readWriteLock(10); @Inject - ApiKeyService(ConfigurationEntryStoreFactory storeFactory, KeyGenerator keyGenerator, PasswordService passwordService, ApiKeyTokenHandler tokenHandler) { + ApiKeyService(DataStoreFactory storeFactory, KeyGenerator keyGenerator, PasswordService passwordService, ApiKeyTokenHandler tokenHandler) { this(storeFactory, passwordService, keyGenerator, tokenHandler, () -> random(KEY_LENGTH, 0, 0, true, true, null, new SecureRandom())); } - ApiKeyService(ConfigurationEntryStoreFactory storeFactory, PasswordService passwordService, KeyGenerator keyGenerator, ApiKeyTokenHandler tokenHandler, Supplier passphraseGenerator) { + ApiKeyService(DataStoreFactory storeFactory, PasswordService passwordService, KeyGenerator keyGenerator, ApiKeyTokenHandler tokenHandler, Supplier passphraseGenerator) { this.store = storeFactory.withType(ApiKeyCollection.class).withName("apiKeys").build(); this.passwordService = passwordService; this.keyGenerator = keyGenerator; diff --git a/scm-webapp/src/test/java/sonia/scm/security/ApiKeyServiceTest.java b/scm-webapp/src/test/java/sonia/scm/security/ApiKeyServiceTest.java index 2af6b9faea..21714c53c7 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/ApiKeyServiceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/ApiKeyServiceTest.java @@ -34,9 +34,9 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import sonia.scm.AlreadyExistsException; -import sonia.scm.store.ConfigurationEntryStore; -import sonia.scm.store.ConfigurationEntryStoreFactory; -import sonia.scm.store.InMemoryConfigurationEntryStoreFactory; +import sonia.scm.store.DataStore; +import sonia.scm.store.DataStoreFactory; +import sonia.scm.store.InMemoryDataStoreFactory; import java.util.function.Supplier; @@ -55,8 +55,8 @@ class ApiKeyServiceTest { Supplier passphraseGenerator = () -> Integer.toString(nextKey++); KeyGenerator keyGenerator = () -> Integer.toString(nextId++); ApiKeyTokenHandler tokenHandler = new ApiKeyTokenHandler(); - ConfigurationEntryStoreFactory storeFactory = new InMemoryConfigurationEntryStoreFactory(); - ConfigurationEntryStore store = storeFactory.withType(ApiKeyCollection.class).withName("apiKeys").build(); + DataStoreFactory storeFactory = new InMemoryDataStoreFactory(); + DataStore store = storeFactory.withType(ApiKeyCollection.class).withName("apiKeys").build(); ApiKeyService service = new ApiKeyService(storeFactory, passwordService, keyGenerator, tokenHandler, passphraseGenerator); @BeforeEach