package org.kie.server.ext.mina;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.api.model.ServiceResponse;
import org.kie.server.services.api.KieContainerCommandService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TextBasedIoHandlerAdapter extends IoHandlerAdapter {
private static final Logger logger = LoggerFactory.getLogger(TextBasedIoHandlerAdapter.class);
private KieContainerCommandService batchCommandService;
public TextBasedIoHandlerAdapter(KieContainerCommandService batchCommandService) {
this.batchCommandService = batchCommandService;
}
@Override
public void messageReceived( IoSession session, Object message ) throws Exception {
String completeMessage = message.toString();
logger.debug("Received message '{}'", completeMessage);
if( completeMessage.trim().equalsIgnoreCase("quit") || completeMessage.trim().equalsIgnoreCase("exit") ) {
session.close(false);
return;
}
String[] elements = completeMessage.split("\\|");
logger.debug("Container id {}", elements[0]);
try {
ServiceResponse<String> result = batchCommandService.callContainer(elements[0], elements[1], MarshallingFormat.JSON, null);
if (result.getType().equals(ServiceResponse.ResponseType.SUCCESS)) {
session.write(result.getResult());
logger.debug("Successful message written with content '{}'", result.getResult());
} else {
session.write(result.getMsg());
logger.debug("Failure message written with content '{}'", result.getMsg());
}
} catch (Exception e) {
}
}
}