From d0d375aeb732ee9fa27e13fcd1dbc6942ab14166 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Sat, 20 Apr 2019 21:56:20 -0700 Subject: [PATCH] Break out into a multi-module project --- pom.xml | 228 ++---------------- redis-dispatch/pom.xml | 17 ++ .../dispatch/DispatchChannel.java | 0 .../dispatch/DispatchManager.java | 0 .../dispatch/io/RedisInputStream.java | 0 .../io/RedisPubSubConnectionFactory.java | 0 .../dispatch/redis/PubSubConnection.java | 0 .../dispatch/redis/PubSubReply.java | 0 .../redis/protocol/ArrayReplyHeader.java | 0 .../dispatch/redis/protocol/IntReply.java | 0 .../redis/protocol/StringReplyHeader.java | 0 .../whispersystems/dispatch/util/Util.java | 0 .../dispatch/DispatchManagerTest.java | 0 .../dispatch/redis/PubSubConnectionTest.java | 1 - .../redis/protocol/ArrayReplyHeaderTest.java | 0 .../redis/protocol/IntReplyHeaderTest.java | 0 .../redis/protocol/StringReplyHeaderTest.java | 0 service/pom.xml | 223 +++++++++++++++++ {protobuf => service/protobuf}/Makefile | 0 .../protobuf}/PubSubMessage.proto | 0 .../protobuf}/TextSecure.proto | 0 .../WhisperServerConfiguration.java | 0 .../textsecuregcm/WhisperServerService.java | 0 .../auth/AccountAuthenticator.java | 0 .../textsecuregcm/auth/Anonymous.java | 0 .../auth/AuthenticationCredentials.java | 0 .../auth/AuthorizationHeader.java | 0 .../auth/CertificateGenerator.java | 0 .../auth/DirectoryCredentials.java | 0 .../auth/DirectoryCredentialsGenerator.java | 0 .../InvalidAuthorizationHeaderException.java | 0 .../textsecuregcm/auth/OptionalAccess.java | 0 .../auth/StoredVerificationCode.java | 0 .../textsecuregcm/auth/TurnToken.java | 0 .../auth/TurnTokenGenerator.java | 0 .../auth/UnidentifiedAccessChecksum.java | 0 .../AccountDatabaseCrawlerConfiguration.java | 0 .../configuration/ApnConfiguration.java | 0 .../AttachmentsConfiguration.java | 0 .../CircuitBreakerConfiguration.java | 0 .../configuration/DatabaseConfiguration.java | 0 .../DirectoryClientConfiguration.java | 0 .../configuration/DirectoryConfiguration.java | 0 .../DirectoryServerConfiguration.java | 0 .../configuration/GcmConfiguration.java | 0 .../configuration/GraphiteConfiguration.java | 0 .../configuration/MaxDeviceConfiguration.java | 0 .../MessageCacheConfiguration.java | 0 .../configuration/ProfilesConfiguration.java | 0 .../configuration/PushConfiguration.java | 0 .../RateLimitsConfiguration.java | 0 .../configuration/RecaptchaConfiguration.java | 0 .../configuration/RedisConfiguration.java | 0 .../configuration/RetryConfiguration.java | 0 .../configuration/SqsConfiguration.java | 0 .../TestDeviceConfiguration.java | 0 .../configuration/TurnConfiguration.java | 0 .../configuration/TwilioConfiguration.java | 0 .../UnidentifiedDeliveryConfiguration.java | 0 .../VoiceVerificationConfiguration.java | 0 .../controllers/AccountController.java | 0 .../controllers/AttachmentControllerBase.java | 0 .../controllers/AttachmentControllerV1.java | 0 .../controllers/AttachmentControllerV2.java | 0 .../controllers/CertificateController.java | 0 .../controllers/DeviceController.java | 0 .../DeviceLimitExceededException.java | 0 .../controllers/DirectoryController.java | 0 .../InvalidDestinationException.java | 0 .../controllers/KeepAliveController.java | 0 .../controllers/KeysController.java | 0 .../controllers/MessageController.java | 0 .../MismatchedDevicesException.java | 0 .../controllers/NoSuchUserException.java | 0 .../controllers/ProfileController.java | 0 .../controllers/ProvisioningController.java | 0 .../RateLimitExceededException.java | 0 .../controllers/StaleDevicesException.java | 0 .../TransparentDataController.java | 0 .../controllers/ValidationException.java | 0 .../VoiceVerificationController.java | 0 .../textsecuregcm/crypto/Curve.java | 0 .../textsecuregcm/crypto/DjbECPrivateKey.java | 0 .../textsecuregcm/crypto/DjbECPublicKey.java | 0 .../textsecuregcm/crypto/ECKeyPair.java | 0 .../textsecuregcm/crypto/ECPrivateKey.java | 0 .../textsecuregcm/crypto/ECPublicKey.java | 0 .../entities/AccountAttributes.java | 0 .../textsecuregcm/entities/AccountCount.java | 0 .../entities/AcknowledgeWebsocketMessage.java | 0 .../entities/ActiveUserTally.java | 0 .../entities/ApnRegistrationId.java | 0 .../entities/AttachmentDescriptorV1.java | 0 .../entities/AttachmentDescriptorV2.java | 0 .../textsecuregcm/entities/AttachmentUri.java | 0 .../textsecuregcm/entities/ClientContact.java | 0 .../entities/ClientContactTokens.java | 0 .../entities/ClientContacts.java | 0 .../entities/CryptoEncodingException.java | 0 .../entities/DeliveryCertificate.java | 0 .../textsecuregcm/entities/DeviceInfo.java | 0 .../entities/DeviceInfoList.java | 0 .../textsecuregcm/entities/DeviceName.java | 0 .../entities/DeviceResponse.java | 0 .../entities/DirectoryFeedbackRequest.java | 0 .../DirectoryReconciliationRequest.java | 0 .../DirectoryReconciliationResponse.java | 0 .../entities/EncryptedOutgoingMessage.java | 0 .../entities/GcmRegistrationId.java | 0 .../entities/IncomingMessage.java | 0 .../entities/IncomingMessageList.java | 0 .../entities/IncomingWebsocketMessage.java | 0 .../textsecuregcm/entities/MessageProtos.java | 0 .../entities/MessageResponse.java | 0 .../entities/MismatchedDevices.java | 0 .../entities/OutgoingMessageEntity.java | 0 .../entities/OutgoingMessageEntityList.java | 0 .../textsecuregcm/entities/PreKey.java | 0 .../textsecuregcm/entities/PreKeyCount.java | 0 .../entities/PreKeyResponse.java | 0 .../entities/PreKeyResponseItem.java | 0 .../textsecuregcm/entities/PreKeyState.java | 0 .../textsecuregcm/entities/Profile.java | 0 .../ProfileAvatarUploadAttributes.java | 0 .../entities/ProvisioningMessage.java | 0 .../entities/RegistrationLock.java | 0 .../entities/RegistrationLockFailure.java | 0 .../entities/SendMessageResponse.java | 0 .../textsecuregcm/entities/SignedPreKey.java | 0 .../textsecuregcm/entities/StaleDevices.java | 0 .../entities/UnregisteredEvent.java | 0 .../entities/UnregisteredEventList.java | 0 .../http/FaultTolerantHttpClient.java | 0 .../http/FormDataBodyPublisher.java | 0 .../textsecuregcm/limits/LeakyBucket.java | 0 .../limits/LockingRateLimiter.java | 0 .../textsecuregcm/limits/RateLimiter.java | 0 .../textsecuregcm/limits/RateLimiters.java | 0 .../liquibase/AbstractLiquibaseCommand.java | 0 .../liquibase/CloseableLiquibase.java | 0 .../liquibase/DbMigrateCommand.java | 0 .../liquibase/DbStatusCommand.java | 0 .../liquibase/NameableDbCommand.java | 0 .../liquibase/NameableMigrationsBundle.java | 0 .../DeviceLimitExceededExceptionMapper.java | 0 .../mappers/IOExceptionMapper.java | 0 ...nvalidWebsocketAddressExceptionMapper.java | 0 .../RateLimitExceededExceptionMapper.java | 0 .../textsecuregcm/metrics/CpuUsageGauge.java | 0 .../metrics/FileDescriptorGauge.java | 0 .../metrics/FreeMemoryGauge.java | 0 .../metrics/JsonMetricsReporter.java | 0 .../metrics/JsonMetricsReporterFactory.java | 0 .../LoggingNetworkAppenderFactory.java | 0 .../textsecuregcm/metrics/NetworkGauge.java | 0 .../metrics/NetworkReceivedGauge.java | 0 .../metrics/NetworkSentGauge.java | 0 .../providers/RedisClientFactory.java | 0 .../providers/RedisHealthCheck.java | 0 .../textsecuregcm/providers/TimeProvider.java | 0 .../textsecuregcm/push/APNSender.java | 0 .../push/ApnFallbackManager.java | 0 .../textsecuregcm/push/ApnMessage.java | 0 .../textsecuregcm/push/GCMSender.java | 0 .../textsecuregcm/push/GcmMessage.java | 0 .../push/NotPushRegisteredException.java | 0 .../textsecuregcm/push/PushSender.java | 0 .../textsecuregcm/push/ReceiptSender.java | 0 .../push/RetryingApnsClient.java | 0 .../push/TransientPushFailureException.java | 0 .../textsecuregcm/push/WebsocketSender.java | 0 .../recaptcha/RecaptchaClient.java | 0 .../textsecuregcm/redis/LuaScript.java | 0 .../textsecuregcm/redis/RedisException.java | 0 .../textsecuregcm/redis/RedisOperation.java | 0 .../redis/ReplicatedJedisPool.java | 0 .../textsecuregcm/s3/PolicySigner.java | 0 .../textsecuregcm/s3/PostPolicyGenerator.java | 0 .../textsecuregcm/s3/UrlSigner.java | 0 .../textsecuregcm/sms/SmsSender.java | 0 .../textsecuregcm/sms/TwilioSmsSender.java | 0 .../textsecuregcm/sqs/DirectoryQueue.java | 0 .../storage/AbusiveHostRule.java | 0 .../storage/AbusiveHostRules.java | 0 .../textsecuregcm/storage/Account.java | 0 .../storage/AccountDatabaseCrawler.java | 0 .../storage/AccountDatabaseCrawlerCache.java | 0 .../AccountDatabaseCrawlerListener.java | 0 ...ccountDatabaseCrawlerRestartException.java | 0 .../textsecuregcm/storage/Accounts.java | 0 .../storage/AccountsManager.java | 0 .../storage/ActiveUserCounter.java | 0 .../textsecuregcm/storage/Device.java | 0 .../storage/DirectoryManager.java | 0 .../storage/DirectoryReconciler.java | 0 .../DirectoryReconciliationClient.java | 0 .../storage/FaultTolerantDatabase.java | 0 .../textsecuregcm/storage/KeyRecord.java | 0 .../textsecuregcm/storage/Keys.java | 0 .../textsecuregcm/storage/Messages.java | 0 .../textsecuregcm/storage/MessagesCache.java | 0 .../storage/MessagesManager.java | 0 .../storage/PendingAccounts.java | 0 .../storage/PendingAccountsManager.java | 0 .../textsecuregcm/storage/PendingDevices.java | 0 .../storage/PendingDevicesManager.java | 0 .../textsecuregcm/storage/PubSubAddress.java | 0 .../textsecuregcm/storage/PubSubManager.java | 0 .../textsecuregcm/storage/PubSubProtos.java | 0 .../textsecuregcm/storage/PublicAccount.java | 0 .../mappers/AbusiveHostRuleRowMapper.java | 0 .../storage/mappers/AccountRowMapper.java | 0 .../storage/mappers/KeyRecordRowMapper.java | 0 .../OutgoingMessageEntityRowMapper.java | 0 .../StoredVerificationCodeRowMapper.java | 0 .../textsecuregcm/util/Base64.java | 0 .../util/BlockingThreadPoolExecutor.java | 0 .../textsecuregcm/util/ByteArrayAdapter.java | 0 .../textsecuregcm/util/ByteUtil.java | 0 .../util/CircuitBreakerUtil.java | 0 .../textsecuregcm/util/Constants.java | 0 .../textsecuregcm/util/Conversions.java | 0 .../textsecuregcm/util/ExecutorUtils.java | 0 .../textsecuregcm/util/Hex.java | 0 .../textsecuregcm/util/IterablePair.java | 0 .../textsecuregcm/util/Pair.java | 0 .../textsecuregcm/util/SystemMapper.java | 0 .../textsecuregcm/util/Util.java | 0 .../textsecuregcm/util/VerificationCode.java | 0 .../AuthenticatedConnectListener.java | 0 .../websocket/DeadLetterHandler.java | 0 .../InvalidWebsocketAddressException.java | 0 .../websocket/ProvisioningAddress.java | 0 .../ProvisioningConnectListener.java | 0 .../websocket/ProvisioningConnection.java | 0 .../WebSocketAccountAuthenticator.java | 0 .../websocket/WebSocketConnection.java | 0 .../websocket/WebsocketAddress.java | 0 .../workers/CertificateCommand.java | 0 .../workers/DeleteUserCommand.java | 0 .../textsecuregcm/workers/VacuumCommand.java | 0 .../io.dropwizard.logging.AppenderFactory | 0 .../io.dropwizard.metrics.ReporterFactory | 0 .../src}/main/resources/abusedb.xml | 0 .../src}/main/resources/accountsdb.xml | 0 .../src}/main/resources/banner.txt | 0 .../lua/account_database_crawler/unlock.lua | 0 .../src}/main/resources/lua/apn/get.lua | 0 .../src}/main/resources/lua/apn/insert.lua | 0 .../src}/main/resources/lua/apn/remove.lua | 0 .../src}/main/resources/lua/get_items.lua | 0 .../resources/lua/get_queues_to_persist.lua | 0 .../src}/main/resources/lua/insert_item.lua | 0 .../resources/lua/remove_item_by_guid.lua | 0 .../main/resources/lua/remove_item_by_id.lua | 0 .../resources/lua/remove_item_by_sender.lua | 0 .../src}/main/resources/lua/remove_queue.lua | 0 .../src}/main/resources/messagedb.xml | 0 .../tests/auth/OptionalAccessTest.java | 0 .../controllers/AccountControllerTest.java | 0 .../controllers/AttachmentControllerTest.java | 0 .../CertificateControllerTest.java | 0 .../controllers/DeviceControllerTest.java | 0 .../controllers/DirectoryControllerTest.java | 0 .../tests/controllers/KeyControllerTest.java | 0 .../controllers/MessageControllerTest.java | 0 .../controllers/ProfileControllerTest.java | 0 .../TransparentDataControllerTest.java | 0 .../VoiceVerificationControllerTest.java | 0 .../tests/entities/ClientContactTest.java | 0 .../tests/entities/PreKeyTest.java | 0 .../http/FaultTolerantHttpClientTest.java | 0 .../tests/limits/LeakyBucketTest.java | 0 .../tests/push/APNSenderTest.java | 0 .../tests/push/GCMSenderTest.java | 0 .../tests/redis/ReplicatedJedisPoolTest.java | 0 .../tests/s3/PolicySignerTest.java | 0 .../tests}/sms/TwilioSmsSenderTest.java | 0 .../tests/storage/AbusiveHostRulesTest.java | 0 .../storage/AccountDatabaseCrawlerTest.java | 0 .../tests/storage/AccountTest.java | 0 .../tests/storage/AccountsManagerTest.java | 0 .../tests/storage/AccountsTest.java | 0 .../tests/storage/ActiveUserCounterTest.java | 0 .../storage/DirectoryReconcilerTest.java | 0 .../textsecuregcm/tests/storage/KeysTest.java | 0 .../tests/storage/MessagesTest.java | 0 .../tests/storage/PendingAccountsTest.java | 0 .../tests/storage/PendingDevicesTest.java | 0 .../tests/storage/PublicAccountTest.java | 0 .../textsecuregcm/tests/util/AuthHelper.java | 0 .../util/BlockingThreadPoolExecutorTest.java | 0 .../textsecuregcm/tests/util/JsonHelpers.java | 0 .../tests/util/NumberPrefixTest.java | 0 .../util/SynchronousExecutorService.java | 0 .../tests/util/UrlSignerTest.java | 0 .../tests/util/ValidNumberTest.java | 0 .../websocket/WebSocketConnectionTest.java | 0 .../src}/test/resources/fixtures/contact.json | 0 .../resources/fixtures/contact.relay.json | 0 .../fixtures/contact.relay.video.json | 0 .../fixtures/contact.relay.voice.json | 0 .../current_message_extra_device.json | 0 .../current_message_multi_device.json | 0 .../current_message_registration_id.json | 0 .../current_message_single_device.json | 0 .../legacy_message_single_device.json | 0 .../fixtures/mismatched_registration_id.json | 0 .../fixtures/missing_device_response.json | 0 .../fixtures/missing_device_response2.json | 0 .../src}/test/resources/fixtures/prekey.json | 0 .../test/resources/fixtures/prekey_v2.json | 0 .../fixtures/transparent_account.json | 0 .../fixtures/transparent_account2.json | 0 .../fixtures/voice_verification_en_us.xml | 0 .../fixtures/voice_verification_pt_br.xml | 0 .../fixtures/voice_verification_ru.xml | 0 system.properties | 1 - 318 files changed, 255 insertions(+), 215 deletions(-) create mode 100644 redis-dispatch/pom.xml rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/DispatchChannel.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/DispatchManager.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/io/RedisInputStream.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/io/RedisPubSubConnectionFactory.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/redis/PubSubConnection.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/redis/PubSubReply.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeader.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/redis/protocol/IntReply.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeader.java (100%) rename {src => redis-dispatch/src}/main/java/org/whispersystems/dispatch/util/Util.java (100%) rename {src => redis-dispatch/src}/test/java/org/whispersystems/dispatch/DispatchManagerTest.java (100%) rename {src => redis-dispatch/src}/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java (99%) rename {src => redis-dispatch/src}/test/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeaderTest.java (100%) rename {src => redis-dispatch/src}/test/java/org/whispersystems/dispatch/redis/protocol/IntReplyHeaderTest.java (100%) rename {src => redis-dispatch/src}/test/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeaderTest.java (100%) create mode 100644 service/pom.xml rename {protobuf => service/protobuf}/Makefile (100%) rename {protobuf => service/protobuf}/PubSubMessage.proto (100%) rename {protobuf => service/protobuf}/TextSecure.proto (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/AccountAuthenticator.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/Anonymous.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/AuthenticationCredentials.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/AuthorizationHeader.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/CertificateGenerator.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentials.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentialsGenerator.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/InvalidAuthorizationHeaderException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/OptionalAccess.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/StoredVerificationCode.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/TurnToken.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/TurnTokenGenerator.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/auth/UnidentifiedAccessChecksum.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/AccountDatabaseCrawlerConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/ApnConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/AttachmentsConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/DatabaseConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryClientConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryServerConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/GcmConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/GraphiteConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/MaxDeviceConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/MessageCacheConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/ProfilesConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/PushConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/RateLimitsConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/RecaptchaConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/RedisConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/RetryConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/SqsConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/TestDeviceConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/TurnConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/TwilioConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/UnidentifiedDeliveryConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/configuration/VoiceVerificationConfiguration.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerBase.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV1.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV2.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/CertificateController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/DeviceLimitExceededException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/DirectoryController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/InvalidDestinationException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/KeepAliveController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/MismatchedDevicesException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/NoSuchUserException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/ProvisioningController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/RateLimitExceededException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/StaleDevicesException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/TransparentDataController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/ValidationException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/controllers/VoiceVerificationController.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/crypto/Curve.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPrivateKey.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPublicKey.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/crypto/ECKeyPair.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/crypto/ECPrivateKey.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/crypto/ECPublicKey.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/AccountCount.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/AcknowledgeWebsocketMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ActiveUserTally.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ApnRegistrationId.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV1.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV2.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/AttachmentUri.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ClientContact.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ClientContactTokens.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ClientContacts.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/CryptoEncodingException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DeliveryCertificate.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfo.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfoList.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DeviceName.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DeviceResponse.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DirectoryFeedbackRequest.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationRequest.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationResponse.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/EncryptedOutgoingMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/GcmRegistrationId.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessageList.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/IncomingWebsocketMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/MessageProtos.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/MessageResponse.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/MismatchedDevices.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntity.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityList.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/PreKey.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/PreKeyCount.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponse.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponseItem.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/PreKeyState.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/Profile.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ProfileAvatarUploadAttributes.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/ProvisioningMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLock.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLockFailure.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/SendMessageResponse.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/SignedPreKey.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/StaleDevices.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEvent.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEventList.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/http/FaultTolerantHttpClient.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/http/FormDataBodyPublisher.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/limits/LeakyBucket.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/limits/LockingRateLimiter.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/limits/RateLimiter.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/limits/RateLimiters.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/liquibase/AbstractLiquibaseCommand.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/liquibase/CloseableLiquibase.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/liquibase/DbMigrateCommand.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/liquibase/DbStatusCommand.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/liquibase/NameableDbCommand.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/liquibase/NameableMigrationsBundle.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/mappers/DeviceLimitExceededExceptionMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/mappers/IOExceptionMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/mappers/InvalidWebsocketAddressExceptionMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/mappers/RateLimitExceededExceptionMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/CpuUsageGauge.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/FileDescriptorGauge.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporter.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporterFactory.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/providers/RedisClientFactory.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/providers/RedisHealthCheck.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/providers/TimeProvider.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/APNSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/ApnMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/GcmMessage.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/NotPushRegisteredException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/PushSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/ReceiptSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/RetryingApnsClient.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/TransientPushFailureException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/push/WebsocketSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/recaptcha/RecaptchaClient.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/redis/LuaScript.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/redis/RedisException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/redis/RedisOperation.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/s3/PolicySigner.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/s3/PostPolicyGenerator.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/s3/UrlSigner.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/sms/SmsSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/sqs/DirectoryQueue.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRule.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRules.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/Account.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawler.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerCache.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerListener.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerRestartException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/ActiveUserCounter.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/Device.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/DirectoryManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciler.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciliationClient.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/KeyRecord.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/Keys.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/Messages.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/MessagesManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PendingAccounts.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PendingAccountsManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PendingDevices.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PendingDevicesManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PubSubAddress.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PubSubManager.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PubSubProtos.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/PublicAccount.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/mappers/AbusiveHostRuleRowMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/mappers/AccountRowMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/mappers/KeyRecordRowMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/mappers/OutgoingMessageEntityRowMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/storage/mappers/StoredVerificationCodeRowMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/Base64.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/BlockingThreadPoolExecutor.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/ByteArrayAdapter.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/ByteUtil.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/CircuitBreakerUtil.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/Constants.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/Conversions.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/ExecutorUtils.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/Hex.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/IterablePair.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/Pair.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/SystemMapper.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/Util.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/util/VerificationCode.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/AuthenticatedConnectListener.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/DeadLetterHandler.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/InvalidWebsocketAddressException.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningAddress.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnectListener.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnection.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketAccountAuthenticator.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/websocket/WebsocketAddress.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/workers/CertificateCommand.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java (100%) rename {src => service/src}/main/java/org/whispersystems/textsecuregcm/workers/VacuumCommand.java (100%) rename {src => service/src}/main/resources/META-INF/services/io.dropwizard.logging.AppenderFactory (100%) rename {src => service/src}/main/resources/META-INF/services/io.dropwizard.metrics.ReporterFactory (100%) rename {src => service/src}/main/resources/abusedb.xml (100%) rename {src => service/src}/main/resources/accountsdb.xml (100%) rename {src => service/src}/main/resources/banner.txt (100%) rename {src => service/src}/main/resources/lua/account_database_crawler/unlock.lua (100%) rename {src => service/src}/main/resources/lua/apn/get.lua (100%) rename {src => service/src}/main/resources/lua/apn/insert.lua (100%) rename {src => service/src}/main/resources/lua/apn/remove.lua (100%) rename {src => service/src}/main/resources/lua/get_items.lua (100%) rename {src => service/src}/main/resources/lua/get_queues_to_persist.lua (100%) rename {src => service/src}/main/resources/lua/insert_item.lua (100%) rename {src => service/src}/main/resources/lua/remove_item_by_guid.lua (100%) rename {src => service/src}/main/resources/lua/remove_item_by_id.lua (100%) rename {src => service/src}/main/resources/lua/remove_item_by_sender.lua (100%) rename {src => service/src}/main/resources/lua/remove_queue.lua (100%) rename {src => service/src}/main/resources/messagedb.xml (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/auth/OptionalAccessTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/AttachmentControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/CertificateControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/DirectoryControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/KeyControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/ProfileControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/TransparentDataControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/controllers/VoiceVerificationControllerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/entities/ClientContactTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/entities/PreKeyTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/http/FaultTolerantHttpClientTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/limits/LeakyBucketTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/push/APNSenderTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/push/GCMSenderTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/redis/ReplicatedJedisPoolTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/s3/PolicySignerTest.java (100%) rename {src/test/java/org/whispersystems => service/src/test/java/org/whispersystems/textsecuregcm/tests}/sms/TwilioSmsSenderTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/AbusiveHostRulesTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountDatabaseCrawlerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsManagerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/ActiveUserCounterTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/DirectoryReconcilerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/KeysTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/MessagesTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingAccountsTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingDevicesTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/storage/PublicAccountTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/AuthHelper.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/BlockingThreadPoolExecutorTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/JsonHelpers.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/NumberPrefixTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/SynchronousExecutorService.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/util/ValidNumberTest.java (100%) rename {src => service/src}/test/java/org/whispersystems/textsecuregcm/tests/websocket/WebSocketConnectionTest.java (100%) rename {src => service/src}/test/resources/fixtures/contact.json (100%) rename {src => service/src}/test/resources/fixtures/contact.relay.json (100%) rename {src => service/src}/test/resources/fixtures/contact.relay.video.json (100%) rename {src => service/src}/test/resources/fixtures/contact.relay.voice.json (100%) rename {src => service/src}/test/resources/fixtures/current_message_extra_device.json (100%) rename {src => service/src}/test/resources/fixtures/current_message_multi_device.json (100%) rename {src => service/src}/test/resources/fixtures/current_message_registration_id.json (100%) rename {src => service/src}/test/resources/fixtures/current_message_single_device.json (100%) rename {src => service/src}/test/resources/fixtures/legacy_message_single_device.json (100%) rename {src => service/src}/test/resources/fixtures/mismatched_registration_id.json (100%) rename {src => service/src}/test/resources/fixtures/missing_device_response.json (100%) rename {src => service/src}/test/resources/fixtures/missing_device_response2.json (100%) rename {src => service/src}/test/resources/fixtures/prekey.json (100%) rename {src => service/src}/test/resources/fixtures/prekey_v2.json (100%) rename {src => service/src}/test/resources/fixtures/transparent_account.json (100%) rename {src => service/src}/test/resources/fixtures/transparent_account2.json (100%) rename {src => service/src}/test/resources/fixtures/voice_verification_en_us.xml (100%) rename {src => service/src}/test/resources/fixtures/voice_verification_pt_br.xml (100%) rename {src => service/src}/test/resources/fixtures/voice_verification_ru.xml (100%) delete mode 100644 system.properties diff --git a/pom.xml b/pom.xml index 69882cdfe..1dd8dcfa6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,10 +3,16 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + pom 3.0.0 + + redis-dispatch + service + + org.whispersystems.textsecure TextSecureServer 2.52 @@ -14,7 +20,6 @@ 1.3.9 2.9.8 - 0.14.1 UTF-8 @@ -44,109 +49,6 @@ dropwizard-migrations ${dropwizard.version} - - io.dropwizard - dropwizard-testing - ${dropwizard.version} - - - io.dropwizard - dropwizard-metrics-graphite - ${dropwizard.version} - - - org.bouncycastle - bcprov-jdk16 - 1.46 - - - org.syslog4j - syslog4j - 0.9.30 - - - - io.github.resilience4j - resilience4j-circuitbreaker - ${resilience4j.version} - - - io.github.resilience4j - resilience4j-retry - ${resilience4j.version} - - - - - com.amazonaws - aws-java-sdk-s3 - 1.11.366 - - - com.amazonaws - aws-java-sdk-sqs - 1.11.362 - - - com.google.protobuf - protobuf-java - 2.6.1 - - - - redis.clients - jedis - 2.9.0 - jar - compile - - - - org.postgresql - postgresql - 9.4-1201-jdbc41 - - - org.whispersystems - websocket-resources - 0.5.10 - - - org.whispersystems - curve25519-java - 0.5.0 - - - - - com.turo - pushy - 0.13.7 - - - com.turo - pushy-dropwizard-metrics-listener - 0.13.7 - - - io.netty - netty-tcnative-boringssl-static - 2.0.20.Final - runtime - - - - - org.whispersystems - gcm-sender-async - 0.1.6 - - - - com.googlecode.libphonenumber - libphonenumber - 8.10.2 - javax.xml.bind @@ -161,33 +63,9 @@ - org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-grizzly2 - 2.19 - test - - - javax.servlet - javax.servlet-api - - - junit - junit - - - - - - org.mockito - mockito-core - 2.25.1 - test - - - - com.opentable.components - otj-pg-embedded - 0.13.1 + io.dropwizard + dropwizard-testing + ${dropwizard.version} test @@ -210,30 +88,14 @@ - + + org.mockito + mockito-core + 2.25.1 + test + - - - - org.apache.httpcomponents - httpclient - 4.4.1 - - - org.apache.httpcomponents - httpcore - 4.4.1 - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.api.version} - - - - @@ -257,40 +119,6 @@ - - org.apache.maven.plugins - maven-shade-plugin - 1.6 - - true - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - package - - shade - - - - - - org.whispersystems.textsecuregcm.WhisperServerService - - - - - - org.apache.maven.plugins @@ -298,33 +126,7 @@ 3.0.0-M1 - - maven-assembly-plugin - 2.4 - - - assembly.xml - - - - - make-assembly - package - - single - - - - - - - - gcm-server-repository - https://raw.github.com/whispersystems/maven/master/gcm-server/releases/ - - - diff --git a/redis-dispatch/pom.xml b/redis-dispatch/pom.xml new file mode 100644 index 000000000..55a86d215 --- /dev/null +++ b/redis-dispatch/pom.xml @@ -0,0 +1,17 @@ + + + + TextSecureServer + org.whispersystems.textsecure + 2.49 + + 4.0.0 + + org.whispersystems.textsecure + redis-dispatch + 2.49 + + + \ No newline at end of file diff --git a/src/main/java/org/whispersystems/dispatch/DispatchChannel.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/DispatchChannel.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/DispatchChannel.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/DispatchChannel.java diff --git a/src/main/java/org/whispersystems/dispatch/DispatchManager.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/DispatchManager.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/DispatchManager.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/DispatchManager.java diff --git a/src/main/java/org/whispersystems/dispatch/io/RedisInputStream.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/io/RedisInputStream.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/io/RedisInputStream.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/io/RedisInputStream.java diff --git a/src/main/java/org/whispersystems/dispatch/io/RedisPubSubConnectionFactory.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/io/RedisPubSubConnectionFactory.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/io/RedisPubSubConnectionFactory.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/io/RedisPubSubConnectionFactory.java diff --git a/src/main/java/org/whispersystems/dispatch/redis/PubSubConnection.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/PubSubConnection.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/redis/PubSubConnection.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/PubSubConnection.java diff --git a/src/main/java/org/whispersystems/dispatch/redis/PubSubReply.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/PubSubReply.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/redis/PubSubReply.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/PubSubReply.java diff --git a/src/main/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeader.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeader.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeader.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeader.java diff --git a/src/main/java/org/whispersystems/dispatch/redis/protocol/IntReply.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/protocol/IntReply.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/redis/protocol/IntReply.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/protocol/IntReply.java diff --git a/src/main/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeader.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeader.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeader.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeader.java diff --git a/src/main/java/org/whispersystems/dispatch/util/Util.java b/redis-dispatch/src/main/java/org/whispersystems/dispatch/util/Util.java similarity index 100% rename from src/main/java/org/whispersystems/dispatch/util/Util.java rename to redis-dispatch/src/main/java/org/whispersystems/dispatch/util/Util.java diff --git a/src/test/java/org/whispersystems/dispatch/DispatchManagerTest.java b/redis-dispatch/src/test/java/org/whispersystems/dispatch/DispatchManagerTest.java similarity index 100% rename from src/test/java/org/whispersystems/dispatch/DispatchManagerTest.java rename to redis-dispatch/src/test/java/org/whispersystems/dispatch/DispatchManagerTest.java diff --git a/src/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java b/redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java similarity index 99% rename from src/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java rename to redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java index c0fc63c5f..d827cdff8 100644 --- a/src/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java +++ b/redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/PubSubConnectionTest.java @@ -9,7 +9,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; -import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import static org.junit.Assert.*; diff --git a/src/test/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeaderTest.java b/redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeaderTest.java similarity index 100% rename from src/test/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeaderTest.java rename to redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/protocol/ArrayReplyHeaderTest.java diff --git a/src/test/java/org/whispersystems/dispatch/redis/protocol/IntReplyHeaderTest.java b/redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/protocol/IntReplyHeaderTest.java similarity index 100% rename from src/test/java/org/whispersystems/dispatch/redis/protocol/IntReplyHeaderTest.java rename to redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/protocol/IntReplyHeaderTest.java diff --git a/src/test/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeaderTest.java b/redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeaderTest.java similarity index 100% rename from src/test/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeaderTest.java rename to redis-dispatch/src/test/java/org/whispersystems/dispatch/redis/protocol/StringReplyHeaderTest.java diff --git a/service/pom.xml b/service/pom.xml new file mode 100644 index 000000000..7a710b21e --- /dev/null +++ b/service/pom.xml @@ -0,0 +1,223 @@ + + + + TextSecureServer + org.whispersystems.textsecure + 2.49 + + 4.0.0 + + org.whispersystems.textsecure + service + 2.49 + + + 0.14.1 + UTF-8 + + + + + org.whispersystems.textsecure + redis-dispatch + 2.49 + + + + org.bouncycastle + bcprov-jdk16 + 1.46 + + + org.syslog4j + syslog4j + 0.9.30 + + + + + io.github.resilience4j + resilience4j-circuitbreaker + ${resilience4j.version} + + + io.github.resilience4j + resilience4j-retry + ${resilience4j.version} + + + + + com.amazonaws + aws-java-sdk-s3 + 1.11.366 + + + com.amazonaws + aws-java-sdk-sqs + 1.11.362 + + + com.google.protobuf + protobuf-java + 2.6.1 + + + + redis.clients + jedis + 2.9.0 + jar + compile + + + com.twilio.sdk + twilio-java-sdk + 4.4.4 + + + + org.postgresql + postgresql + 9.4-1201-jdbc41 + + + org.whispersystems + websocket-resources + 0.5.10 + + + org.whispersystems + curve25519-java + 0.5.0 + + + + + com.turo + pushy + 0.13.7 + + + com.turo + pushy-dropwizard-metrics-listener + 0.13.7 + + + io.dropwizard.metrics + metrics-core + + + + + io.netty + netty-tcnative-boringssl-static + 2.0.20.Final + runtime + + + + + org.whispersystems + gcm-sender-async + 0.1.6 + + + + com.googlecode.libphonenumber + libphonenumber + 8.10.2 + + + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-grizzly2 + 2.25.1 + test + + + javax.servlet + javax.servlet-api + + + junit + junit + + + + + + com.opentable.components + otj-pg-embedded + 0.13.1 + test + + + + + + + + org.apache.httpcomponents + httpclient + 4.4.1 + + + org.apache.httpcomponents + httpcore + 4.4.1 + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.api.version} + + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 1.6 + + true + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + package + + shade + + + + + + org.whispersystems.textsecuregcm.WhisperServerService + + + + + + + + + + + diff --git a/protobuf/Makefile b/service/protobuf/Makefile similarity index 100% rename from protobuf/Makefile rename to service/protobuf/Makefile diff --git a/protobuf/PubSubMessage.proto b/service/protobuf/PubSubMessage.proto similarity index 100% rename from protobuf/PubSubMessage.proto rename to service/protobuf/PubSubMessage.proto diff --git a/protobuf/TextSecure.proto b/service/protobuf/TextSecure.proto similarity index 100% rename from protobuf/TextSecure.proto rename to service/protobuf/TextSecure.proto diff --git a/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java rename to service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/AccountAuthenticator.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/AccountAuthenticator.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/AccountAuthenticator.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/AccountAuthenticator.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/Anonymous.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/Anonymous.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/Anonymous.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/Anonymous.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/AuthenticationCredentials.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthenticationCredentials.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/AuthenticationCredentials.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthenticationCredentials.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/AuthorizationHeader.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthorizationHeader.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/AuthorizationHeader.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthorizationHeader.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/CertificateGenerator.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/CertificateGenerator.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/CertificateGenerator.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/CertificateGenerator.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentials.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentials.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentials.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentials.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentialsGenerator.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentialsGenerator.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentialsGenerator.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/DirectoryCredentialsGenerator.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/InvalidAuthorizationHeaderException.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/InvalidAuthorizationHeaderException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/InvalidAuthorizationHeaderException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/InvalidAuthorizationHeaderException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/OptionalAccess.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/OptionalAccess.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/OptionalAccess.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/OptionalAccess.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/StoredVerificationCode.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/StoredVerificationCode.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/StoredVerificationCode.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/StoredVerificationCode.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/TurnToken.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/TurnToken.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/TurnToken.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/TurnToken.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/TurnTokenGenerator.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/TurnTokenGenerator.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/TurnTokenGenerator.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/TurnTokenGenerator.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/auth/UnidentifiedAccessChecksum.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/UnidentifiedAccessChecksum.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/auth/UnidentifiedAccessChecksum.java rename to service/src/main/java/org/whispersystems/textsecuregcm/auth/UnidentifiedAccessChecksum.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/AccountDatabaseCrawlerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/AccountDatabaseCrawlerConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/AccountDatabaseCrawlerConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/AccountDatabaseCrawlerConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/ApnConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/ApnConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/ApnConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/ApnConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/AttachmentsConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/AttachmentsConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/AttachmentsConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/AttachmentsConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/DatabaseConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DatabaseConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/DatabaseConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/DatabaseConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryClientConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryClientConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryClientConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryClientConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryServerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryServerConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryServerConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/DirectoryServerConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/GcmConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/GcmConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/GcmConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/GcmConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/GraphiteConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/GraphiteConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/GraphiteConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/GraphiteConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/MaxDeviceConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/MaxDeviceConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/MaxDeviceConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/MaxDeviceConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/MessageCacheConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/MessageCacheConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/MessageCacheConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/MessageCacheConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/ProfilesConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/ProfilesConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/ProfilesConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/ProfilesConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/PushConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/PushConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/PushConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/PushConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/RateLimitsConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/RateLimitsConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/RateLimitsConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/RateLimitsConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/RecaptchaConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/RecaptchaConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/RecaptchaConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/RecaptchaConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/RedisConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/RedisConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/RedisConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/RedisConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/RetryConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/RetryConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/RetryConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/RetryConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/SqsConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/SqsConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/SqsConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/SqsConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/TestDeviceConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/TestDeviceConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/TestDeviceConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/TestDeviceConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/TurnConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/TurnConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/TurnConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/TurnConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/TwilioConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/TwilioConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/TwilioConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/TwilioConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/UnidentifiedDeliveryConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/UnidentifiedDeliveryConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/UnidentifiedDeliveryConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/UnidentifiedDeliveryConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/configuration/VoiceVerificationConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/VoiceVerificationConfiguration.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/configuration/VoiceVerificationConfiguration.java rename to service/src/main/java/org/whispersystems/textsecuregcm/configuration/VoiceVerificationConfiguration.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerBase.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerBase.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerBase.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerBase.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV1.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV1.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV1.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV1.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV2.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV2.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV2.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/AttachmentControllerV2.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/CertificateController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/CertificateController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/CertificateController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/CertificateController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceLimitExceededException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceLimitExceededException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceLimitExceededException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceLimitExceededException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/DirectoryController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DirectoryController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/DirectoryController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/DirectoryController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/InvalidDestinationException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/InvalidDestinationException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/InvalidDestinationException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/InvalidDestinationException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/KeepAliveController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeepAliveController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/KeepAliveController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeepAliveController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/MismatchedDevicesException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MismatchedDevicesException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/MismatchedDevicesException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/MismatchedDevicesException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/NoSuchUserException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/NoSuchUserException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/NoSuchUserException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/NoSuchUserException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/ProvisioningController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProvisioningController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/ProvisioningController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProvisioningController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/RateLimitExceededException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/RateLimitExceededException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/RateLimitExceededException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/RateLimitExceededException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/StaleDevicesException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/StaleDevicesException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/StaleDevicesException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/StaleDevicesException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/TransparentDataController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/TransparentDataController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/TransparentDataController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/TransparentDataController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/ValidationException.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ValidationException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/ValidationException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/ValidationException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/VoiceVerificationController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/VoiceVerificationController.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/controllers/VoiceVerificationController.java rename to service/src/main/java/org/whispersystems/textsecuregcm/controllers/VoiceVerificationController.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/crypto/Curve.java b/service/src/main/java/org/whispersystems/textsecuregcm/crypto/Curve.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/crypto/Curve.java rename to service/src/main/java/org/whispersystems/textsecuregcm/crypto/Curve.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPrivateKey.java b/service/src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPrivateKey.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPrivateKey.java rename to service/src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPrivateKey.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPublicKey.java b/service/src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPublicKey.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPublicKey.java rename to service/src/main/java/org/whispersystems/textsecuregcm/crypto/DjbECPublicKey.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/crypto/ECKeyPair.java b/service/src/main/java/org/whispersystems/textsecuregcm/crypto/ECKeyPair.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/crypto/ECKeyPair.java rename to service/src/main/java/org/whispersystems/textsecuregcm/crypto/ECKeyPair.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/crypto/ECPrivateKey.java b/service/src/main/java/org/whispersystems/textsecuregcm/crypto/ECPrivateKey.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/crypto/ECPrivateKey.java rename to service/src/main/java/org/whispersystems/textsecuregcm/crypto/ECPrivateKey.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/crypto/ECPublicKey.java b/service/src/main/java/org/whispersystems/textsecuregcm/crypto/ECPublicKey.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/crypto/ECPublicKey.java rename to service/src/main/java/org/whispersystems/textsecuregcm/crypto/ECPublicKey.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/AccountCount.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountCount.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/AccountCount.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountCount.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/AcknowledgeWebsocketMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AcknowledgeWebsocketMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/AcknowledgeWebsocketMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/AcknowledgeWebsocketMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ActiveUserTally.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ActiveUserTally.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ActiveUserTally.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ActiveUserTally.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ApnRegistrationId.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ApnRegistrationId.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ApnRegistrationId.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ApnRegistrationId.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV1.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV1.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV1.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV1.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV2.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV2.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV2.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentDescriptorV2.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentUri.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentUri.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentUri.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/AttachmentUri.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContact.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContact.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ClientContact.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContact.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContactTokens.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContactTokens.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ClientContactTokens.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContactTokens.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContacts.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContacts.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ClientContacts.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ClientContacts.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/CryptoEncodingException.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/CryptoEncodingException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/CryptoEncodingException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/CryptoEncodingException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DeliveryCertificate.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DeliveryCertificate.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DeliveryCertificate.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DeliveryCertificate.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfo.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfo.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfo.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfo.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfoList.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfoList.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfoList.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceInfoList.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceName.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceName.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DeviceName.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceName.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceResponse.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceResponse.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DeviceResponse.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DeviceResponse.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryFeedbackRequest.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryFeedbackRequest.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryFeedbackRequest.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryFeedbackRequest.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationRequest.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationRequest.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationRequest.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationRequest.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationResponse.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationResponse.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationResponse.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/DirectoryReconciliationResponse.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/EncryptedOutgoingMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/EncryptedOutgoingMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/EncryptedOutgoingMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/EncryptedOutgoingMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/GcmRegistrationId.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/GcmRegistrationId.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/GcmRegistrationId.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/GcmRegistrationId.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessageList.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessageList.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessageList.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessageList.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingWebsocketMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingWebsocketMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/IncomingWebsocketMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingWebsocketMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/MessageProtos.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/MessageProtos.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/MessageProtos.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/MessageProtos.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/MessageResponse.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/MessageResponse.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/MessageResponse.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/MessageResponse.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/MismatchedDevices.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/MismatchedDevices.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/MismatchedDevices.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/MismatchedDevices.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntity.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntity.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntity.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntity.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityList.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityList.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityList.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityList.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/PreKey.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKey.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/PreKey.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKey.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyCount.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyCount.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyCount.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyCount.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponse.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponse.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponse.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponse.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponseItem.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponseItem.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponseItem.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyResponseItem.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyState.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyState.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyState.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/PreKeyState.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/Profile.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/Profile.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/Profile.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/Profile.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ProfileAvatarUploadAttributes.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ProfileAvatarUploadAttributes.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ProfileAvatarUploadAttributes.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ProfileAvatarUploadAttributes.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/ProvisioningMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/ProvisioningMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/ProvisioningMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/ProvisioningMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLock.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLock.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLock.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLock.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLockFailure.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLockFailure.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLockFailure.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/RegistrationLockFailure.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/SendMessageResponse.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/SendMessageResponse.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/SendMessageResponse.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/SendMessageResponse.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/SignedPreKey.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/SignedPreKey.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/SignedPreKey.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/SignedPreKey.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/StaleDevices.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/StaleDevices.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/StaleDevices.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/StaleDevices.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEvent.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEvent.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEvent.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEvent.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEventList.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEventList.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEventList.java rename to service/src/main/java/org/whispersystems/textsecuregcm/entities/UnregisteredEventList.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/http/FaultTolerantHttpClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/http/FaultTolerantHttpClient.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/http/FaultTolerantHttpClient.java rename to service/src/main/java/org/whispersystems/textsecuregcm/http/FaultTolerantHttpClient.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/http/FormDataBodyPublisher.java b/service/src/main/java/org/whispersystems/textsecuregcm/http/FormDataBodyPublisher.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/http/FormDataBodyPublisher.java rename to service/src/main/java/org/whispersystems/textsecuregcm/http/FormDataBodyPublisher.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/limits/LeakyBucket.java b/service/src/main/java/org/whispersystems/textsecuregcm/limits/LeakyBucket.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/limits/LeakyBucket.java rename to service/src/main/java/org/whispersystems/textsecuregcm/limits/LeakyBucket.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/limits/LockingRateLimiter.java b/service/src/main/java/org/whispersystems/textsecuregcm/limits/LockingRateLimiter.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/limits/LockingRateLimiter.java rename to service/src/main/java/org/whispersystems/textsecuregcm/limits/LockingRateLimiter.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiter.java b/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiter.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiter.java rename to service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiter.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiters.java b/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiters.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiters.java rename to service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimiters.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/liquibase/AbstractLiquibaseCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/liquibase/AbstractLiquibaseCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/liquibase/AbstractLiquibaseCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/liquibase/AbstractLiquibaseCommand.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/liquibase/CloseableLiquibase.java b/service/src/main/java/org/whispersystems/textsecuregcm/liquibase/CloseableLiquibase.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/liquibase/CloseableLiquibase.java rename to service/src/main/java/org/whispersystems/textsecuregcm/liquibase/CloseableLiquibase.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/liquibase/DbMigrateCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/liquibase/DbMigrateCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/liquibase/DbMigrateCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/liquibase/DbMigrateCommand.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/liquibase/DbStatusCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/liquibase/DbStatusCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/liquibase/DbStatusCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/liquibase/DbStatusCommand.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableDbCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableDbCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableDbCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableDbCommand.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableMigrationsBundle.java b/service/src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableMigrationsBundle.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableMigrationsBundle.java rename to service/src/main/java/org/whispersystems/textsecuregcm/liquibase/NameableMigrationsBundle.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/mappers/DeviceLimitExceededExceptionMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/mappers/DeviceLimitExceededExceptionMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/mappers/DeviceLimitExceededExceptionMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/mappers/DeviceLimitExceededExceptionMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/mappers/IOExceptionMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/mappers/IOExceptionMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/mappers/IOExceptionMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/mappers/IOExceptionMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/mappers/InvalidWebsocketAddressExceptionMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/mappers/InvalidWebsocketAddressExceptionMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/mappers/InvalidWebsocketAddressExceptionMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/mappers/InvalidWebsocketAddressExceptionMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/mappers/RateLimitExceededExceptionMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/mappers/RateLimitExceededExceptionMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/mappers/RateLimitExceededExceptionMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/mappers/RateLimitExceededExceptionMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/CpuUsageGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/CpuUsageGauge.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/CpuUsageGauge.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/CpuUsageGauge.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/FileDescriptorGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/FileDescriptorGauge.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/FileDescriptorGauge.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/FileDescriptorGauge.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/FreeMemoryGauge.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporter.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporter.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporter.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporter.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporterFactory.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporterFactory.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporterFactory.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/JsonMetricsReporterFactory.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java rename to service/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/providers/RedisClientFactory.java b/service/src/main/java/org/whispersystems/textsecuregcm/providers/RedisClientFactory.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/providers/RedisClientFactory.java rename to service/src/main/java/org/whispersystems/textsecuregcm/providers/RedisClientFactory.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/providers/RedisHealthCheck.java b/service/src/main/java/org/whispersystems/textsecuregcm/providers/RedisHealthCheck.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/providers/RedisHealthCheck.java rename to service/src/main/java/org/whispersystems/textsecuregcm/providers/RedisHealthCheck.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/providers/TimeProvider.java b/service/src/main/java/org/whispersystems/textsecuregcm/providers/TimeProvider.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/providers/TimeProvider.java rename to service/src/main/java/org/whispersystems/textsecuregcm/providers/TimeProvider.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/APNSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/APNSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/APNSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/APNSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/ApnFallbackManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/ApnMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/ApnMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/ApnMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/ApnMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/GcmMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/GcmMessage.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/GcmMessage.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/GcmMessage.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/NotPushRegisteredException.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/NotPushRegisteredException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/NotPushRegisteredException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/NotPushRegisteredException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/PushSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/PushSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/PushSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/PushSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/ReceiptSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/ReceiptSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/ReceiptSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/ReceiptSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/RetryingApnsClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/RetryingApnsClient.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/RetryingApnsClient.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/RetryingApnsClient.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/TransientPushFailureException.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/TransientPushFailureException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/TransientPushFailureException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/TransientPushFailureException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/push/WebsocketSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/WebsocketSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/push/WebsocketSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/push/WebsocketSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/recaptcha/RecaptchaClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/RecaptchaClient.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/recaptcha/RecaptchaClient.java rename to service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/RecaptchaClient.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/redis/LuaScript.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/LuaScript.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/redis/LuaScript.java rename to service/src/main/java/org/whispersystems/textsecuregcm/redis/LuaScript.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/redis/RedisException.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/RedisException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/redis/RedisException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/redis/RedisException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/redis/RedisOperation.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/RedisOperation.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/redis/RedisOperation.java rename to service/src/main/java/org/whispersystems/textsecuregcm/redis/RedisOperation.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java rename to service/src/main/java/org/whispersystems/textsecuregcm/redis/ReplicatedJedisPool.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/s3/PolicySigner.java b/service/src/main/java/org/whispersystems/textsecuregcm/s3/PolicySigner.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/s3/PolicySigner.java rename to service/src/main/java/org/whispersystems/textsecuregcm/s3/PolicySigner.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/s3/PostPolicyGenerator.java b/service/src/main/java/org/whispersystems/textsecuregcm/s3/PostPolicyGenerator.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/s3/PostPolicyGenerator.java rename to service/src/main/java/org/whispersystems/textsecuregcm/s3/PostPolicyGenerator.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/s3/UrlSigner.java b/service/src/main/java/org/whispersystems/textsecuregcm/s3/UrlSigner.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/s3/UrlSigner.java rename to service/src/main/java/org/whispersystems/textsecuregcm/s3/UrlSigner.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/sms/SmsSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/sms/SmsSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/sms/SmsSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/sms/SmsSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java rename to service/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/sqs/DirectoryQueue.java b/service/src/main/java/org/whispersystems/textsecuregcm/sqs/DirectoryQueue.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/sqs/DirectoryQueue.java rename to service/src/main/java/org/whispersystems/textsecuregcm/sqs/DirectoryQueue.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRule.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRule.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRule.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRule.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRules.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRules.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRules.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AbusiveHostRules.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/Account.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawler.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawler.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawler.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawler.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerCache.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerCache.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerCache.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerCache.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerListener.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerListener.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerListener.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerRestartException.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerRestartException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerRestartException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountDatabaseCrawlerRestartException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/ActiveUserCounter.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ActiveUserCounter.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/ActiveUserCounter.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/ActiveUserCounter.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/Device.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciler.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciler.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciler.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciler.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciliationClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciliationClient.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciliationClient.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/DirectoryReconciliationClient.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/FaultTolerantDatabase.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/KeyRecord.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/KeyRecord.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/KeyRecord.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/KeyRecord.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesCache.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/MessagesManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccounts.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccounts.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccounts.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccounts.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccountsManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccountsManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccountsManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingAccountsManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevices.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevices.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevices.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevices.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevicesManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevicesManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevicesManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PendingDevicesManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubAddress.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubAddress.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PubSubAddress.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubAddress.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubManager.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PubSubManager.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubManager.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubProtos.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubProtos.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PubSubProtos.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PubSubProtos.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/PublicAccount.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/PublicAccount.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/PublicAccount.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/PublicAccount.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AbusiveHostRuleRowMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AbusiveHostRuleRowMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AbusiveHostRuleRowMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AbusiveHostRuleRowMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AccountRowMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AccountRowMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AccountRowMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/AccountRowMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/KeyRecordRowMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/KeyRecordRowMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/mappers/KeyRecordRowMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/KeyRecordRowMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/OutgoingMessageEntityRowMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/OutgoingMessageEntityRowMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/mappers/OutgoingMessageEntityRowMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/OutgoingMessageEntityRowMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/StoredVerificationCodeRowMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/StoredVerificationCodeRowMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/storage/mappers/StoredVerificationCodeRowMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/storage/mappers/StoredVerificationCodeRowMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/Base64.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/Base64.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/Base64.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/Base64.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/BlockingThreadPoolExecutor.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/BlockingThreadPoolExecutor.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/BlockingThreadPoolExecutor.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/BlockingThreadPoolExecutor.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/ByteArrayAdapter.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/ByteArrayAdapter.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/ByteArrayAdapter.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/ByteArrayAdapter.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/ByteUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/ByteUtil.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/ByteUtil.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/ByteUtil.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/CircuitBreakerUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/CircuitBreakerUtil.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/CircuitBreakerUtil.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/CircuitBreakerUtil.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/Constants.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/Constants.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/Constants.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/Constants.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/Conversions.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/Conversions.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/Conversions.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/Conversions.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/ExecutorUtils.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/ExecutorUtils.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/ExecutorUtils.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/ExecutorUtils.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/Hex.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/Hex.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/Hex.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/Hex.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/IterablePair.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/IterablePair.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/IterablePair.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/IterablePair.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/Pair.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/Pair.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/Pair.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/Pair.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/SystemMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/SystemMapper.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/SystemMapper.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/SystemMapper.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/Util.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/Util.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/Util.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/Util.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/VerificationCode.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/VerificationCode.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/util/VerificationCode.java rename to service/src/main/java/org/whispersystems/textsecuregcm/util/VerificationCode.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/AuthenticatedConnectListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/AuthenticatedConnectListener.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/AuthenticatedConnectListener.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/AuthenticatedConnectListener.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/DeadLetterHandler.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/DeadLetterHandler.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/DeadLetterHandler.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/DeadLetterHandler.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/InvalidWebsocketAddressException.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/InvalidWebsocketAddressException.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/InvalidWebsocketAddressException.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/InvalidWebsocketAddressException.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningAddress.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningAddress.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningAddress.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningAddress.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnectListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnectListener.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnectListener.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnectListener.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnection.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnection.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnection.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/ProvisioningConnection.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketAccountAuthenticator.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketAccountAuthenticator.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketAccountAuthenticator.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketAccountAuthenticator.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/websocket/WebsocketAddress.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebsocketAddress.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/websocket/WebsocketAddress.java rename to service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebsocketAddress.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/workers/CertificateCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/CertificateCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/workers/CertificateCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/workers/CertificateCommand.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/workers/DeleteUserCommand.java diff --git a/src/main/java/org/whispersystems/textsecuregcm/workers/VacuumCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/VacuumCommand.java similarity index 100% rename from src/main/java/org/whispersystems/textsecuregcm/workers/VacuumCommand.java rename to service/src/main/java/org/whispersystems/textsecuregcm/workers/VacuumCommand.java diff --git a/src/main/resources/META-INF/services/io.dropwizard.logging.AppenderFactory b/service/src/main/resources/META-INF/services/io.dropwizard.logging.AppenderFactory similarity index 100% rename from src/main/resources/META-INF/services/io.dropwizard.logging.AppenderFactory rename to service/src/main/resources/META-INF/services/io.dropwizard.logging.AppenderFactory diff --git a/src/main/resources/META-INF/services/io.dropwizard.metrics.ReporterFactory b/service/src/main/resources/META-INF/services/io.dropwizard.metrics.ReporterFactory similarity index 100% rename from src/main/resources/META-INF/services/io.dropwizard.metrics.ReporterFactory rename to service/src/main/resources/META-INF/services/io.dropwizard.metrics.ReporterFactory diff --git a/src/main/resources/abusedb.xml b/service/src/main/resources/abusedb.xml similarity index 100% rename from src/main/resources/abusedb.xml rename to service/src/main/resources/abusedb.xml diff --git a/src/main/resources/accountsdb.xml b/service/src/main/resources/accountsdb.xml similarity index 100% rename from src/main/resources/accountsdb.xml rename to service/src/main/resources/accountsdb.xml diff --git a/src/main/resources/banner.txt b/service/src/main/resources/banner.txt similarity index 100% rename from src/main/resources/banner.txt rename to service/src/main/resources/banner.txt diff --git a/src/main/resources/lua/account_database_crawler/unlock.lua b/service/src/main/resources/lua/account_database_crawler/unlock.lua similarity index 100% rename from src/main/resources/lua/account_database_crawler/unlock.lua rename to service/src/main/resources/lua/account_database_crawler/unlock.lua diff --git a/src/main/resources/lua/apn/get.lua b/service/src/main/resources/lua/apn/get.lua similarity index 100% rename from src/main/resources/lua/apn/get.lua rename to service/src/main/resources/lua/apn/get.lua diff --git a/src/main/resources/lua/apn/insert.lua b/service/src/main/resources/lua/apn/insert.lua similarity index 100% rename from src/main/resources/lua/apn/insert.lua rename to service/src/main/resources/lua/apn/insert.lua diff --git a/src/main/resources/lua/apn/remove.lua b/service/src/main/resources/lua/apn/remove.lua similarity index 100% rename from src/main/resources/lua/apn/remove.lua rename to service/src/main/resources/lua/apn/remove.lua diff --git a/src/main/resources/lua/get_items.lua b/service/src/main/resources/lua/get_items.lua similarity index 100% rename from src/main/resources/lua/get_items.lua rename to service/src/main/resources/lua/get_items.lua diff --git a/src/main/resources/lua/get_queues_to_persist.lua b/service/src/main/resources/lua/get_queues_to_persist.lua similarity index 100% rename from src/main/resources/lua/get_queues_to_persist.lua rename to service/src/main/resources/lua/get_queues_to_persist.lua diff --git a/src/main/resources/lua/insert_item.lua b/service/src/main/resources/lua/insert_item.lua similarity index 100% rename from src/main/resources/lua/insert_item.lua rename to service/src/main/resources/lua/insert_item.lua diff --git a/src/main/resources/lua/remove_item_by_guid.lua b/service/src/main/resources/lua/remove_item_by_guid.lua similarity index 100% rename from src/main/resources/lua/remove_item_by_guid.lua rename to service/src/main/resources/lua/remove_item_by_guid.lua diff --git a/src/main/resources/lua/remove_item_by_id.lua b/service/src/main/resources/lua/remove_item_by_id.lua similarity index 100% rename from src/main/resources/lua/remove_item_by_id.lua rename to service/src/main/resources/lua/remove_item_by_id.lua diff --git a/src/main/resources/lua/remove_item_by_sender.lua b/service/src/main/resources/lua/remove_item_by_sender.lua similarity index 100% rename from src/main/resources/lua/remove_item_by_sender.lua rename to service/src/main/resources/lua/remove_item_by_sender.lua diff --git a/src/main/resources/lua/remove_queue.lua b/service/src/main/resources/lua/remove_queue.lua similarity index 100% rename from src/main/resources/lua/remove_queue.lua rename to service/src/main/resources/lua/remove_queue.lua diff --git a/src/main/resources/messagedb.xml b/service/src/main/resources/messagedb.xml similarity index 100% rename from src/main/resources/messagedb.xml rename to service/src/main/resources/messagedb.xml diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/auth/OptionalAccessTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/auth/OptionalAccessTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/auth/OptionalAccessTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/auth/OptionalAccessTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AttachmentControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AttachmentControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AttachmentControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AttachmentControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/CertificateControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/CertificateControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/CertificateControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/CertificateControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DirectoryControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DirectoryControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DirectoryControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DirectoryControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/KeyControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/KeyControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/KeyControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/KeyControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/ProfileControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/ProfileControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/ProfileControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/ProfileControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/TransparentDataControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/TransparentDataControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/TransparentDataControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/TransparentDataControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/VoiceVerificationControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/VoiceVerificationControllerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/controllers/VoiceVerificationControllerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/VoiceVerificationControllerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/entities/ClientContactTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/entities/ClientContactTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/entities/ClientContactTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/entities/ClientContactTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/entities/PreKeyTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/entities/PreKeyTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/entities/PreKeyTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/entities/PreKeyTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/http/FaultTolerantHttpClientTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/http/FaultTolerantHttpClientTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/http/FaultTolerantHttpClientTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/http/FaultTolerantHttpClientTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/limits/LeakyBucketTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/limits/LeakyBucketTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/limits/LeakyBucketTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/limits/LeakyBucketTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/push/APNSenderTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/push/APNSenderTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/push/APNSenderTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/push/APNSenderTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/push/GCMSenderTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/push/GCMSenderTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/push/GCMSenderTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/push/GCMSenderTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/redis/ReplicatedJedisPoolTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/redis/ReplicatedJedisPoolTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/redis/ReplicatedJedisPoolTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/redis/ReplicatedJedisPoolTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/s3/PolicySignerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/s3/PolicySignerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/s3/PolicySignerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/s3/PolicySignerTest.java diff --git a/src/test/java/org/whispersystems/sms/TwilioSmsSenderTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/sms/TwilioSmsSenderTest.java similarity index 100% rename from src/test/java/org/whispersystems/sms/TwilioSmsSenderTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/sms/TwilioSmsSenderTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AbusiveHostRulesTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AbusiveHostRulesTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/AbusiveHostRulesTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AbusiveHostRulesTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountDatabaseCrawlerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountDatabaseCrawlerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountDatabaseCrawlerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountDatabaseCrawlerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsManagerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsManagerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsManagerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/ActiveUserCounterTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/ActiveUserCounterTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/ActiveUserCounterTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/ActiveUserCounterTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/DirectoryReconcilerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/DirectoryReconcilerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/DirectoryReconcilerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/DirectoryReconcilerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/KeysTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/KeysTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/KeysTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/KeysTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/MessagesTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/MessagesTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/MessagesTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/MessagesTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingAccountsTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingAccountsTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingAccountsTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingAccountsTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingDevicesTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingDevicesTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingDevicesTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PendingDevicesTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PublicAccountTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PublicAccountTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/storage/PublicAccountTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/PublicAccountTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/AuthHelper.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/AuthHelper.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/AuthHelper.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/AuthHelper.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/BlockingThreadPoolExecutorTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/BlockingThreadPoolExecutorTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/BlockingThreadPoolExecutorTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/BlockingThreadPoolExecutorTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/JsonHelpers.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/JsonHelpers.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/JsonHelpers.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/JsonHelpers.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/NumberPrefixTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/NumberPrefixTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/NumberPrefixTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/NumberPrefixTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/SynchronousExecutorService.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/SynchronousExecutorService.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/SynchronousExecutorService.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/SynchronousExecutorService.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/ValidNumberTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/util/ValidNumberTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/util/ValidNumberTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/util/ValidNumberTest.java diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/websocket/WebSocketConnectionTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/websocket/WebSocketConnectionTest.java similarity index 100% rename from src/test/java/org/whispersystems/textsecuregcm/tests/websocket/WebSocketConnectionTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/tests/websocket/WebSocketConnectionTest.java diff --git a/src/test/resources/fixtures/contact.json b/service/src/test/resources/fixtures/contact.json similarity index 100% rename from src/test/resources/fixtures/contact.json rename to service/src/test/resources/fixtures/contact.json diff --git a/src/test/resources/fixtures/contact.relay.json b/service/src/test/resources/fixtures/contact.relay.json similarity index 100% rename from src/test/resources/fixtures/contact.relay.json rename to service/src/test/resources/fixtures/contact.relay.json diff --git a/src/test/resources/fixtures/contact.relay.video.json b/service/src/test/resources/fixtures/contact.relay.video.json similarity index 100% rename from src/test/resources/fixtures/contact.relay.video.json rename to service/src/test/resources/fixtures/contact.relay.video.json diff --git a/src/test/resources/fixtures/contact.relay.voice.json b/service/src/test/resources/fixtures/contact.relay.voice.json similarity index 100% rename from src/test/resources/fixtures/contact.relay.voice.json rename to service/src/test/resources/fixtures/contact.relay.voice.json diff --git a/src/test/resources/fixtures/current_message_extra_device.json b/service/src/test/resources/fixtures/current_message_extra_device.json similarity index 100% rename from src/test/resources/fixtures/current_message_extra_device.json rename to service/src/test/resources/fixtures/current_message_extra_device.json diff --git a/src/test/resources/fixtures/current_message_multi_device.json b/service/src/test/resources/fixtures/current_message_multi_device.json similarity index 100% rename from src/test/resources/fixtures/current_message_multi_device.json rename to service/src/test/resources/fixtures/current_message_multi_device.json diff --git a/src/test/resources/fixtures/current_message_registration_id.json b/service/src/test/resources/fixtures/current_message_registration_id.json similarity index 100% rename from src/test/resources/fixtures/current_message_registration_id.json rename to service/src/test/resources/fixtures/current_message_registration_id.json diff --git a/src/test/resources/fixtures/current_message_single_device.json b/service/src/test/resources/fixtures/current_message_single_device.json similarity index 100% rename from src/test/resources/fixtures/current_message_single_device.json rename to service/src/test/resources/fixtures/current_message_single_device.json diff --git a/src/test/resources/fixtures/legacy_message_single_device.json b/service/src/test/resources/fixtures/legacy_message_single_device.json similarity index 100% rename from src/test/resources/fixtures/legacy_message_single_device.json rename to service/src/test/resources/fixtures/legacy_message_single_device.json diff --git a/src/test/resources/fixtures/mismatched_registration_id.json b/service/src/test/resources/fixtures/mismatched_registration_id.json similarity index 100% rename from src/test/resources/fixtures/mismatched_registration_id.json rename to service/src/test/resources/fixtures/mismatched_registration_id.json diff --git a/src/test/resources/fixtures/missing_device_response.json b/service/src/test/resources/fixtures/missing_device_response.json similarity index 100% rename from src/test/resources/fixtures/missing_device_response.json rename to service/src/test/resources/fixtures/missing_device_response.json diff --git a/src/test/resources/fixtures/missing_device_response2.json b/service/src/test/resources/fixtures/missing_device_response2.json similarity index 100% rename from src/test/resources/fixtures/missing_device_response2.json rename to service/src/test/resources/fixtures/missing_device_response2.json diff --git a/src/test/resources/fixtures/prekey.json b/service/src/test/resources/fixtures/prekey.json similarity index 100% rename from src/test/resources/fixtures/prekey.json rename to service/src/test/resources/fixtures/prekey.json diff --git a/src/test/resources/fixtures/prekey_v2.json b/service/src/test/resources/fixtures/prekey_v2.json similarity index 100% rename from src/test/resources/fixtures/prekey_v2.json rename to service/src/test/resources/fixtures/prekey_v2.json diff --git a/src/test/resources/fixtures/transparent_account.json b/service/src/test/resources/fixtures/transparent_account.json similarity index 100% rename from src/test/resources/fixtures/transparent_account.json rename to service/src/test/resources/fixtures/transparent_account.json diff --git a/src/test/resources/fixtures/transparent_account2.json b/service/src/test/resources/fixtures/transparent_account2.json similarity index 100% rename from src/test/resources/fixtures/transparent_account2.json rename to service/src/test/resources/fixtures/transparent_account2.json diff --git a/src/test/resources/fixtures/voice_verification_en_us.xml b/service/src/test/resources/fixtures/voice_verification_en_us.xml similarity index 100% rename from src/test/resources/fixtures/voice_verification_en_us.xml rename to service/src/test/resources/fixtures/voice_verification_en_us.xml diff --git a/src/test/resources/fixtures/voice_verification_pt_br.xml b/service/src/test/resources/fixtures/voice_verification_pt_br.xml similarity index 100% rename from src/test/resources/fixtures/voice_verification_pt_br.xml rename to service/src/test/resources/fixtures/voice_verification_pt_br.xml diff --git a/src/test/resources/fixtures/voice_verification_ru.xml b/service/src/test/resources/fixtures/voice_verification_ru.xml similarity index 100% rename from src/test/resources/fixtures/voice_verification_ru.xml rename to service/src/test/resources/fixtures/voice_verification_ru.xml diff --git a/system.properties b/system.properties deleted file mode 100644 index 97270b43f..000000000 --- a/system.properties +++ /dev/null @@ -1 +0,0 @@ -java.runtime.version=1.7