mirror of
https://codeberg.org/Mercury-IM/Mercury-IM
synced 2024-06-18 09:34:52 +02:00
Add more modules and entites
This commit is contained in:
parent
605fccf18d
commit
4a72937f04
|
@ -73,7 +73,7 @@ check.configure {
|
|||
dependencies {
|
||||
|
||||
// Depend on the core project for XMPP related stuff
|
||||
implementation project(':core')
|
||||
implementation project(':core-old')
|
||||
|
||||
implementation "io.requery:requery-android:$requeryVersion"
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41'
|
||||
|
|
1
core-old/.gitignore
vendored
Normal file
1
core-old/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/build
|
45
core-old/build.gradle
Normal file
45
core-old/build.gradle
Normal file
|
@ -0,0 +1,45 @@
|
|||
apply plugin: 'java-library'
|
||||
|
||||
// Add the generated folder to the source directories so that we can work with generated classes
|
||||
// This is apparently necessary for use with requery.
|
||||
sourceSets {
|
||||
main.java.srcDirs += "${buildDir}/generated/sources/annotationProcessor/java/main/"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
api project(':entity') // Entities
|
||||
api project(':repository') // Repository
|
||||
api project(":thread_utils")
|
||||
|
||||
// Smack
|
||||
// Not all of those are needed, but it may be a good idea to define those versions explicitly
|
||||
api "org.igniterealtime.smack:smack-core:$smackCoreVersion"
|
||||
api "org.igniterealtime.smack:smack-experimental:$smackExperimentalVersion"
|
||||
api "org.igniterealtime.smack:smack-extensions:$smackExtensionsVersion"
|
||||
api "org.igniterealtime.smack:smack-im:$smackImVersion"
|
||||
api "org.igniterealtime.smack:smack-tcp:$smackTcpVersion"
|
||||
|
||||
// api "org.igniterealtime.smack:smack-omemo:$smackOmemoVersion"
|
||||
// api "org.igniterealtime.smack:smack-omemo-signal:$smackOmemoSignalVersion"
|
||||
// api "org.igniterealtime.smack:smack-openpgp:$smackOpenpgpVersion"
|
||||
// api "org.igniterealtime.smack:smack-resolver-minidns:$smackResolverMiniDnsVersion"
|
||||
|
||||
|
||||
// RxJava2
|
||||
api "io.reactivex.rxjava2:rxjava:$rxJava2Version"
|
||||
|
||||
// Dagger 2 for dependency injection
|
||||
implementation "com.google.dagger:dagger:$daggerVersion"
|
||||
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
|
||||
|
||||
// Requery ORM
|
||||
api "io.requery:requery:$requeryVersion"
|
||||
annotationProcessor "io.requery:requery-processor:$requeryVersion"
|
||||
|
||||
// JUnit for testing
|
||||
testImplementation "junit:junit:$junitVersion"
|
||||
}
|
||||
|
||||
sourceCompatibility = "8"
|
||||
targetCompatibility = "8"
|
|
@ -1,42 +1,18 @@
|
|||
apply plugin: 'java-library'
|
||||
|
||||
// Add the generated folder to the source directories so that we can work with generated classes
|
||||
// This is apparently necessary for use with requery.
|
||||
sourceSets {
|
||||
main.java.srcDirs += "${buildDir}/generated/sources/annotationProcessor/java/main/"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
api project(':entity') // Entities
|
||||
api project(':repository') // Repository
|
||||
api project(":thread_utils")
|
||||
|
||||
// Smack
|
||||
// Not all of those are needed, but it may be a good idea to define those versions explicitly
|
||||
api "org.igniterealtime.smack:smack-core:$smackCoreVersion"
|
||||
api "org.igniterealtime.smack:smack-experimental:$smackExperimentalVersion"
|
||||
api "org.igniterealtime.smack:smack-extensions:$smackExtensionsVersion"
|
||||
api "org.igniterealtime.smack:smack-im:$smackImVersion"
|
||||
api "org.igniterealtime.smack:smack-tcp:$smackTcpVersion"
|
||||
|
||||
// api "org.igniterealtime.smack:smack-omemo:$smackOmemoVersion"
|
||||
// api "org.igniterealtime.smack:smack-omemo-signal:$smackOmemoSignalVersion"
|
||||
// api "org.igniterealtime.smack:smack-openpgp:$smackOpenpgpVersion"
|
||||
// api "org.igniterealtime.smack:smack-resolver-minidns:$smackResolverMiniDnsVersion"
|
||||
|
||||
implementation project(':entity')
|
||||
implementation project(':repository')
|
||||
implementation project(":thread_utils")
|
||||
|
||||
// RxJava2
|
||||
api "io.reactivex.rxjava2:rxjava:$rxJava2Version"
|
||||
implementation "io.reactivex.rxjava2:rxjava:$rxJava2Version"
|
||||
|
||||
// Dagger 2 for dependency injection
|
||||
implementation "com.google.dagger:dagger:$daggerVersion"
|
||||
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
|
||||
|
||||
// Requery ORM
|
||||
api "io.requery:requery:$requeryVersion"
|
||||
annotationProcessor "io.requery:requery-processor:$requeryVersion"
|
||||
|
||||
// JUnit for testing
|
||||
testImplementation "junit:junit:$junitVersion"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package org.mercury_im.core.connection;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.chat.DirectChat;
|
||||
import org.mercury_im.messenger.core.entity.contact.Interlocutor;
|
||||
import org.mercury_im.messenger.core.entity.message.AbstractMessage;
|
||||
|
||||
public interface IncomingDirectMessageListener<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
IL extends Interlocutor<AC, AD>> {
|
||||
|
||||
void onIncomingDirectMessage(AC account, DirectChat<IL, AC, AD> chat, AbstractMessage<AD, ?> message);
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package org.mercury_im.core.connection;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.chat.DirectChat;
|
||||
import org.mercury_im.messenger.core.entity.chat.GroupChat;
|
||||
import org.mercury_im.messenger.core.entity.contact.Interlocutor;
|
||||
import org.mercury_im.messenger.core.entity.message.AbstractMessage;
|
||||
|
||||
public interface IncomingGroupChatMessageListener<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
RA extends Address.RoomAddress,
|
||||
PA extends Address.RoomParticipantAddress,
|
||||
IL extends Interlocutor<AC, AD>> {
|
||||
|
||||
void onIncomingDirectMessage(AC account, GroupChat<AC, AD, RA, PA> chat, AbstractMessage<PA, ?> message);
|
||||
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
|
||||
public interface DirectChat<
|
||||
IL extends Interlocutor<AC, AD>,
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress>
|
||||
extends Chat<AC, AD> {
|
||||
|
||||
IL getInterlocutor();
|
||||
|
||||
void setInterlocutor(IL interlocutor);
|
||||
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
|
||||
public interface GroupChat<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
RA extends Address.RoomAddress>
|
||||
extends Chat<AC, AD> {
|
||||
|
||||
RA getRoomAddress();
|
||||
|
||||
void setRoomAddress(RA roomAddress);
|
||||
|
||||
String getRoomName();
|
||||
|
||||
void setRoomName(String roomName);
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
|
||||
/**
|
||||
* Defines a user on the network (eg. a contact, chat partner etc).
|
||||
*
|
||||
* @param <AC> Account Type
|
||||
* @param <AD> UserAddress Type
|
||||
*/
|
||||
public interface Interlocutor<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress> {
|
||||
|
||||
long getId();
|
||||
|
||||
void setId(long id);
|
||||
|
||||
AC getAccount();
|
||||
|
||||
void setAccount(AC account);
|
||||
|
||||
AD getAddress();
|
||||
|
||||
void setAddress(AD address);
|
||||
|
||||
String getName();
|
||||
|
||||
void setName(String name);
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
|
||||
public interface MessageContent {
|
||||
|
||||
String getBody();
|
||||
|
||||
void setBody(String body);
|
||||
}
|
|
@ -1,6 +1,10 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.chat;
|
||||
|
||||
public class AbstractDirectChat<
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.contact.Interlocutor;
|
||||
|
||||
public abstract class AbstractDirectChat<
|
||||
IL extends Interlocutor<AC, AD>,
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress>
|
||||
|
@ -9,6 +13,7 @@ public class AbstractDirectChat<
|
|||
protected long id;
|
||||
protected IL interlocutor;
|
||||
protected AC account;
|
||||
protected ChatPreferences preferences;
|
||||
|
||||
@Override
|
||||
public IL getInterlocutor() {
|
||||
|
@ -39,4 +44,14 @@ public class AbstractDirectChat<
|
|||
public void setAccount(AC account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChatPreferences getChatPreferences() {
|
||||
return preferences;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChatPreferences(ChatPreferences chatPreferences) {
|
||||
this.preferences = chatPreferences;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,9 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.chat;
|
||||
|
||||
public class AbstractGroupChat<
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
|
||||
public abstract class AbstractGroupChat<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
RA extends Address.RoomAddress>
|
||||
|
@ -10,6 +13,7 @@ public class AbstractGroupChat<
|
|||
private AC account;
|
||||
private RA roomAddress;
|
||||
private String roomName;
|
||||
protected ChatPreferences preferences;
|
||||
|
||||
@Override
|
||||
public RA getRoomAddress() {
|
||||
|
@ -50,4 +54,16 @@ public class AbstractGroupChat<
|
|||
public void setAccount(AC account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ChatPreferences getChatPreferences() {
|
||||
return preferences;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChatPreferences(ChatPreferences chatPreferences) {
|
||||
this.preferences = preferences;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,7 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.chat;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
|
||||
public interface Chat<
|
||||
AC extends Account<AD, ?>,
|
|
@ -1,4 +1,4 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.chat;
|
||||
|
||||
public interface ChatPreferences {
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package org.mercury_im.messenger.core.entity.chat;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.contact.Interlocutor;
|
||||
|
||||
public interface DirectChat<
|
||||
IL extends Interlocutor<AC, AD, AD>,
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress>
|
||||
extends Chat<AC, AD> {
|
||||
|
||||
IL getInterlocutor();
|
||||
|
||||
void setInterlocutor(IL interlocutor);
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package org.mercury_im.messenger.core.entity.chat;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.contact.Interlocutor;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public interface GroupChat<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
RA extends Address.RoomAddress,
|
||||
PA extends Address.RoomParticipantAddress,
|
||||
IL extends Interlocutor<AC, PA, AD>>
|
||||
extends Chat<AC, AD> {
|
||||
|
||||
Set<IL> getParticipants();
|
||||
|
||||
void setParticipants(Set<IL> participants);
|
||||
|
||||
RA getRoomAddress();
|
||||
|
||||
void setRoomAddress(RA roomAddress);
|
||||
|
||||
String getRoomName();
|
||||
|
||||
void setRoomName(String roomName);
|
||||
}
|
|
@ -1,13 +1,17 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.contact;
|
||||
|
||||
public class AbstractInterlocutor<
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
|
||||
public abstract class AbstractInterlocutor<
|
||||
AC extends Account<AD, ?>,
|
||||
IA extends Address,
|
||||
AD extends Address.UserAddress>
|
||||
implements Interlocutor<AC, AD> {
|
||||
implements Interlocutor<AC, IA, AD> {
|
||||
|
||||
protected long id;
|
||||
protected AC account;
|
||||
protected AD address;
|
||||
protected IA address;
|
||||
protected String name;
|
||||
|
||||
@Override
|
||||
|
@ -31,12 +35,12 @@ public class AbstractInterlocutor<
|
|||
}
|
||||
|
||||
@Override
|
||||
public AD getAddress() {
|
||||
public IA getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAddress(AD address) {
|
||||
public void setAddress(IA address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
|
@ -1,9 +1,12 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.contact;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
|
||||
public interface Contact<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress>
|
||||
extends Interlocutor<AC, AD> {
|
||||
extends Interlocutor<AC, AD, AD> {
|
||||
|
||||
SubscriptionMode getSubscriptionMode();
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package org.mercury_im.messenger.core.entity.contact;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
|
||||
/**
|
||||
* Defines a user on the network (eg. a contact, chat partner, group chat member etc).
|
||||
* Basically anyone that may send you a message is an Interlocutor.
|
||||
*
|
||||
* @param <AC> Account Type
|
||||
* @param <IA> Address type for the Interlocutor
|
||||
* @param <AD> UserAddress type for the account
|
||||
*/
|
||||
public interface Interlocutor<
|
||||
AC extends Account<AD, ?>,
|
||||
IA extends Address,
|
||||
AD extends Address.UserAddress> {
|
||||
|
||||
long getId();
|
||||
|
||||
void setId(long id);
|
||||
|
||||
AC getAccount();
|
||||
|
||||
void setAccount(AC account);
|
||||
|
||||
IA getAddress();
|
||||
|
||||
void setAddress(IA address);
|
||||
|
||||
String getName();
|
||||
|
||||
void setName(String name);
|
||||
}
|
|
@ -1,14 +1,20 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class AbstractMessage<AD extends Address, MM extends MessageMetadata> implements Message<AD, MM> {
|
||||
public abstract class AbstractMessage<
|
||||
AD extends Address,
|
||||
MM extends MessageMetadata>
|
||||
implements Message<AD, MM> {
|
||||
|
||||
protected long id;
|
||||
protected AD sender;
|
||||
protected AD recipient;
|
||||
protected Date timestamp;
|
||||
protected String body;
|
||||
protected List<MessagePayload> payloads;
|
||||
protected MessageDeliveryState deliveryState;
|
||||
protected MM metadata;
|
||||
|
||||
|
@ -53,13 +59,13 @@ public class AbstractMessage<AD extends Address, MM extends MessageMetadata> imp
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getBody() {
|
||||
return body;
|
||||
public List<MessagePayload> getMessagePayloads() {
|
||||
return payloads;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBody(String body) {
|
||||
this.body = body;
|
||||
public void setMessagePayloads(List<MessagePayload> list) {
|
||||
this.payloads = list;
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,6 +1,9 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public interface Message<MA extends Address, MM extends MessageMetadata> {
|
||||
|
||||
|
@ -20,9 +23,9 @@ public interface Message<MA extends Address, MM extends MessageMetadata> {
|
|||
|
||||
void setTimestamp(Date timestamp);
|
||||
|
||||
String getBody();
|
||||
List<MessagePayload> getMessagePayloads();
|
||||
|
||||
void setBody(String body);
|
||||
void setMessagePayloads(List<MessagePayload> messagePayloads);
|
||||
|
||||
MessageDeliveryState getDeliveryState();
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
public interface MessageContent {
|
||||
|
||||
interface Body extends MessageContent {
|
||||
|
||||
String getBody();
|
||||
|
||||
void setBody(String body);
|
||||
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
public enum MessageDeliveryState {
|
||||
pending_delivery,
|
|
@ -1,4 +1,4 @@
|
|||
package org.mercury_im.messenger.core.entity;
|
||||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
/**
|
||||
* Interface to allow additional, protocol specific metadata to be attached to the message.
|
|
@ -0,0 +1,11 @@
|
|||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MessagePayload {
|
||||
|
||||
List<MessageContent> getMessageContents();
|
||||
|
||||
void setMessageContents(List<MessageContent> messageContents);
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package org.mercury_im.messenger.core.entity.message;
|
||||
|
||||
public class TextMessageContent implements MessageContent.Body {
|
||||
|
||||
private String body;
|
||||
|
||||
@Override
|
||||
public String getBody() {
|
||||
return body;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBody(String body) {
|
||||
this.body = body;
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package org.mercury_im.messenger.xmpp.entity;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.AbstractDirectChat;
|
||||
|
||||
public class XmppDirectChat extends AbstractDirectChat<XmppInterlocutor, XmppAccount, XmppAddress.XmppUserAddress> {
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package org.mercury_im.messenger.xmpp.entity;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.AbstractGroupChat;
|
||||
|
||||
public class XmppGroupChat extends AbstractGroupChat<XmppAccount, XmppAddress.XmppUserAddress, XmppAddress.XmppRoomAddress> {
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package org.mercury_im.messenger.xmpp.entity;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.AbstractInterlocutor;
|
||||
|
||||
public class XmppInterlocutor extends AbstractInterlocutor<XmppAccount, XmppAddress.XmppUserAddress> {
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package org.mercury_im.messenger.xmpp.entity;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.AbstractMessage;
|
||||
|
||||
public class XmppMessage extends AbstractMessage<XmppAddress, XmppMessageMetadata> {
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package org.mercury_im.messenger.xmpp.entity;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.MessageMetadata;
|
||||
|
||||
public class XmppMessageMetadata implements MessageMetadata {
|
||||
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.chat;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.chat.AbstractDirectChat;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
|
||||
import org.mercury_im.messenger.xmpp.entity.contact.XmppDirectInterlocutor;
|
||||
|
||||
public class XmppDirectChat extends AbstractDirectChat<XmppDirectInterlocutor, XmppAccount, XmppAddress.XmppUserAddress> {
|
||||
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.chat;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.chat.AbstractGroupChat;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
|
||||
|
||||
public class XmppMuc extends AbstractGroupChat<XmppAccount, XmppAddress.XmppUserAddress, XmppAddress.XmppRoomAddress> {
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.contact;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.contact.AbstractInterlocutor;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
|
||||
|
||||
public class XmppContact extends AbstractInterlocutor<
|
||||
XmppAccount,
|
||||
XmppAddress.XmppUserAddress,
|
||||
XmppAddress.XmppUserAddress> {
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.contact;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.contact.AbstractInterlocutor;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
|
||||
|
||||
public class XmppDirectInterlocutor extends AbstractInterlocutor<
|
||||
XmppAccount,
|
||||
XmppAddress.XmppUserAddress,
|
||||
XmppAddress.XmppUserAddress> {
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.contact;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.contact.AbstractInterlocutor;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
|
||||
|
||||
public class XmppMucParticipant extends AbstractInterlocutor<
|
||||
XmppAccount,
|
||||
XmppAddress.XmppRoomParticipantAddress,
|
||||
XmppAddress.XmppUserAddress> {
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.message;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.message.AbstractMessage;
|
||||
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
|
||||
|
||||
public final class XmppMessage extends AbstractMessage<
|
||||
XmppAddress,
|
||||
XmppMessageMetadata> {
|
||||
|
||||
private XmppMessage() {
|
||||
|
||||
}
|
||||
|
||||
public class DirectMessage extends AbstractMessage<
|
||||
XmppAddress.XmppUserAddress,
|
||||
XmppMessageMetadata> {
|
||||
|
||||
}
|
||||
|
||||
public class MucMessage extends AbstractMessage<
|
||||
XmppAddress.XmppRoomParticipantAddress,
|
||||
XmppMessageMetadata> {
|
||||
|
||||
}
|
||||
|
||||
// Maybe?
|
||||
public class MixMessage extends AbstractMessage<
|
||||
XmppAddress.XmppRoomParticipantAddress,
|
||||
XmppMessageMetadata> {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package org.mercury_im.messenger.xmpp.entity.message;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.message.MessageMetadata;
|
||||
|
||||
public class XmppMessageMetadata implements MessageMetadata {
|
||||
|
||||
}
|
|
@ -2,7 +2,7 @@ package org.mercury_im.messenger.core.repository;
|
|||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.Contact;
|
||||
import org.mercury_im.messenger.core.entity.contact.Contact;
|
||||
import org.mercury_im.messenger.core.util.Optional;
|
||||
|
||||
import java.util.List;
|
||||
|
|
|
@ -2,10 +2,11 @@ package org.mercury_im.messenger.core.repository;
|
|||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.DirectChat;
|
||||
import org.mercury_im.messenger.core.entity.Interlocutor;
|
||||
import org.mercury_im.messenger.core.entity.Message;
|
||||
import org.mercury_im.messenger.core.entity.MessageMetadata;
|
||||
import org.mercury_im.messenger.core.entity.chat.DirectChat;
|
||||
import org.mercury_im.messenger.core.entity.contact.Interlocutor;
|
||||
import org.mercury_im.messenger.core.entity.message.Message;
|
||||
import org.mercury_im.messenger.core.entity.message.MessageMetadata;
|
||||
import org.mercury_im.messenger.core.entity.message.MessagePayload;
|
||||
import org.mercury_im.messenger.core.util.Optional;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -20,8 +21,9 @@ public interface DirectChatRepository<
|
|||
IL extends Interlocutor<AC, AD>,
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
M extends Message<AD, MM>,
|
||||
MM extends MessageMetadata> {
|
||||
M extends Message<AD, MM, MP>,
|
||||
MM extends MessageMetadata,
|
||||
MP extends MessagePayload> {
|
||||
|
||||
Single<DC> insertDirectChat(DC chat);
|
||||
|
||||
|
|
|
@ -2,9 +2,10 @@ package org.mercury_im.messenger.core.repository;
|
|||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
import org.mercury_im.messenger.core.entity.GroupChat;
|
||||
import org.mercury_im.messenger.core.entity.Message;
|
||||
import org.mercury_im.messenger.core.entity.MessageMetadata;
|
||||
import org.mercury_im.messenger.core.entity.chat.GroupChat;
|
||||
import org.mercury_im.messenger.core.entity.message.Message;
|
||||
import org.mercury_im.messenger.core.entity.message.MessageMetadata;
|
||||
import org.mercury_im.messenger.core.entity.message.MessagePayload;
|
||||
import org.mercury_im.messenger.core.util.Optional;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -19,8 +20,9 @@ public interface GroupChatRepository<
|
|||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress,
|
||||
RA extends Address.RoomAddress,
|
||||
M extends Message<AD, MM>,
|
||||
MM extends MessageMetadata> {
|
||||
M extends Message<AD, MM, MP>,
|
||||
MM extends MessageMetadata,
|
||||
MP extends MessagePayload> {
|
||||
|
||||
Single<GC> insertGroupChat(GC chat);
|
||||
|
||||
|
|
|
@ -2,9 +2,11 @@ include ':entity',
|
|||
':entity_xmpp',
|
||||
':repository',
|
||||
':repository_xmpp',
|
||||
':core',
|
||||
':transport',
|
||||
':transport_xmpp',
|
||||
':app',
|
||||
':thread_utils',
|
||||
':core'
|
||||
':core-old'
|
||||
|
||||
includeBuild 'libs/Smack'
|
||||
|
|
1
transport/.gitignore
vendored
Normal file
1
transport/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/build
|
21
transport/build.gradle
Normal file
21
transport/build.gradle
Normal file
|
@ -0,0 +1,21 @@
|
|||
apply plugin: 'java-library'
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation project(':entity')
|
||||
implementation project(':repository')
|
||||
implementation project(":thread_utils")
|
||||
|
||||
// RxJava2
|
||||
implementation "io.reactivex.rxjava2:rxjava:$rxJava2Version"
|
||||
|
||||
// Dagger 2 for dependency injection
|
||||
implementation "com.google.dagger:dagger:$daggerVersion"
|
||||
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
|
||||
|
||||
// JUnit for testing
|
||||
testImplementation "junit:junit:$junitVersion"
|
||||
}
|
||||
|
||||
sourceCompatibility = "8"
|
||||
targetCompatibility = "8"
|
|
@ -0,0 +1,4 @@
|
|||
package org.mercury_im.core;
|
||||
|
||||
public class Messenger {
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package org.mercury_im.core.connection;
|
||||
|
||||
import org.mercury_im.messenger.core.entity.Account;
|
||||
import org.mercury_im.messenger.core.entity.Address;
|
||||
|
||||
public interface ConnectionMethod<
|
||||
AC extends Account<AD, ?>,
|
||||
AD extends Address.UserAddress> {
|
||||
|
||||
AC getAccount();
|
||||
|
||||
void setAccount(AC account);
|
||||
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package org.mercury_im.core.connection.exception;
|
||||
|
||||
public class ConnectionFailedException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
Loading…
Reference in a new issue