private static Logger log = Logger.getLogger(XRegisterHelper.class);
public static void handle(Clerk fromClerk, Clerk toClerk, SubscriptionResultsList list) {
UDDIClerk uddiToClerk = new UDDIClerk(toClerk);
UDDIClerk uddiFromClerk = new UDDIClerk(fromClerk);
//SERVICE LIST
if (list.getServiceList()!=null) {
log.info("Subscription result for ServiceList with subscription key=" + list.getSubscription().getSubscriptionKey());
for (ServiceInfo serviceInfo : list.getServiceList().getServiceInfos().getServiceInfo() ) {
BusinessEntity existingBusinessEntity = null;
try {
if (existingBusinessEntity==null) {
existingBusinessEntity = uddiToClerk.findBusiness(serviceInfo.getBusinessKey(), toClerk.getNode());
}
if (existingBusinessEntity!=null) {
log.debug("Found business with key " + existingBusinessEntity.getBusinessKey() + ". No need to add it again");
} else {
log.info("Business was not found in the destination UDDI " + toClerk.getNode().getName()
+ ", going to add it in.");
new XRegistration(serviceInfo.getBusinessKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterBusiness();
}
new XRegistration(serviceInfo.getServiceKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterServiceAndBindings();
} catch (Exception e) {
log.error(e.getMessage(),e);
}
}
}
//SERVICE DETAIL
if (list.getServiceDetail()!=null) {
log.info("Subscription result for ServiceDetail with subscription key=" + list.getSubscription().getSubscriptionKey());
ServiceDetail serviceDetail = list.getServiceDetail();
if (serviceDetail.isTruncated()) {
log.info("The serviceDetail is truncated, the maxEntries must have been hit. The number of services is " + serviceDetail.getBusinessService().size());
}
for (BusinessService service : serviceDetail.getBusinessService()) {
BusinessEntity existingBusinessEntity = null;
try {
if (existingBusinessEntity==null) {
existingBusinessEntity = uddiToClerk.findBusiness(service.getBusinessKey(), toClerk.getNode());
}
if (existingBusinessEntity!=null) {
log.debug("Found business with key " + existingBusinessEntity.getBusinessKey() + ". No need to add it again");
} else {
log.info("Business was not found in the destination UDDI " + toClerk.getNode().getName()
+ ", going to add it in.");
new XRegistration(service.getBusinessKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterBusiness();
}
new XRegistration(service.getServiceKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterServiceAndBindings();
} catch (Exception e) {
log.error(e.getMessage(),e);
}
}
}
//BUSINESS LIST
if (list.getBusinessList()!=null) {
log.info("Subscription result for BusinessList with subscription key=" + list.getSubscription().getSubscriptionKey());
for (BusinessInfo businessInfo : list.getBusinessList().getBusinessInfos().getBusinessInfo()) {
new XRegistration(businessInfo.getBusinessKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterBusinessAndServices();
}
}
//BUSINESS DETAIL
if (list.getBusinessDetail()!=null) {
log.info("Subscription result for BusinessDetail with subscription key=" + list.getSubscription().getSubscriptionKey());
BusinessDetail businessDetail = list.getBusinessDetail();
if (businessDetail.isTruncated()) {
log.info("The businessDetail is truncated, the maxEntries must have been hit. The number of businesses is " + businessDetail.getBusinessEntity().size());
}
for (BusinessEntity businessEntity : businessDetail.getBusinessEntity()) {
new XRegistration(businessEntity.getBusinessKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterBusinessAndServices();
}
}
//KEY BAG, NOT IMPLEMENTED
if (list.getKeyBag()!=null) {
log.info("Returning results when a 'brief' format is selected, please do not use 'brief' results when using the XRegistration functionality");
}
//BINDING DETAIL
if (list.getBindingDetail()!=null) {
log.info("Subscription result for BindingDetail with subscription key=" + list.getSubscription().getSubscriptionKey());
BindingDetail bindingDetail = list.getBindingDetail();
if (bindingDetail.isTruncated()) {
log.info("The bindingDetail is truncated, the maxEntries must have been hit. The number of bindings is " + bindingDetail.getBindingTemplate().size());
}
for (BindingTemplate bindingTemplate : bindingDetail.getBindingTemplate()) {
try {
//check if the service exist
BusinessService existingToService = uddiToClerk.findService(bindingTemplate.getServiceKey(), toClerk.getNode());
if (existingToService!=null) {
log.debug("Found service with key " + existingToService.getServiceKey() + ". No need to add it again");
} else {
BusinessService fromService = uddiFromClerk.findService(bindingTemplate.getServiceKey(), fromClerk.getNode());
fromService.getBusinessKey();
//check if the business exist
BusinessEntity existingBusinessEntity = uddiToClerk.findBusiness(fromService.getBusinessKey(), toClerk.getNode());
if (existingBusinessEntity!=null) {
log.debug("Found business with key " + existingBusinessEntity.getBusinessKey() + ". No need to add it again");
} else {
log.info("Business was not found in the destination UDDI " + toClerk.getNode().getName()
+ ", going to add it in.");
new XRegistration(fromService.getBusinessKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterBusiness();
}
log.info("Service was not found in the destination UDDI " + toClerk.getNode().getName()
+ ", going to add it in.");
new XRegistration(fromService.getServiceKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterService();
}
//now the service exists in the toNode and we can add this binding
new XRegistration(bindingTemplate.getBindingKey(), new UDDIClerk(fromClerk), new UDDIClerk(toClerk)).xRegisterServiceBinding();
} catch (Exception e) {
log.error(e.getMessage(),e);
}
}
}