private void validateServicePromotions(Composite type, XMLStreamReader reader, IntrospectionContext childContext) { for (CompositeService service : type.getServices().values()) { URI promotedUri = service.getPromote(); String componentName = UriHelper.getDefragmentedNameAsString(promotedUri); ComponentDefinition promoted = type.getComponents().get(componentName); if (promoted == null) { PromotionNotFound error = new PromotionNotFound("Component " + componentName + " referenced by " + service.getName() + " not found", reader); childContext.addError(error); } else { String serviceName = promotedUri.getFragment(); if (serviceName == null && promoted.getComponentType().getServices().size() != 1) { PromotionNotFound error = new PromotionNotFound("A promoted service must be specified for " + service.getName(), reader); childContext.addError(error); } if (serviceName != null && !promoted.getComponentType().getServices().containsKey(serviceName)) { PromotionNotFound error = new PromotionNotFound("Service " + serviceName + " promoted by " + service.getName() + " not found", reader); childContext.addError(error); } } } }
String name = service.getName(); URI serviceUri = component.getUri().resolve('#' + name); LogicalService logicalService = new LogicalService(serviceUri, service, component); logicalService.setPromotedUri(URI.create(uriBase + service.getPromote())); List<BindingDefinition> serviceBindings = service.getBindings(); for (BindingDefinition binding : serviceBindings) { LogicalBinding<BindingDefinition> logicalBinding = new LogicalBinding<BindingDefinition>(binding, logicalService); List<BindingDefinition> serviceCallbackBindings = service.getCallbackBindings(); for (BindingDefinition binding : serviceCallbackBindings) { LogicalBinding<BindingDefinition> logicalBinding = new LogicalBinding<BindingDefinition>(binding, logicalService);
context.addError(error); CompositeService def = new CompositeService(name, null, loaderHelper.getURI(promote)); def.setServiceContract((ServiceContract<?>) type); } else if (type instanceof BindingDefinition) { if (callback) { def.addCallbackBinding((BindingDefinition) type); } else { def.addBinding((BindingDefinition) type); def.addOperation((OperationDefinition) type); } else if (type == null) {
private void handleService(Composite type, XMLStreamReader reader, IntrospectionContext childContext) throws XMLStreamException { CompositeService service = serviceLoader.load(reader, childContext); if (service == null) { // errror encountered loading the service return; } if (type.getServices().containsKey(service.getName())) { String key = service.getName(); DuplicateService failure = new DuplicateService(key, reader); childContext.addError(failure); } else { type.add(service); } }