Files
osgi-chat/com.thalesgroup.nl.chat.impl/src/com/thalesgroup/nl/chat/impl/ChatServer.java

53 lines
1.4 KiB
Java

package com.thalesgroup.nl.chat.impl;
import com.thalesgroup.nl.chat.api.Chat;
import org.osgi.service.component.annotations.*;
import java.util.HashMap;
import java.util.Map;
@Component(
property = {
"osgi.command.scope=chat",
"osgi.command.function=send"
},
immediate = true,
service = Object.class
)
public class ChatServer {
public static final String NAME = "Bas";
private Map<String, Chat> chatters = new HashMap<>();
@Activate
public ChatServer() {
}
@Reference(policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.MULTIPLE)
public void addChatter(Chat chat, Map props){
String name = (String) props.get("participant.name");
System.out.printf("Adding %s%n", name);
chatters.put(name, chat);
chat.sendMessage(NAME, String.format("Hoi %s!", name));
}
public void removeChatter(Chat chat, Map props){
String name = (String) props.get("participant.name");
System.out.printf("Removing %s%n", name);
chatters.remove(name);
}
public void send(String name, String message){
Chat chat = chatters.get(name);
if(chat == null){
System.out.printf("Error: %s not found%n", name);
} else {
chat.sendMessage(NAME, message);
}
}
@Deactivate
public void deactivate(){
}
}