From 44d066117d1f12bc270f03aed01f60f66f4bb0a0 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 16 May 2020 15:53:54 +0200 Subject: [PATCH] Utilize lombok in entity --- app/build.gradle | 4 +- .../ui/account/AccountsFragment.java | 15 ++- .../account/AccountsRecyclerViewAdapter.java | 6 +- .../messenger/ui/account/LoginViewModel.java | 4 +- data/build.gradle | 4 +- .../data/mapping/AccountMapping.java | 3 +- .../data/mapping/DirectChatMapping.java | 3 +- .../data/mapping/EntityCapsMapping.java | 3 +- .../data/mapping/GroupChatMapping.java | 3 +- .../data/mapping/MessageMapping.java | 3 +- .../MessagePayloadContainerMapping.java | 3 +- .../messenger/data/mapping/PeerMapping.java | 3 +- .../repository/XmppDirectChatRepository.java | 4 +- .../repository/XmppGroupChatRepository.java | 3 +- .../data/repository/XmppPeerRepository.java | 7 +- .../data/mapping/AccountMappingTest.java | 5 - .../data/mapping/EntityCapsMappingTest.java | 1 - .../data/mapping/PeerMappingTest.java | 1 - .../repository/AccountRepositoryTest.java | 1 - domain/build.gradle | 4 +- .../org/mercury_im/messenger/Messenger.java | 8 ++ .../data/repository/Repositories.java | 2 - .../store/MercuryEntityCapsStore.java | 3 +- .../messenger/usecase/LogIntoAccount.java | 6 +- .../messenger/usecase/RosterStoreBinder.java | 2 +- .../messenger/xmpp/MercuryConnection.java | 11 +- .../xmpp/XmppDirectMessageCenter.java | 24 ++-- .../messenger/xmpp/state/ConnectionState.java | 5 +- entity/build.gradle | 3 +- .../mercury_im/messenger/entity/Account.java | 43 ++----- .../mercury_im/messenger/entity/IAccount.java | 85 -------------- .../entity/caps/EntityCapsRecord.java | 13 +-- .../entity/caps/IEntityCapsRecord.java | 27 ----- .../messenger/entity/chat/Chat.java | 20 ++-- .../entity/chat/ChatPreferences.java | 46 +++----- .../messenger/entity/chat/DirectChat.java | 15 ++- .../messenger/entity/chat/GroupChat.java | 22 ++-- .../entity/chat/IChatPreferences.java | 60 ---------- .../messenger/entity/chat/IDirectChat.java | 62 ----------- .../messenger/entity/chat/IGroupChat.java | 87 --------------- .../entity/chat/INotificationPreferences.java | 27 ----- .../messenger/entity/contact/IPeer.java | 100 ----------------- .../messenger/entity/contact/Peer.java | 52 +++------ .../messenger/entity/event/ITypingEvent.java | 20 ---- .../messenger/entity/event/TypingEvent.java | 13 +-- .../messenger/entity/message/IMessage.java | 105 ------------------ .../entity/message/IMessageMetadata.java | 41 ------- .../entity/message/IPayloadContainer.java | 31 ------ .../messenger/entity/message/Message.java | 47 +++----- .../entity/message/MessageMetadata.java | 10 +- .../entity/message/PayloadContainer.java | 17 +-- .../entity/message/content/TextPayload.java | 28 +---- libs/Smack | 2 +- version.gradle | 3 + 54 files changed, 181 insertions(+), 939 deletions(-) delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/caps/IEntityCapsRecord.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/chat/IChatPreferences.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/chat/INotificationPreferences.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/event/ITypingEvent.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/message/IMessageMetadata.java delete mode 100644 entity/src/main/java/org/mercury_im/messenger/entity/message/IPayloadContainer.java diff --git a/app/build.gradle b/app/build.gradle index e5189a2..6d79661 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,8 +84,8 @@ dependencies { implementation "com.google.dagger:dagger:$daggerVersion" annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" - compileOnly 'org.projectlombok:lombok:1.18.10' - annotationProcessor 'org.projectlombok:lombok:1.18.10' + compileOnly "org.projectlombok:lombok:$lombokVersion" + annotationProcessor "org.projectlombok:lombok:$lombokVersion" // ViewModel and LiveData implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion" diff --git a/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsFragment.java b/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsFragment.java index d3b76dd..1abd5c6 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsFragment.java @@ -16,6 +16,12 @@ import com.google.android.material.floatingactionbutton.ExtendedFloatingActionBu import org.mercury_im.messenger.R; import org.mercury_im.messenger.entity.Account; +import org.mercury_im.messenger.xmpp.MercuryConnection; +import org.mercury_im.messenger.xmpp.state.ConnectionState; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; @@ -58,7 +64,14 @@ public class AccountsFragment extends Fragment { } private void observeViewModel() { - viewModel.getConnectionPool().observe(this, adapter::setValues); + viewModel.getConnectionPool().observe(this, pool -> { + Collection connectionStateList = pool.getConnectionStates().values(); + List connections = new ArrayList<>(connectionStateList.size()); + for (ConnectionState state : connectionStateList) { + connections.add(state.getConnection()); + } + adapter.setValues(connections); + }); } @Override diff --git a/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsRecyclerViewAdapter.java index 79688ba..567a73e 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/account/AccountsRecyclerViewAdapter.java @@ -68,10 +68,6 @@ public class AccountsRecyclerViewAdapter extends RecyclerView.Adapter viewModel.setAccountEnabled(account, checked)); - viewModel.getDisposable().add(connection.getState() - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(state -> holder.status.setText(state.toString()))); - setClickListenersOnViewHolder(holder); } @@ -116,7 +112,7 @@ public class AccountsRecyclerViewAdapter extends RecyclerView.Adapter { @Override public Account newEntity(AccountModel model) { - return new IAccount(); + return new Account(); } @Override diff --git a/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java b/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java index 54f1017..83d5dee 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java +++ b/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java @@ -2,7 +2,6 @@ package org.mercury_im.messenger.data.mapping; import org.mercury_im.messenger.data.model.DirectChatModel; import org.mercury_im.messenger.entity.chat.DirectChat; -import org.mercury_im.messenger.entity.chat.IDirectChat; import org.mercury_im.messenger.entity.contact.Peer; import javax.inject.Inject; @@ -18,7 +17,7 @@ public class DirectChatMapping extends AbstractMapping @Override public GroupChat newEntity(GroupChatModel model) { - return new IGroupChat(); + return new GroupChat(); } @Override diff --git a/data/src/main/java/org/mercury_im/messenger/data/mapping/MessageMapping.java b/data/src/main/java/org/mercury_im/messenger/data/mapping/MessageMapping.java index 6b12c60..e88fb33 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/mapping/MessageMapping.java +++ b/data/src/main/java/org/mercury_im/messenger/data/mapping/MessageMapping.java @@ -2,7 +2,6 @@ package org.mercury_im.messenger.data.mapping; import org.mercury_im.messenger.data.model.MessageModel; import org.mercury_im.messenger.data.model.MessagePayloadContainerModel; -import org.mercury_im.messenger.entity.message.IMessage; import org.mercury_im.messenger.entity.message.Message; import org.mercury_im.messenger.entity.message.PayloadContainer; @@ -22,7 +21,7 @@ public class MessageMapping extends AbstractMapping { @Override public Message newEntity(MessageModel model) { - return new IMessage(); + return new Message(); } @Override diff --git a/data/src/main/java/org/mercury_im/messenger/data/mapping/MessagePayloadContainerMapping.java b/data/src/main/java/org/mercury_im/messenger/data/mapping/MessagePayloadContainerMapping.java index 4c06ab3..d40d20f 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/mapping/MessagePayloadContainerMapping.java +++ b/data/src/main/java/org/mercury_im/messenger/data/mapping/MessagePayloadContainerMapping.java @@ -2,7 +2,6 @@ package org.mercury_im.messenger.data.mapping; import org.mercury_im.messenger.data.model.MessagePayloadModel; import org.mercury_im.messenger.data.model.MessagePayloadContainerModel; -import org.mercury_im.messenger.entity.message.IPayloadContainer; import org.mercury_im.messenger.entity.message.PayloadContainer; import org.mercury_im.messenger.entity.message.content.Payload; @@ -22,7 +21,7 @@ public class MessagePayloadContainerMapping extends AbstractMapping { @Override public Peer newEntity(PeerModel model) { - return new IPeer(); + return new Peer(); } @Override diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java index 08462a4..bd9a354 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java @@ -5,7 +5,6 @@ import org.mercury_im.messenger.data.model.DirectChatModel; import org.mercury_im.messenger.data.repository.dao.DirectChatDao; import org.mercury_im.messenger.util.Optional; import org.mercury_im.messenger.entity.chat.DirectChat; -import org.mercury_im.messenger.entity.chat.IDirectChat; import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.util.ThreadUtils; @@ -24,7 +23,6 @@ import io.reactivex.Single; import io.requery.Persistable; import io.requery.query.ResultDelegate; import io.requery.reactivex.ReactiveEntityStore; -import io.requery.reactivex.ReactiveResult; public class XmppDirectChatRepository extends RequeryRepository @@ -77,7 +75,7 @@ public class XmppDirectChatRepository @Override public Single getOrCreateChatWithPeer(Peer peer) { return getDirectChatByPeer(peer) - .switchIfEmpty(Single.just(new IDirectChat()) + .switchIfEmpty(Single.just(new DirectChat()) .map(chat -> { chat.setAccount(peer.getAccount()); chat.setPeer(peer); diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java index d43c316..f3f9c21 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java @@ -6,7 +6,6 @@ import org.mercury_im.messenger.data.repository.dao.GroupChatDao; import org.mercury_im.messenger.util.Optional; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.chat.GroupChat; -import org.mercury_im.messenger.entity.chat.IGroupChat; import org.mercury_im.messenger.util.ThreadUtils; import java.util.ArrayList; @@ -74,7 +73,7 @@ public class XmppGroupChatRepository @Override public Single getOrCreateGroupChat(Account account, String roomAddress) { return getGroupChatByRoomAddress(account, roomAddress) - .switchIfEmpty(Single.just(new IGroupChat()) + .switchIfEmpty(Single.just(new GroupChat()) .map(chat -> { chat.setAccount(account); chat.setRoomAddress(roomAddress); diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java index b4194d4..c575c89 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java @@ -3,7 +3,6 @@ package org.mercury_im.messenger.data.repository; import org.mercury_im.messenger.data.mapping.PeerMapping; import org.mercury_im.messenger.data.model.PeerModel; import org.mercury_im.messenger.entity.Account; -import org.mercury_im.messenger.entity.contact.IPeer; import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.entity.contact.SubscriptionDirection; import org.mercury_im.messenger.util.Optional; @@ -59,7 +58,7 @@ public class XmppPeerRepository return data().select(PeerModel.class) .where(PeerModel.ID.eq(peerId)) .get().observableResult() - .map(result -> new Optional<>(peerMapping.toEntity(result.firstOrNull(), new IPeer()))) + .map(result -> new Optional<>(peerMapping.toEntity(result.firstOrNull(), new Peer()))) .subscribeOn(subscriberScheduler()) .observeOn(observerScheduler()); } @@ -69,7 +68,7 @@ public class XmppPeerRepository return data().select(PeerModel.class) .where(PeerModel.ID.eq(peerId)) .get().maybe() - .map(model -> peerMapping.toEntity(model, new IPeer())) + .map(model -> peerMapping.toEntity(model, new Peer())) .subscribeOn(subscriberScheduler()) .observeOn(observerScheduler()); } @@ -107,7 +106,7 @@ public class XmppPeerRepository public Single getOrCreatePeer(Account account, String address) { return getPeerByAddress(account, address) .switchIfEmpty(Single - .just(new IPeer()) + .just(new Peer()) .map(peer -> { peer.setAccount(account); peer.setAddress(address); diff --git a/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java b/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java index b2bdb99..105c45c 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java @@ -4,14 +4,9 @@ import org.junit.Test; import org.mercury_im.messenger.data.di.DaggerMappingTestComponent; import org.mercury_im.messenger.data.model.AccountModel; import org.mercury_im.messenger.entity.Account; -import org.mercury_im.messenger.entity.IAccount; - -import java.lang.reflect.Field; import javax.inject.Inject; -import io.requery.proxy.EntityProxy; - import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertNotSame; diff --git a/data/src/test/java/org/mercury_im/messenger/data/mapping/EntityCapsMappingTest.java b/data/src/test/java/org/mercury_im/messenger/data/mapping/EntityCapsMappingTest.java index f684810..c4697d9 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/mapping/EntityCapsMappingTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/mapping/EntityCapsMappingTest.java @@ -4,7 +4,6 @@ import org.junit.Test; import org.mercury_im.messenger.data.di.DaggerMappingTestComponent; import org.mercury_im.messenger.data.model.EntityCapsModel; import org.mercury_im.messenger.entity.caps.EntityCapsRecord; -import org.mercury_im.messenger.entity.caps.IEntityCapsRecord; import javax.inject.Inject; diff --git a/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java b/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java index 84745ca..78a271c 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java @@ -4,7 +4,6 @@ import org.junit.Test; import org.mercury_im.messenger.data.di.DaggerMappingTestComponent; import org.mercury_im.messenger.data.model.AccountModel; import org.mercury_im.messenger.data.model.PeerModel; -import org.mercury_im.messenger.entity.contact.IPeer; import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.entity.contact.SubscriptionDirection; diff --git a/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java b/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java index 0aba3d7..38b69eb 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java @@ -4,7 +4,6 @@ import org.junit.Test; import org.mercury_im.messenger.data.di.DaggerInMemoryDatabaseComponent; import org.mercury_im.messenger.data.di.InMemoryDatabaseComponent; import org.mercury_im.messenger.entity.Account; -import org.mercury_im.messenger.entity.IAccount; import java.util.NoSuchElementException; import java.util.UUID; diff --git a/domain/build.gradle b/domain/build.gradle index 187c55a..45da3a3 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -21,8 +21,8 @@ dependencies { implementation "com.google.dagger:dagger:$daggerVersion" annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" - compileOnly 'org.projectlombok:lombok:1.18.10' - annotationProcessor 'org.projectlombok:lombok:1.18.10' + compileOnly "org.projectlombok:lombok:$lombokVersion" + annotationProcessor "org.projectlombok:lombok:$lombokVersion" // JUnit for testing testImplementation "junit:junit:$junitVersion" diff --git a/domain/src/main/java/org/mercury_im/messenger/Messenger.java b/domain/src/main/java/org/mercury_im/messenger/Messenger.java index 30cd819..94c37a7 100644 --- a/domain/src/main/java/org/mercury_im/messenger/Messenger.java +++ b/domain/src/main/java/org/mercury_im/messenger/Messenger.java @@ -1,6 +1,7 @@ package org.mercury_im.messenger; import org.mercury_im.messenger.data.repository.Repositories; +import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.xmpp.MercuryConnectionManager; import java.util.logging.Level; @@ -41,4 +42,11 @@ public class Messenger { .subscribe(connectionManager::registerConnections)); } + public Account createAccount(String username, String service, String password) { + Account account = new Account(); + account.setAddress(username + "@" + service); + account.setPassword(password); + return account; + } + } diff --git a/domain/src/main/java/org/mercury_im/messenger/data/repository/Repositories.java b/domain/src/main/java/org/mercury_im/messenger/data/repository/Repositories.java index bacdfd1..d302f23 100644 --- a/domain/src/main/java/org/mercury_im/messenger/data/repository/Repositories.java +++ b/domain/src/main/java/org/mercury_im/messenger/data/repository/Repositories.java @@ -1,7 +1,5 @@ package org.mercury_im.messenger.data.repository; -import org.mercury_im.messenger.entity.caps.EntityCapsRecord; - import javax.inject.Inject; import javax.inject.Singleton; diff --git a/domain/src/main/java/org/mercury_im/messenger/store/MercuryEntityCapsStore.java b/domain/src/main/java/org/mercury_im/messenger/store/MercuryEntityCapsStore.java index 10700a1..a87ed87 100644 --- a/domain/src/main/java/org/mercury_im/messenger/store/MercuryEntityCapsStore.java +++ b/domain/src/main/java/org/mercury_im/messenger/store/MercuryEntityCapsStore.java @@ -6,7 +6,6 @@ import org.jivesoftware.smackx.caps.cache.EntityCapsPersistentCache; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; import org.mercury_im.messenger.data.repository.EntityCapsRepository; import org.mercury_im.messenger.entity.caps.EntityCapsRecord; -import org.mercury_im.messenger.entity.caps.IEntityCapsRecord; import org.mercury_im.messenger.logging.Tags; import java.io.StringReader; @@ -34,7 +33,7 @@ public class MercuryEntityCapsStore implements EntityCapsPersistentCache { @Override public void addDiscoverInfoByNodePersistent(String nodeVer, DiscoverInfo info) { LOGGER.log(Level.INFO, "MercuryEntityCapsStore: addDiscoverInfoByNodePersistent: " + nodeVer); - EntityCapsRecord record = new IEntityCapsRecord(); + EntityCapsRecord record = new EntityCapsRecord(); record.setNodeVer(nodeVer); record.setXml(info.toXML().toString()); diff --git a/domain/src/main/java/org/mercury_im/messenger/usecase/LogIntoAccount.java b/domain/src/main/java/org/mercury_im/messenger/usecase/LogIntoAccount.java index 00662fd..e0dc829 100644 --- a/domain/src/main/java/org/mercury_im/messenger/usecase/LogIntoAccount.java +++ b/domain/src/main/java/org/mercury_im/messenger/usecase/LogIntoAccount.java @@ -50,14 +50,14 @@ public class LogIntoAccount { doAuthenticateIfNecessary(); return ConnectionResult.success; } catch (SASLErrorException e) { - LOGGER.log(Level.WARNING, "SASL Error while connecting to account " + connection.getAccountId(), e); + LOGGER.log(Level.WARNING, "SASL Error while connecting to account " + connection.getAccount().getId(), e); return ConnectionResult.credential_error; } catch (SmackException.ConnectionException e) { - LOGGER.log(Level.WARNING, "Connectivity error while connecting to account " + connection.getAccountId(), e); + LOGGER.log(Level.WARNING, "Connectivity error while connecting to account " + connection.getAccount().getId(), e); return ConnectionResult.server_error; } catch (IOException | XMPPException | SmackException | InterruptedException e) { - LOGGER.log(Level.WARNING, "Error connecting to account " + connection.getAccountId(), e); + LOGGER.log(Level.WARNING, "Error connecting to account " + connection.getAccount().getId(), e); return ConnectionResult.other_error; } } diff --git a/domain/src/main/java/org/mercury_im/messenger/usecase/RosterStoreBinder.java b/domain/src/main/java/org/mercury_im/messenger/usecase/RosterStoreBinder.java index 5874272..6e40009 100644 --- a/domain/src/main/java/org/mercury_im/messenger/usecase/RosterStoreBinder.java +++ b/domain/src/main/java/org/mercury_im/messenger/usecase/RosterStoreBinder.java @@ -24,7 +24,7 @@ public class RosterStoreBinder { public void setRosterStoreOn(MercuryConnection connection) { MercuryRosterStore store = - createRosterStore(connection.getAccountId(), accountRepository, peerRepository); + createRosterStore(connection.getAccount().getId(), accountRepository, peerRepository); Roster roster = Roster.getInstanceFor(connection.getConnection()); roster.setRosterStore(store); } diff --git a/domain/src/main/java/org/mercury_im/messenger/xmpp/MercuryConnection.java b/domain/src/main/java/org/mercury_im/messenger/xmpp/MercuryConnection.java index f291867..c91454e 100644 --- a/domain/src/main/java/org/mercury_im/messenger/xmpp/MercuryConnection.java +++ b/domain/src/main/java/org/mercury_im/messenger/xmpp/MercuryConnection.java @@ -28,18 +28,21 @@ public class MercuryConnection { private XMPPConnection connection; @Getter - private final UUID accountId; + private final Account account; private final BehaviorSubject state; public MercuryConnection(XMPPConnection connection, Account account) { this.connection = connection; - this.accountId = account.getId(); + this.account = account; - this.state = BehaviorSubject.createDefault(new ConnectionState(accountId, + this.state = BehaviorSubject.createDefault(new ConnectionState(account.getId(), this, ConnectivityState.disconnected, false, false)); } + public UUID getAccountId() { + return getAccount().getId(); + } public Observable observeConnection() { return state; @@ -78,7 +81,7 @@ public class MercuryConnection { connect(); ((AbstractXMPPConnection) getConnection()).login(); } catch (SASLErrorException e) { - throw new InvalidCredentialsException("Credentials of account " + accountId + " are invalid.", e); + throw new InvalidCredentialsException("Credentials of account " + account.getId() + " are invalid.", e); } catch (InterruptedException | XMPPException | SmackException | IOException e) { throw new AssertionError("Unexpected exception.", e); } diff --git a/domain/src/main/java/org/mercury_im/messenger/xmpp/XmppDirectMessageCenter.java b/domain/src/main/java/org/mercury_im/messenger/xmpp/XmppDirectMessageCenter.java index 35b8f30..dbe962e 100644 --- a/domain/src/main/java/org/mercury_im/messenger/xmpp/XmppDirectMessageCenter.java +++ b/domain/src/main/java/org/mercury_im/messenger/xmpp/XmppDirectMessageCenter.java @@ -4,6 +4,9 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.chat2.Chat; import org.jivesoftware.smack.chat2.ChatManager; import org.jivesoftware.smack.chat2.IncomingChatMessageListener; +import org.jivesoftware.smack.packet.MessageBuilder; +import org.jivesoftware.smack.packet.id.StandardStanzaIdSource; +import org.jivesoftware.smack.packet.id.UuidStanzaIdSource; import org.jivesoftware.smackx.sid.element.OriginIdElement; import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.impl.JidCreate; @@ -16,9 +19,8 @@ import org.mercury_im.messenger.data.repository.PeerRepository; import org.mercury_im.messenger.data.repository.Repositories; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.chat.DirectChat; -import org.mercury_im.messenger.entity.message.IMessage; -import org.mercury_im.messenger.entity.message.IMessageMetadata; import org.mercury_im.messenger.entity.message.Message; +import org.mercury_im.messenger.entity.message.MessageMetadata; import org.mercury_im.messenger.listener.IncomingDirectMessageListener; import java.util.LinkedHashSet; @@ -72,15 +74,15 @@ public class XmppDirectMessageCenter EntityBareJid peerAddress = JidCreate.entityBareFromOrThrowUnchecked(chat.getPeer().getAddress()); - org.jivesoftware.smack.packet.Message smackMessage = new org.jivesoftware.smack.packet.Message(); - smackMessage.setFrom(accountAddress); - smackMessage.setTo(peerAddress); - smackMessage.setType(org.jivesoftware.smack.packet.Message.Type.chat); + MessageBuilder messageBuilder = MessageBuilder.buildMessage() + .from(accountAddress) + .to(peerAddress) + .ofType(org.jivesoftware.smack.packet.Message.Type.chat); - String originId = OriginIdElement.addOriginId(smackMessage).getId(); - String legacyStanzaId = smackMessage.getStanzaId(); + String originId = OriginIdElement.addOriginId(messageBuilder).getId(); + String legacyStanzaId = messageBuilder.getStanzaId(); - IMessageMetadata metadata = new IMessageMetadata(); + MessageMetadata metadata = new MessageMetadata(); metadata.setLegacyStanzaId(legacyStanzaId); metadata.setOriginId(originId); @@ -89,7 +91,7 @@ public class XmppDirectMessageCenter Chat smackChat = chatManager.chatWith(peerAddress); return messageRepository.insertMessage(chat, message) .ignoreElement() - .andThen(Completable.fromAction(() -> smackChat.send(smackMessage))); + .andThen(Completable.fromAction(() -> smackChat.send(messageBuilder.build()))); } @Override @@ -112,7 +114,7 @@ public class XmppDirectMessageCenter // notify listeners .subscribe(chatEntity -> { for (IncomingDirectMessageListener listener : messageListeners) { - listener.onIncomingDirectMessage(account, chatEntity, new IMessage()); + listener.onIncomingDirectMessage(account, chatEntity, new Message()); } })); } diff --git a/domain/src/main/java/org/mercury_im/messenger/xmpp/state/ConnectionState.java b/domain/src/main/java/org/mercury_im/messenger/xmpp/state/ConnectionState.java index 374d363..c6e2d67 100644 --- a/domain/src/main/java/org/mercury_im/messenger/xmpp/state/ConnectionState.java +++ b/domain/src/main/java/org/mercury_im/messenger/xmpp/state/ConnectionState.java @@ -1,6 +1,7 @@ package org.mercury_im.messenger.xmpp.state; import org.jivesoftware.smack.XMPPConnection; +import org.mercury_im.messenger.xmpp.MercuryConnection; import java.util.UUID; @@ -13,7 +14,7 @@ import lombok.With; public class ConnectionState { UUID id; - XMPPConnection connection; + MercuryConnection connection; @With ConnectivityState connectivity; @With @@ -21,7 +22,7 @@ public class ConnectionState { @With boolean resumed; - public ConnectionState(UUID id, XMPPConnection connection, ConnectivityState connectivity, boolean authenticated, boolean resumed) { + public ConnectionState(UUID id, MercuryConnection connection, ConnectivityState connectivity, boolean authenticated, boolean resumed) { this.id = id; this.connection = connection; this.connectivity = connectivity; diff --git a/entity/build.gradle b/entity/build.gradle index 9029aa4..f8f77ed 100644 --- a/entity/build.gradle +++ b/entity/build.gradle @@ -1,7 +1,8 @@ apply plugin: 'java-library' dependencies { - + compileOnly "org.projectlombok:lombok:$lombokVersion" + annotationProcessor "org.projectlombok:lombok:$lombokVersion" } sourceCompatibility = "8" diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/Account.java b/entity/src/main/java/org/mercury_im/messenger/entity/Account.java index e1e52c2..cef9998 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/Account.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/Account.java @@ -2,40 +2,17 @@ package org.mercury_im.messenger.entity; import java.util.UUID; +import lombok.Data; + /** * User Account entity. - * - * An implementation of this entity can be found as {@link IAccount}. */ -public interface Account { - - UUID UNASSIGNED = UUID.fromString("00000000-0000-0000-0000-000000000000"); - - void setId(UUID id); - - UUID getId(); - - void setAddress(String address); - - String getAddress(); - - void setPassword(String password); - - String getPassword(); - - void setHost(String host); - - String getHost(); - - void setPort(int port); - - int getPort(); - - void setEnabled(boolean enabled); - - boolean isEnabled(); - - default String displayName() { - return getAddress(); - } +@Data +public class Account { + UUID id; + String address; + String password; + String host; + int port; + boolean enabled; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java b/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java deleted file mode 100644 index 7c22ac8..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.mercury_im.messenger.entity; - -import java.util.UUID; - -public class IAccount implements Account { - - protected UUID id; - protected String address; - protected String password; - protected String host; - protected int port; - protected boolean enabled; - - public IAccount() { - this(UUID.randomUUID()); - } - - public IAccount(UUID id) { - this.id = id; - } - - public static Account createUnassignedAccount() { - return new IAccount(Account.UNASSIGNED); - } - - @Override - public void setId(UUID id) { - this.id = id; - } - - @Override - public UUID getId() { - return id; - } - - @Override - public void setAddress(String address) { - this.address = address; - } - - @Override - public String getAddress() { - return address; - } - - @Override - public void setPassword(String password) { - this.password = password; - } - - @Override - public String getPassword() { - return password; - } - - @Override - public void setHost(String host) { - this.host = host; - } - - @Override - public String getHost() { - return host; - } - - @Override - public void setPort(int port) { - this.port = port; - } - - @Override - public int getPort() { - return port; - } - - @Override - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - @Override - public boolean isEnabled() { - return enabled; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/caps/EntityCapsRecord.java b/entity/src/main/java/org/mercury_im/messenger/entity/caps/EntityCapsRecord.java index bc3ad16..8a22d95 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/caps/EntityCapsRecord.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/caps/EntityCapsRecord.java @@ -1,12 +1,9 @@ package org.mercury_im.messenger.entity.caps; -public interface EntityCapsRecord { +import lombok.Data; - String getNodeVer(); - - void setNodeVer(String nodeVer); - - String getXml(); - - void setXml(String xml); +@Data +public class EntityCapsRecord { + String nodeVer; + String xml; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/caps/IEntityCapsRecord.java b/entity/src/main/java/org/mercury_im/messenger/entity/caps/IEntityCapsRecord.java deleted file mode 100644 index c740cf5..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/caps/IEntityCapsRecord.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.mercury_im.messenger.entity.caps; - -public class IEntityCapsRecord implements EntityCapsRecord { - - private String nodeVer; - private String xml; - - @Override - public String getNodeVer() { - return nodeVer; - } - - @Override - public void setNodeVer(String nodeVer) { - this.nodeVer = nodeVer; - } - - @Override - public String getXml() { - return xml; - } - - @Override - public void setXml(String xml) { - this.xml = xml; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java index a100aba..64df14d 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java @@ -4,22 +4,16 @@ import org.mercury_im.messenger.entity.Account; import java.util.UUID; +import lombok.Data; + /** * Generic interface defining shared properties of chats. * * Child interfaces of {@link Chat} are {@link DirectChat} and {@link GroupChat}. */ -public interface Chat { - - UUID getId(); - - void setId(UUID id); - - Account getAccount(); - - void setAccount(Account account); - - ChatPreferences getChatPreferences(); - - void setChatPreferences(ChatPreferences chatPreferences); +@Data +public abstract class Chat { + UUID id; + Account account; + ChatPreferences chatPreferences; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/ChatPreferences.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/ChatPreferences.java index f6aee3c..3f7aabd 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/ChatPreferences.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/ChatPreferences.java @@ -1,41 +1,21 @@ package org.mercury_im.messenger.entity.chat; +import lombok.Data; + /** * Interface that describes typical preferences in the context of a chat. - * - * An implementation can be found as {@link IChatPreferences}. */ -public interface ChatPreferences { +@Data +public class ChatPreferences { + NotificationPreferences notificationPreferences; + boolean typingNotificationsSupported; + boolean sendTypingNotificationsEnabled; + boolean readNotificationsSupported; + boolean sendReadNotificationsEnabled; - NotificationPreferences getNotificationPreference(); - - void setNotificationPreference(NotificationPreferences notificationPreferences); - - boolean isTypingNotificationsSupported(); - - void setTypingNotificationsSupported(boolean typingNotificationsSupported); - - boolean isSendTypingNotificationsEnabled(); - - void setSendTypingNotificationsEnabled(boolean sendTypingNotifications); - - boolean isReadNotificationsSupported(); - - void setReadNotificationsSupported(boolean readNotificationsSupported); - - boolean isSendReadNotifications(); - - void setSendReadNotifications(boolean sendReadNotifications); - - - interface NotificationPreferences { - - boolean isNotifyOnMessage(); - - void setNotifyOnMessage(boolean notify); - - boolean isNotifyOnMention(); - - void setNotifyOnMention(boolean notify); + @Data + public static class NotificationPreferences { + boolean notifyOnMessage; + boolean notifyOnMention; } } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/DirectChat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/DirectChat.java index b831e4a..533a111 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/DirectChat.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/DirectChat.java @@ -2,15 +2,14 @@ package org.mercury_im.messenger.entity.chat; import org.mercury_im.messenger.entity.contact.Peer; +import lombok.Data; +import lombok.EqualsAndHashCode; + /** * Interface that describes a direct chat between the user and another one. - * - * An implementation can be found in {@link IDirectChat}. */ -public interface DirectChat extends Chat { - - Peer getPeer(); - - void setPeer(Peer peer); - +@Data +@EqualsAndHashCode(callSuper = true) +public class DirectChat extends Chat { + Peer peer; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/GroupChat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/GroupChat.java index feae5dd..1105524 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/GroupChat.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/GroupChat.java @@ -4,22 +4,14 @@ import org.mercury_im.messenger.entity.contact.Peer; import java.util.Set; +import lombok.Data; + /** * An interface that describes a group chat entity. - * - * An implementation can be found as {@link IGroupChat}. */ -public interface GroupChat extends Chat { - - Set getParticipants(); - - void setParticipants(Set participants); - - String getRoomAddress(); - - void setRoomAddress(String roomAddress); - - String getRoomName(); - - void setRoomName(String roomName); +@Data +public class GroupChat extends Chat { + Set participants; + String roomAddress; + String roomName; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IChatPreferences.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IChatPreferences.java deleted file mode 100644 index adc1020..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IChatPreferences.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.mercury_im.messenger.entity.chat; - -public class IChatPreferences implements ChatPreferences { - - protected NotificationPreferences notificationPreferences; - protected boolean typingNotificationsSupported; - protected boolean sendTypingNotificationsEnabled; - protected boolean readNotificationsSupported; - protected boolean sendReadNotificationsEnabled; - - @Override - public NotificationPreferences getNotificationPreference() { - return notificationPreferences; - } - - @Override - public void setNotificationPreference(NotificationPreferences notificationPreferences) { - this.notificationPreferences = notificationPreferences; - } - - @Override - public boolean isTypingNotificationsSupported() { - return typingNotificationsSupported; - } - - @Override - public void setTypingNotificationsSupported(boolean typingNotificationsSupported) { - this.typingNotificationsSupported = typingNotificationsSupported; - } - - @Override - public boolean isSendTypingNotificationsEnabled() { - return sendTypingNotificationsEnabled; - } - - @Override - public void setSendTypingNotificationsEnabled(boolean sendTypingNotifications) { - this.sendTypingNotificationsEnabled = sendTypingNotifications; - } - - @Override - public boolean isReadNotificationsSupported() { - return readNotificationsSupported; - } - - @Override - public void setReadNotificationsSupported(boolean readNotificationsSupported) { - this.readNotificationsSupported = readNotificationsSupported; - } - - @Override - public boolean isSendReadNotifications() { - return sendReadNotificationsEnabled; - } - - @Override - public void setSendReadNotifications(boolean sendReadNotifications) { - this.sendReadNotificationsEnabled = sendReadNotifications; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java deleted file mode 100644 index dd4b78c..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.mercury_im.messenger.entity.chat; - -import org.mercury_im.messenger.entity.Account; -import org.mercury_im.messenger.entity.contact.Peer; - -import java.util.UUID; - -public class IDirectChat implements DirectChat { - - protected UUID id; - protected Peer peer; - protected Account account; - protected ChatPreferences preferences; - - public IDirectChat() { - this(UUID.randomUUID()); - } - - public IDirectChat(UUID id) { - this.id = id; - } - - @Override - public Peer getPeer() { - return peer; - } - - @Override - public void setPeer(Peer peer) { - this.peer = peer; - } - - @Override - public UUID getId() { - return id; - } - - @Override - public void setId(UUID id) { - this.id = id; - } - - @Override - public Account getAccount() { - return account; - } - - @Override - public void setAccount(Account account) { - this.account = account; - } - - @Override - public ChatPreferences getChatPreferences() { - return preferences; - } - - @Override - public void setChatPreferences(ChatPreferences chatPreferences) { - this.preferences = chatPreferences; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java deleted file mode 100644 index 3f2c248..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.mercury_im.messenger.entity.chat; - -import org.mercury_im.messenger.entity.Account; -import org.mercury_im.messenger.entity.contact.Peer; - -import java.util.Set; -import java.util.UUID; - -public class IGroupChat implements GroupChat { - - private UUID id; - private Account account; - private String roomAddress; - private String roomName; - protected ChatPreferences preferences; - protected Set participants; - - public IGroupChat() { - this(UUID.randomUUID()); - } - - public IGroupChat(UUID id) { - this.id = id; - } - - @Override - public Set getParticipants() { - return participants; - } - - @Override - public void setParticipants(Set participants) { - this.participants = participants; - } - - @Override - public String getRoomAddress() { - return roomAddress; - } - - @Override - public void setRoomAddress(String roomAddress) { - this.roomAddress = roomAddress; - } - - @Override - public String getRoomName() { - return roomName; - } - - @Override - public void setRoomName(String roomName) { - this.roomName = roomName; - } - - @Override - public UUID getId() { - return id; - } - - @Override - public void setId(UUID id) { - this.id = id; - } - - @Override - public Account getAccount() { - return account; - } - - @Override - public void setAccount(Account account) { - this.account = account; - } - - - @Override - public ChatPreferences getChatPreferences() { - return preferences; - } - - @Override - public void setChatPreferences(ChatPreferences chatPreferences) { - this.preferences = chatPreferences; - } - -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/INotificationPreferences.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/INotificationPreferences.java deleted file mode 100644 index dfffcd2..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/INotificationPreferences.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.mercury_im.messenger.entity.chat; - -public class INotificationPreferences implements ChatPreferences.NotificationPreferences { - - protected boolean notifyOnMessage; - protected boolean notifyOnMention; - - @Override - public boolean isNotifyOnMessage() { - return notifyOnMessage; - } - - @Override - public void setNotifyOnMessage(boolean notify) { - this.notifyOnMessage = notify; - } - - @Override - public boolean isNotifyOnMention() { - return notifyOnMention; - } - - @Override - public void setNotifyOnMention(boolean notify) { - this.notifyOnMention = notify; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java b/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java deleted file mode 100644 index a1e282a..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.mercury_im.messenger.entity.contact; - -import org.mercury_im.messenger.entity.Account; - -import java.util.UUID; - -public class IPeer implements Peer { - - protected UUID id; - protected Account account; - protected String address; - protected String name; - protected SubscriptionDirection subscriptionDirection; - protected boolean pending; - protected boolean approved; - - public IPeer() { - this(UUID.randomUUID()); - } - - public IPeer(UUID id) { - this.id = id; - } - - @Override - public UUID getId() { - return id; - } - - @Override - public void setId(UUID id) { - this.id = id; - } - - @Override - public Account getAccount() { - return account; - } - - @Override - public void setAccount(Account account) { - this.account = account; - } - - @Override - public String getAddress() { - return address; - } - - @Override - public void setAddress(String address) { - this.address = address; - } - - @Override - public String getName() { - return name; - } - - @Override - public void setName(String name) { - this.name = name; - } - - @Override - public SubscriptionDirection getSubscriptionDirection() { - return subscriptionDirection; - } - - @Override - public void setSubscriptionDirection(SubscriptionDirection mode) { - this.subscriptionDirection = mode; - } - - @Override - public boolean isSubscriptionPending() { - return pending; - } - - @Override - public void setSubscriptionPending(boolean pending) { - this.pending = pending; - } - - @Override - public boolean isSubscriptionApproved() { - return approved; - } - - @Override - public void setSubscriptionApproved(boolean approved) { - this.approved = approved; - } - - @Override - public boolean isContact() { - return subscriptionDirection != SubscriptionDirection.none - && subscriptionDirection != SubscriptionDirection.from; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java index 3a33a44..7859276 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java @@ -4,45 +4,27 @@ import org.mercury_im.messenger.entity.Account; import java.util.UUID; +import lombok.Data; +import lombok.With; + /** * Defines a user on the network (eg. a contact, chat partner, group chat member etc). * Basically anyone that may send you a message is a Peer. - * - * An implementation can be found as {@link IPeer}. */ -public interface Peer { +@Data +public class Peer { + UUID id; + Account account; + String address; + String name; + SubscriptionDirection subscriptionDirection; + boolean subscriptionPending; + boolean subscriptionApproved; - UUID getId(); - - void setId(UUID id); - - Account getAccount(); - - void setAccount(Account account); - - String getAddress(); - - void setAddress(String address); - - String getName(); - - void setName(String name); - - SubscriptionDirection getSubscriptionDirection(); - - void setSubscriptionDirection(SubscriptionDirection mode); - - boolean isSubscriptionPending(); - - void setSubscriptionPending(boolean pending); - - boolean isSubscriptionApproved(); - - void setSubscriptionApproved(boolean approved); - - boolean isContact(); - - default String getDisplayName() { - return getName() != null ? getName() : getAddress(); + public String getDisplayName() { + if (name != null) { + return name; + } + return address; } } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/event/ITypingEvent.java b/entity/src/main/java/org/mercury_im/messenger/entity/event/ITypingEvent.java deleted file mode 100644 index bc5d4eb..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/event/ITypingEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.mercury_im.messenger.entity.event; - -import org.mercury_im.messenger.entity.contact.Peer; - -import java.util.Map; - -public class ITypingEvent implements TypingEvent { - - public Map typingStates; - - @Override - public Map getTypingStates() { - return typingStates; - } - - @Override - public void setTypingStates(Map typingStates) { - this.typingStates = typingStates; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/event/TypingEvent.java b/entity/src/main/java/org/mercury_im/messenger/entity/event/TypingEvent.java index c728929..534ffe6 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/event/TypingEvent.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/event/TypingEvent.java @@ -4,14 +4,13 @@ import org.mercury_im.messenger.entity.contact.Peer; import java.util.Map; +import lombok.Data; +import lombok.Value; + /** * Event of someone typing in a chat. - * - * An implementation can be found as {@link ITypingEvent}. */ -public interface TypingEvent { - - Map getTypingStates(); - - void setTypingStates(Map typingStates); +@Value +public class TypingEvent { + Map typingStates; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java deleted file mode 100644 index 313c11f..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java +++ /dev/null @@ -1,105 +0,0 @@ -package org.mercury_im.messenger.entity.message; - -import java.util.Date; -import java.util.List; -import java.util.UUID; - -public class IMessage implements Message { - - protected UUID id; - protected String sender; - protected String recipient; - protected Date timestamp; - protected List payloads; - protected MessageDeliveryState deliveryState; - protected MessageMetadata metadata; - protected MessageDirection direction; - - public IMessage() { - this(UUID.randomUUID()); - } - - public IMessage(UUID id) { - this.id = id; - } - - @Override - public UUID getId() { - return id; - } - - @Override - public void setId(UUID id) { - this.id = id; - } - - @Override - public String getSender() { - return sender; - } - - @Override - public void setSender(String address) { - this.sender = address; - } - - @Override - public String getRecipient() { - return recipient; - } - - @Override - public void setRecipient(String recipient) { - this.recipient = recipient; - } - - @Override - public Date getTimestamp() { - return timestamp; - } - - @Override - public void setTimestamp(Date timestamp) { - this.timestamp = timestamp; - } - - @Override - public MessageDirection getDirection() { - return direction; - } - - @Override - public void setDirection(MessageDirection direction) { - this.direction = direction; - } - - @Override - public List getMessagePayloads() { - return payloads; - } - - @Override - public void setMessagePayloads(List list) { - this.payloads = list; - } - - @Override - public MessageDeliveryState getDeliveryState() { - return deliveryState; - } - - @Override - public void setDeliveryState(MessageDeliveryState deliveryState) { - this.deliveryState = deliveryState; - } - - @Override - public MessageMetadata getMetadata() { - return metadata; - } - - @Override - public void setMetadata(MessageMetadata metadata) { - this.metadata = metadata; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessageMetadata.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessageMetadata.java deleted file mode 100644 index 931cd06..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessageMetadata.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.mercury_im.messenger.entity.message; - -public class IMessageMetadata implements MessageMetadata { - - private long id; - private String legacyStanzaId; - private String originId; - private String stanzaId; - - public void setId(long id) { - this.id = id; - } - - public void setLegacyStanzaId(String legacyStanzaId) { - this.legacyStanzaId = legacyStanzaId; - } - - public void setOriginId(String originId) { - this.originId = originId; - } - - public void setStanzaId(String stanzaId) { - this.stanzaId = stanzaId; - } - - public long getId() { - return id; - } - - public String getLegacyStanzaId() { - return legacyStanzaId; - } - - public String getOriginId() { - return originId; - } - - public String getStanzaId() { - return stanzaId; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/IPayloadContainer.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/IPayloadContainer.java deleted file mode 100644 index d5337bd..0000000 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/IPayloadContainer.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.mercury_im.messenger.entity.message; - -import org.mercury_im.messenger.entity.message.content.Payload; - -import java.util.List; - -public class IPayloadContainer implements PayloadContainer { - - protected long id; - protected List contents; - - @Override - public long getId() { - return id; - } - - @Override - public void setId(long id) { - this.id = id; - } - - @Override - public List getMessageContents() { - return contents; - } - - @Override - public void setMessageContents(List payloads) { - this.contents = payloads; - } -} diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java index affed75..36ea7cd 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java @@ -4,41 +4,22 @@ import java.util.Date; import java.util.List; import java.util.UUID; -public interface Message { +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.With; - UUID getId(); +@Data +public class Message { + UUID id; + String sender; + String recipient; + Date timestamp; + MessageDirection direction; + List messagePayloads; + MessageDeliveryState deliveryState; + MessageMetadata metadata; - void setId(UUID id); - - String getSender(); - - void setSender(String address); - - String getRecipient(); - - void setRecipient(String recipient); - - Date getTimestamp(); - - void setTimestamp(Date timestamp); - - MessageDirection getDirection(); - - void setDirection(MessageDirection direction); - - default boolean isIncoming() { + public boolean isIncoming() { return getDirection() == MessageDirection.incoming; } - - List getMessagePayloads(); - - void setMessagePayloads(List payloadContainers); - - MessageDeliveryState getDeliveryState(); - - void setDeliveryState(MessageDeliveryState deliveryState); - - MessageMetadata getMetadata(); - - void setMetadata(MessageMetadata metadata); } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/MessageMetadata.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/MessageMetadata.java index 03e7ac7..b18b7c9 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/MessageMetadata.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/message/MessageMetadata.java @@ -1,9 +1,15 @@ package org.mercury_im.messenger.entity.message; +import lombok.Data; + /** * Interface to allow additional, protocol specific metadata to be attached to the message. * In case of XMPP this might be origin/stanza id, encryption information etc. */ -public interface MessageMetadata { - +@Data +public class MessageMetadata { + private long id; + private String legacyStanzaId; + private String originId; + private String stanzaId; } \ No newline at end of file diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/PayloadContainer.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/PayloadContainer.java index 1e31c04..02aab6a 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/PayloadContainer.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/message/PayloadContainer.java @@ -4,6 +4,8 @@ import org.mercury_im.messenger.entity.message.content.Payload; import java.util.List; +import lombok.Data; + /** * Defines a certain set of {@link Payload Payloads} of a message. * A {@link PayloadContainer} can either be a plaintext container or an encrypted container and contains @@ -12,15 +14,8 @@ import java.util.List; * A message may contain encrypted and unencrypted payloads. Those could then be represented by * two different {@link PayloadContainer PayloadContainers}. */ -public interface PayloadContainer { - - long getId(); - - void setId(long id); - - List getMessageContents(); - - void setMessageContents(List payloads); - - +@Data +public class PayloadContainer { + long id; + List messageContents; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/content/TextPayload.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/content/TextPayload.java index 0500d18..8e5fad7 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/content/TextPayload.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/message/content/TextPayload.java @@ -1,27 +1,9 @@ package org.mercury_im.messenger.entity.message.content; +import lombok.Data; + +@Data public class TextPayload implements Payload.Body { - - private long id; - private String body; - - @Override - public long getId() { - return id; - } - - @Override - public void setId(long id) { - this.id = id; - } - - @Override - public String getBody() { - return body; - } - - @Override - public void setBody(String body) { - this.body = body; - } + long id; + String body; } diff --git a/libs/Smack b/libs/Smack index e6e8547..e797108 160000 --- a/libs/Smack +++ b/libs/Smack @@ -1 +1 @@ -Subproject commit e6e8547f7b29e9c961cb23020c0f0fe2ea1b0f14 +Subproject commit e79710840be6d6b3301e078a23688eafaa06013c diff --git a/version.gradle b/version.gradle index 802b20a..cb6289a 100644 --- a/version.gradle +++ b/version.gradle @@ -88,6 +88,9 @@ ext { // Dagger 2 daggerVersion = '2.25.4' + // Lombok + lombokVersion = '1.18.12' + // Android Support Library supportLibVersion = "28.0.0"