use of com.swiftmq.mgmt.Entity in project swiftmq-ce by iitsoftware.
the class TopicBroker method addRemoteSubscriptionUsage.
private void addRemoteSubscriptionUsage(String routerName, String topicName) {
if (ctx.remoteSubscriberList == null)
return;
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$topicmanager", tracePrefix + "addRemoteSubscriptionUsage, routerName=" + routerName + ", topicName=" + topicName);
try {
Entity rEntity = ctx.remoteSubscriberList.getEntity(routerName);
if (rEntity == null) {
rEntity = ctx.remoteSubscriberList.createEntity();
rEntity.setName(routerName);
rEntity.createCommands();
ctx.remoteSubscriberList.addEntity(rEntity);
}
EntityList tEntityList = (EntityList) rEntity.getEntity("topics");
if (tEntityList.getEntity(topicName) == null) {
Entity entity = tEntityList.createEntity();
entity.setName(topicName);
entity.createCommands();
tEntityList.addEntity(entity);
}
} catch (Exception e) {
}
}
use of com.swiftmq.mgmt.Entity in project swiftmq-ce by iitsoftware.
the class TopicBroker method removeRemoteSubscriptionUsage.
private void removeRemoteSubscriptionUsage(String routerName, String topicName) {
if (ctx.remoteSubscriberList == null)
return;
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$topicmanager", tracePrefix + "removeRemoteSubscriptionUsage, routerName=" + routerName + ", topicName=" + topicName);
try {
Entity rEntity = ctx.remoteSubscriberList.getEntity(routerName);
if (rEntity != null) {
EntityList tEntityList = (EntityList) rEntity.getEntity("topics");
Entity entity = tEntityList.getEntity(topicName);
if (entity != null)
tEntityList.removeEntity(entity);
Map map = tEntityList.getEntities();
if (map == null || map.size() == 0)
ctx.remoteSubscriberList.removeEntity(rEntity);
}
} catch (Exception e) {
}
}
use of com.swiftmq.mgmt.Entity in project swiftmq-ce by iitsoftware.
the class StreamsJob method doAction.
private void doAction(boolean b) throws JobException {
Entity domain = ctx.root.getEntity("domains").getEntity(domainName);
if (domain == null)
throw new JobException("Domain '" + domainName + "' is undefined!", null, false);
Entity pkg = domain.getEntity("packages").getEntity(packageName);
if (pkg == null)
throw new JobException("Package '" + packageName + "' is undefined!", null, false);
Entity entity = pkg.getEntity("streams").getEntity(name);
if (entity == null)
throw new JobException("Stream '" + name + "' is undefined!", null, false);
Property prop = entity.getProperty("enabled");
boolean enabled = ((Boolean) prop.getValue()).booleanValue();
try {
if (enabled != b)
prop.setValue(new Boolean(b));
} catch (Exception e) {
throw new JobException(e.getMessage(), e, false);
}
}
use of com.swiftmq.mgmt.Entity in project swiftmq-ce by iitsoftware.
the class NontransactedQueueSession method visit.
public void visit(CreateConsumerRequest req) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$jms", ctx.tracePrefix + "/visitCreateConsumerRequest");
CreateConsumerReply reply = (CreateConsumerReply) req.createReply();
try {
ctx.activeLogin.getResourceLimitGroup().incConsumers();
} catch (ResourceLimitException e) {
reply.setOk(false);
reply.setException(new JMSException(e.toString()));
reply.send();
return;
}
QueueImpl queue = req.getQueue();
String messageSelector = req.getMessageSelector();
String queueName = null;
try {
queueName = queue.getQueueName();
} catch (JMSException ignored) {
}
try {
if (!queueName.endsWith('@' + SwiftletManager.getInstance().getRouterName()))
throw new InvalidDestinationException("Queue '" + queueName + "' is not local! Can't create a Consumer on it!");
int consumerId = 0;
QueueConsumer consumer = null;
consumerId = ArrayListTool.setFirstFreeOrExpand(consumerList, null);
consumer = new QueueConsumer(ctx, queueName, messageSelector);
consumerList.set(consumerId, consumer);
consumer.createReadTransaction();
consumer.createTransaction();
reply.setOk(true);
reply.setQueueConsumerId(consumerId);
if (receiverEntityList != null) {
Entity consEntity = receiverEntityList.createEntity();
consEntity.setName(queueName + "-" + consumerId);
consEntity.setDynamicObject(consumer);
consEntity.createCommands();
Property prop = consEntity.getProperty("queue");
prop.setValue(queueName);
prop.setReadOnly(true);
prop = consEntity.getProperty("selector");
if (messageSelector != null) {
prop.setValue(messageSelector);
}
prop.setReadOnly(true);
receiverEntityList.addEntity(consEntity);
}
} catch (InvalidSelectorException e) {
ctx.activeLogin.getResourceLimitGroup().decConsumers();
ctx.logSwiftlet.logWarning("sys$jms", ctx.tracePrefix + "/CreateConsumer has invalid Selector: " + e);
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$jms", ctx.tracePrefix + "/CreateConsumer has invalid Selector: " + e);
reply.setOk(false);
reply.setException(e);
} catch (Exception e1) {
ctx.activeLogin.getResourceLimitGroup().decConsumers();
ctx.logSwiftlet.logWarning("sys$jms", ctx.tracePrefix + "/Exception during create consumer: " + e1);
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$jms", ctx.tracePrefix + "/Exception during create consumer: " + e1);
reply.setOk(false);
reply.setException(e1);
}
reply.send();
}
use of com.swiftmq.mgmt.Entity in project swiftmq-ce by iitsoftware.
the class NontransactedTopicSession method visit.
public void visit(CreateSubscriberRequest req) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$jms", ctx.tracePrefix + "/visitCreateSubscriberRequest");
CreateSubscriberReply reply = (CreateSubscriberReply) req.createReply();
try {
ctx.activeLogin.getResourceLimitGroup().incConsumers();
} catch (ResourceLimitException e) {
reply.setOk(false);
reply.setException(new JMSException(e.toString()));
reply.send();
return;
}
TopicImpl topic = req.getTopic();
String messageSelector = req.getMessageSelector();
boolean noLocal = req.isNoLocal();
try {
Entity subEntity = null;
if (subscriberEntityList != null)
subEntity = subscriberEntityList.createEntity();
int consumerId = 0;
TopicConsumer consumer = null;
if (topic.getType() == DestinationFactory.TYPE_TOPIC) {
consumerId = ArrayListTool.setFirstFreeOrExpand(consumerList, null);
consumer = new TopicConsumer(ctx, topic, messageSelector, noLocal);
consumerList.set(consumerId, consumer);
if (subEntity != null) {
Property prop = subEntity.getProperty("topic");
prop.setReadOnly(false);
prop.setValue(topic.getTopicName());
prop.setReadOnly(true);
prop = subEntity.getProperty("boundto");
prop.setReadOnly(false);
prop.setValue(topic.getQueueName());
prop.setReadOnly(true);
subEntity.setDynamicObject(consumer);
}
if (subEntity != null)
subEntity.setName(topic.getTopicName() + "-" + consumerId);
} else {
consumerId = ArrayListTool.setFirstFreeOrExpand(consumerList, null);
consumer = new TopicConsumer(ctx, topic, messageSelector, noLocal);
consumerList.set(consumerId, consumer);
if (subEntity != null)
subEntity.setDynamicObject(consumer);
if (subEntity != null) {
subEntity.setName(topic.getQueueName() + "-" + consumerId);
Property prop = subEntity.getProperty("temptopic");
prop.setReadOnly(false);
prop.setValue(new Boolean(true));
prop.setReadOnly(true);
prop = subEntity.getProperty("boundto");
prop.setReadOnly(false);
prop.setValue(topic.getQueueName());
prop.setReadOnly(true);
}
}
consumer.setAutoCommit(req.isAutoCommit());
consumer.createReadTransaction();
consumer.createTransaction();
reply.setOk(true);
reply.setTopicSubscriberId(consumerId);
reply.setTmpQueueName((consumer).getQueueName());
if (subEntity != null) {
Property prop = subEntity.getProperty("nolocal");
prop.setReadOnly(false);
prop.setValue(new Boolean(noLocal));
prop.setReadOnly(true);
subEntity.createCommands();
prop = subEntity.getProperty("selector");
if (messageSelector != null) {
prop.setValue(messageSelector);
}
prop.setReadOnly(true);
subscriberEntityList.addEntity(subEntity);
}
} catch (InvalidSelectorException e) {
ctx.activeLogin.getResourceLimitGroup().decConsumers();
ctx.logSwiftlet.logWarning("sys$jms", ctx.tracePrefix + "/CreateSubscriber has invalid Selector: " + e);
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$jms", ctx.tracePrefix + "/CreateSubscriber has invalid Selector: " + e);
reply.setOk(false);
reply.setException(e);
} catch (Exception e1) {
ctx.activeLogin.getResourceLimitGroup().decConsumers();
ctx.logSwiftlet.logWarning("sys$jms", ctx.tracePrefix + "/Exception during create subscriber: " + e1);
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$jms", ctx.tracePrefix + "/Exception during create subscriber (req=" + req + "): \n" + SwiftUtilities.getStackTrace(e1));
reply.setOk(false);
reply.setException(e1);
}
reply.send();
}
Aggregations