args[index] = data.get(i);
i++;
}
method.invoke(object, args);
} catch (Exception e) {
throw new SocketIOException(e);
}
}
}, classes.toArray(new Class[classes.size()]));
} else {
Class objectType = Void.class;
if (!dataIndexes.isEmpty()) {
objectType = method.getParameterTypes()[dataIndexes.iterator().next()];
}
namespace.addEventListener(annotation.value(), objectType, new DataListener<Object>() {
@Override
public void onData(SocketIOClient client, Object data, AckRequest ackSender) {
try {
Object[] args = new Object[method.getParameterTypes().length];
if (socketIOClientIndex != -1) {
args[socketIOClientIndex] = client;
}
if (ackRequestIndex != -1) {
args[ackRequestIndex] = ackSender;
}
if (!dataIndexes.isEmpty()) {
int dataIndex = dataIndexes.iterator().next();
args[dataIndex] = data;
}
method.invoke(object, args);
} catch (Exception e) {
throw new SocketIOException(e);
}
}
});
}
}