How asan4ik/chat-app works
This is a Java messaging-pattern demo. Its implemented path in Main creates a user and message through the factory provider, then sends that message through a REST transport adapter to a client that records the result. The README also describes XMPP, message processing/encryption, and receiver notifications, but those flows are not wired in the sampled entry point; the facade directory is empty in the tree. Edges for those documented capabilities are marked dashed where source evidence is unavailable.
Main entry points: Message.java Message model · Main.java Main · MessageFactoryProvider.java Factory provider · RestChatTransportAdapter.java REST adapter
Components 18
Application entry
- Main
src/main/java/kz/aitu/chat/Main.java
Message creation
- Factory provider
src/main/java/kz/aitu/chat/factory/MessageFactoryProvider.java - Text factory
src/main/java/kz/aitu/chat/factory/TextMessageFactory.java - Image factory
src/main/java/kz/aitu/chat/factory/ImageMessageFactory.java - System factory
src/main/java/kz/aitu/chat/factory/SystemMessageFactory.java - Message model
src/main/java/kz/aitu/chat/model/Message.java - User model
src/main/java/kz/aitu/chat/model/User.java - Message types
src/main/java/kz/aitu/chat/model/MessageType.java
Message transport
- Transport contract
src/main/java/kz/aitu/chat/adapter/ChatTransport.java - REST adapter
src/main/java/kz/aitu/chat/adapter/RestChatTransportAdapter.java - REST client
src/main/java/kz/aitu/chat/adapter/RestChatClient.java - XMPP adapter
src/main/java/kz/aitu/chat/adapter/XmppChatTransportAdapter.java - XMPP client
src/main/java/kz/aitu/chat/adapter/XmppClient.java
Message processing
- Message processor
src/main/java/kz/aitu/chat/decorator/MessageProcessor.java - Encryption strategy
src/main/java/kz/aitu/chat/strategy/EncryptionStrategy.java - Message listener
src/main/java/kz/aitu/chat/observer/MessageListener.java
Other components
- Sender
- Receivers
Connections 21
- Sender → Main: initiates
- Main → Factory provider: selects factory
src/main/java/kz/aitu/chat/Main.java - Factory provider → Text factory: registers
src/main/java/kz/aitu/chat/factory/MessageFactoryProvider.java - Factory provider → Image factory: registers
src/main/java/kz/aitu/chat/factory/MessageFactoryProvider.java - Factory provider → System factory: registers
src/main/java/kz/aitu/chat/factory/MessageFactoryProvider.java - Main → Message model: creates
src/main/java/kz/aitu/chat/Main.java - Text factory → Message model: creates
src/main/java/kz/aitu/chat/factory/TextMessageFactory.java - Image factory → Message model: creates
src/main/java/kz/aitu/chat/factory/ImageMessageFactory.java - System factory → Message model: creates
src/main/java/kz/aitu/chat/factory/SystemMessageFactory.java - Message model → User model: stores sender
src/main/java/kz/aitu/chat/model/Message.java - Message model → Message types: stores type
src/main/java/kz/aitu/chat/model/Message.java - Main → REST adapter: sends via
src/main/java/kz/aitu/chat/Main.java - REST adapter → Transport contract: implements
src/main/java/kz/aitu/chat/adapter/RestChatTransportAdapter.java - REST adapter → REST client: posts message
src/main/java/kz/aitu/chat/adapter/RestChatTransportAdapter.java - Main → REST client: reads posted messages
src/main/java/kz/aitu/chat/Main.java - XMPP adapter → Transport contract: implements
src/main/java/kz/aitu/chat/adapter/XmppChatTransportAdapter.java - XMPP adapter → XMPP client: delegates to
src/main/java/kz/aitu/chat/adapter/XmppChatTransportAdapter.java - Message model → Message processor: processed by
README.md - Message processor → Encryption strategy: uses strategy
README.md - Message model → Message listener: notifies
README.md - Message listener → Receivers: notifies
README.md