/*
* Copyright 2012 Research Studios Austria Forschungsges.m.b.H.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package won.node.service.impl;
import org.apache.camel.Exchange;
import org.apache.camel.Header;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import won.protocol.model.OwnerApplication;
import won.protocol.repository.OwnerApplicationRepository;
import won.protocol.service.QueueManagementService;
import java.util.ArrayList;
import java.util.List;
/**
* User: LEIH-NB
* Date: 13.11.13
*/
public class QueueManagementServiceImpl implements QueueManagementService {
@Autowired
private OwnerApplicationRepository ownerApplicationRepository;
final Logger logger = LoggerFactory.getLogger(getClass());
private String defaultUriScheme;
private String ownerProtocolComponentName;
private String matecherProtocolComponentName;
private String ownerProtocolMessagingType;
private String matcherProtocolMessagingType;
private String ownerProtocolOutgoingMessageName;
private String matcherProtocolOutgoingMessageName;
private List<String> queueNames;
@Override
public List<String> generateQueueNamesForOwnerApplication(OwnerApplication ownerApplication) {
logger.debug(ownerApplication.getOwnerApplicationId());
List<String> queueNames = new ArrayList<>();
//queueNames.add("activemq"+ownerApplication.getOwnerApplicationId()+":queue:OwnerProtocol.Out" +
// "."+ownerApplication.getOwnerApplicationId());
queueNames.add("activemq"+":queue:OwnerProtocol.Out."+ownerApplication.getOwnerApplicationId());
/*queueNames.add("activemq"+ownerApplication.getOwnerApplicationId()+":queue:OwnerProtocol."+"connect"+".Out."+ownerApplication.getOwnerApplicationId());
queueNames.add("activemq"+ownerApplication.getOwnerApplicationId()+":queue:OwnerProtocol."+"hint"+".Out."+ownerApplication.getOwnerApplicationId());
queueNames.add("activemq"+ownerApplication.getOwnerApplicationId()+":queue:OwnerProtocol."+"textMessage"+".Out."+ownerApplication.getOwnerApplicationId());
queueNames.add("activemq"+ownerApplication.getOwnerApplicationId()+":queue:OwnerProtocol."+"open"+".Out."+ownerApplication.getOwnerApplicationId());
queueNames.add("activemq"+ownerApplication.getOwnerApplicationId()+":queue:OwnerProtocol."+"close"+".Out."+ownerApplication.getOwnerApplicationId());
*/
ownerApplication.setQueueNames(queueNames);
//logger.debug(ownerApplication.getQueueNames().get(0));
//logger.debug(ownerApplication.getQueueNames().get(1));
return ownerApplication.getQueueNames();
}
@Override
public String getEndpointForMessage(String methodName, String ownerApplicationID) {
OwnerApplication ownerApplication = ownerApplicationRepository.findByOwnerApplicationId(ownerApplicationID).get(0);
List<String> queueNames = ownerApplication.getQueueNames();
String endpoint="";
for (int i = 0; i< queueNames.size();i++){
endpoint=queueNames.get(i);
if (queueNames.get(i).contains(methodName)){
break;
}
}
return endpoint;
}
@Override
public List<String> getEndpointsForOwnerApplication(@Header("ownerApplicationID") String ownerApplicationID, Exchange exchange) {
//TODO: must implement special handling of the case where the id is unknown
List<OwnerApplication> ownerApplications = ownerApplicationRepository.findByOwnerApplicationId(ownerApplicationID);
List<String> endpoints = new ArrayList<>();
endpoints.addAll(ownerApplications.get(0).getQueueNames());
return endpoints;
}
public void setOwnerApplicationRepository(OwnerApplicationRepository ownerApplicationRepository) {
this.ownerApplicationRepository = ownerApplicationRepository;
}
}