Make ServerRuntimeContext.getStorageProvider generic
diff --git a/server/core/src/main/java/org/apache/vysper/storage/OpenStorageProviderRegistry.java b/server/core/src/main/java/org/apache/vysper/storage/OpenStorageProviderRegistry.java
index 4e2c25b..01d6313 100644
--- a/server/core/src/main/java/org/apache/vysper/storage/OpenStorageProviderRegistry.java
+++ b/server/core/src/main/java/org/apache/vysper/storage/OpenStorageProviderRegistry.java
@@ -48,8 +48,9 @@
storageServices.putAll(entries);
}
- public StorageProvider retrieve(Class<? extends StorageProvider> clazz) {
- return storageServices.get(clazz);
+ @SuppressWarnings("unchecked")
+ public <T extends StorageProvider> T retrieve(Class<T> clazz) {
+ return (T) storageServices.get(clazz);
}
/**
diff --git a/server/core/src/main/java/org/apache/vysper/storage/StorageProviderRegistry.java b/server/core/src/main/java/org/apache/vysper/storage/StorageProviderRegistry.java
index 1644442..9b9114a 100644
--- a/server/core/src/main/java/org/apache/vysper/storage/StorageProviderRegistry.java
+++ b/server/core/src/main/java/org/apache/vysper/storage/StorageProviderRegistry.java
@@ -34,7 +34,7 @@
* @param clazz a class implementing StorageProvider
* @return the fully initialized storage provider
*/
- StorageProvider retrieve(Class<? extends StorageProvider> clazz);
+ <T extends StorageProvider> T retrieve(Class<T> clazz);
/**
* adds a storage provider implementation to the registry
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
index 4abcada..461fd77 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
@@ -262,7 +262,7 @@
registry.setResourcePriority(resourceId, presenceStanza.getPrioritySafe());
// check for pending offline stored stanzas, and send them out
- OfflineStorageProvider offlineProvider = (OfflineStorageProvider) serverRuntimeContext
+ OfflineStorageProvider offlineProvider = serverRuntimeContext
.getStorageProvider(OfflineStorageProvider.class);
if (offlineProvider == null) {
logger.warn("No Offline Storage Provider configured");
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataModule.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataModule.java
index efa320a..91faa6f 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataModule.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataModule.java
@@ -49,7 +49,7 @@
public void initialize(ServerRuntimeContext serverRuntimeContext) {
super.initialize(serverRuntimeContext);
- PrivateDataPersistenceManager persistenceManager = (PrivateDataPersistenceManager) serverRuntimeContext
+ PrivateDataPersistenceManager persistenceManager = serverRuntimeContext
.getStorageProvider(PrivateDataPersistenceManager.class);
if (persistenceManager == null) {
logger.error("no PrivateDataPersistenceManager found");
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempModule.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempModule.java
index d7e68d3..20810f0 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempModule.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempModule.java
@@ -49,7 +49,7 @@
public void initialize(ServerRuntimeContext serverRuntimeContext) {
super.initialize(serverRuntimeContext);
- VcardTempPersistenceManager persistenceManager = (VcardTempPersistenceManager) serverRuntimeContext
+ VcardTempPersistenceManager persistenceManager = serverRuntimeContext
.getStorageProvider(VcardTempPersistenceManager.class);
if (persistenceManager == null) {
logger.error("no VcardTempPersistenceManager found");
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0077_inbandreg/InBandRegistrationHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0077_inbandreg/InBandRegistrationHandler.java
index 0987bb9..1f39b8a 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0077_inbandreg/InBandRegistrationHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0077_inbandreg/InBandRegistrationHandler.java
@@ -116,7 +116,7 @@
String password = passwordElm.getInnerText().getText();
if(password.trim().length() == 0) throw new XMLSemanticError("Invalid password");
- AccountManagement accountManagement = (AccountManagement) serverRuntimeContext.getStorageProvider(AccountManagement.class);
+ AccountManagement accountManagement = serverRuntimeContext.getStorageProvider(AccountManagement.class);
Entity user;
if(username.contains("@")) {
user = EntityImpl.parse(username);
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java
index ea2212c..7bd7754 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java
@@ -133,7 +133,7 @@
public AdhocCommandHandler getCommandHandler(String commandNode, Entity executingUser) {
if (executingUser == null) return null;
- final AccountManagement accountManagement = (AccountManagement)serverRuntimeContext.getStorageProvider(AccountManagement.class);
+ final AccountManagement accountManagement = serverRuntimeContext.getStorageProvider(AccountManagement.class);
final ResourceRegistry resourceRegistry = serverRuntimeContext.getResourceRegistry();
if (!admins.contains(executingUser.getBareJID())) {
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
index a1b8610..cc3081c 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
@@ -89,7 +89,7 @@
protected List<Stanza> handleGet(IQStanza stanza, ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
ResourceRegistry registry = serverRuntimeContext.getResourceRegistry();
- RosterManager rosterManager = (RosterManager) serverRuntimeContext.getStorageProvider(RosterManager.class);
+ RosterManager rosterManager = serverRuntimeContext.getStorageProvider(RosterManager.class);
if (rosterManager == null) {
return handleCannotRetrieveRoster(stanza, sessionContext);
@@ -131,7 +131,7 @@
@SpecCompliant(spec = "rfc3921bis-08", section = "2.5", status = FINISHED, coverage = COMPLETE, comment = "only calling from here") })
@Override
protected List<Stanza> handleSet(IQStanza stanza, ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
- RosterManager rosterManager = (RosterManager) serverRuntimeContext.getStorageProvider(RosterManager.class);
+ RosterManager rosterManager = serverRuntimeContext.getStorageProvider(RosterManager.class);
if (rosterManager == null) {
return handleCannotRetrieveRoster(stanza, sessionContext);
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManagerUtils.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManagerUtils.java
index 6e1e3c1..2b480b7 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManagerUtils.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManagerUtils.java
@@ -38,7 +38,7 @@
SessionContext sessionContext) {
RosterManager rosterManager;
try {
- rosterManager = (RosterManager) serverRuntimeContext.getStorageProvider(RosterManager.class);
+ rosterManager = serverRuntimeContext.getStorageProvider(RosterManager.class);
} catch (Exception e) {
// System.err.println("failed to retrieve roster manager for session id = " + sessionContext.getSessionId());
String sessionId = sessionContext == null ? "NO_SESSION" : sessionContext.getSessionId();
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
index 439a6c3..56a7475 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
@@ -260,6 +260,7 @@
* @param name
* @return
*/
+ @Override
public ServerRuntimeContextService getServerRuntimeContextService(String name) {
return serverRuntimeContextServiceMap.get(name);
}
@@ -279,7 +280,7 @@
* @param clazz
* @return
*/
- public StorageProvider getStorageProvider(Class<? extends StorageProvider> clazz) {
+ public <T extends StorageProvider> T getStorageProvider(Class<T> clazz) {
return storageProviderRegistry.retrieve(clazz);
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
index 88ebbb3..13a4c90 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
@@ -71,7 +71,7 @@
ServerRuntimeContextService getServerRuntimeContextService(String name);
- StorageProvider getStorageProvider(Class<? extends StorageProvider> clazz);
+ <T extends StorageProvider> T getStorageProvider(Class<T> clazz);
void registerComponent(Component component);
diff --git a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
index 71f4422..1aaa388 100644
--- a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
+++ b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
@@ -105,9 +105,9 @@
processor.addHandler(new MUCIqAdminHandler(conference));
stanzaProcessor = processor;
- RoomStorageProvider roomStorageProvider = (RoomStorageProvider) serverRuntimeContext
+ RoomStorageProvider roomStorageProvider = serverRuntimeContext
.getStorageProvider(RoomStorageProvider.class);
- OccupantStorageProvider occupantStorageProvider = (OccupantStorageProvider) serverRuntimeContext
+ OccupantStorageProvider occupantStorageProvider = serverRuntimeContext
.getStorageProvider(OccupantStorageProvider.class);
if (roomStorageProvider == null) {
diff --git a/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java b/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
index fca334c..9ae9448 100644
--- a/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
+++ b/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
@@ -120,9 +120,9 @@
fullDomain = EntityUtils.createComponentDomain(subdomain, serverRuntimeContext);
- CollectionNodeStorageProvider collectionNodeStorageProvider = (CollectionNodeStorageProvider) serverRuntimeContext
+ CollectionNodeStorageProvider collectionNodeStorageProvider = serverRuntimeContext
.getStorageProvider(CollectionNodeStorageProvider.class);
- LeafNodeStorageProvider leafNodeStorageProvider = (LeafNodeStorageProvider) serverRuntimeContext
+ LeafNodeStorageProvider leafNodeStorageProvider = serverRuntimeContext
.getStorageProvider(LeafNodeStorageProvider.class);
if (collectionNodeStorageProvider == null) {
diff --git a/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java b/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java
index 4d63419..96d4390 100644
--- a/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java
+++ b/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5IntegrationTest.java
@@ -202,7 +202,7 @@
server.start();
System.out.println("vysper server is running...");
- RosterManager rosterManager = (RosterManager) server.getServerRuntimeContext()
+ RosterManager rosterManager = server.getServerRuntimeContext()
.getStorageProvider(RosterManager.class);
rosterManager.addContact(USER1, new RosterItem(USER2, SubscriptionType.BOTH));
rosterManager.addContact(USER2, new RosterItem(USER1, SubscriptionType.BOTH));