private DeploymentUnit regenerate(String zoneId) throws ContainerException { LogicalCompositeComponent domain = lcm.getRootComponent(); Deployment deployment; try { deployment = generator.generate(domain, false); } catch (GenerationException e) { throw new ContainerException(e); } return deployment.getDeploymentUnit(zoneId); }
private MetroGeneratorDelegate getDelegate(ServiceContract contract) throws GenerationException { MetroGeneratorDelegate<?> delegate = delegates.get(contract.getClass()); if (delegate == null) { throw new GenerationException("Generator delegate not found for type: " + contract.getClass().getName()); } return delegate; }
private SerializedDeploymentUnit createSerializedUnit(DeploymentUnit deploymentUnit) throws IOException { List<CompensatableCommand> provisionCommands = deploymentUnit.getProvisionCommands(); byte[] serializedProvisionCommands = serializationService.serialize((Serializable) provisionCommands); List<CompensatableCommand> extensionCommands = deploymentUnit.getExtensionCommands(); byte[] serializedExtensionCommands = serializationService.serialize((Serializable) extensionCommands); List<CompensatableCommand> commands = deploymentUnit.getCommands(); byte[] serializedCommands = serializationService.serialize((Serializable) commands); return new SerializedDeploymentUnit(serializedProvisionCommands, serializedExtensionCommands, serializedCommands); } }
/** * Generates interceptor definitions for the operation based on a set of resolved policies. * * @param source the operation * @param target the target operation * @return the interceptor definitions */ private Set<PhysicalInterceptor> generateInterceptors(LogicalOperation source, LogicalOperation target) { Set<PhysicalInterceptor> interceptors = new LinkedHashSet<>(); for (InterceptorGenerator interceptorGenerator : generatorRegistry.getInterceptorGenerators()) { Optional<PhysicalInterceptor> optional = interceptorGenerator.generate(source, target); optional.ifPresent(interceptors::add); } return interceptors; }
@SuppressWarnings({"unchecked"}) private List<PhysicalResource> createPhysicalResources(LogicalResource logicalResource) throws Fabric3Exception { List<PhysicalResource> physicalResources = new ArrayList<>(); Resource resource = logicalResource.getDefinition(); ResourceGenerator generator = generatorRegistry.getResourceGenerator(resource.getClass()); PhysicalResource physicalResource = generator.generateResource(logicalResource); physicalResources.add(physicalResource); return physicalResources; }
@SuppressWarnings({"unchecked"}) private PhysicalChannelConnection generateDirectBoundConnection(LogicalConsumer consumer, LogicalChannel channel, DeliveryType deliveryType, ClassLoader classLoader, PhysicalConnectionTarget target) { LogicalBinding<?> binding = channel.getBinding(); ConnectionBindingGenerator bindingGenerator = getGenerator(binding); PhysicalConnectionSource source = bindingGenerator.generateConnectionSource(consumer, binding, deliveryType); source.setClassLoader(classLoader); URI uri = channel.getUri(); Class<?> type = getType(consumer); return new PhysicalChannelConnection(uri, consumer.getUri(), source, target, type, true); }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalService service) { for (LogicalBinding<?> logicalBinding : service.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateServiceCallback(logicalBinding); definition.setParent(service.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, service); service.addCallbackBinding(logicalCallback); } }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalReference reference) { for (LogicalBinding<?> logicalBinding : reference.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateReferenceCallback(logicalBinding); definition.setParent(reference.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, reference); reference.addCallbackBinding(logicalCallback); } }
private DeploymentCommand createCommand(String zone, Deployment currentDeployment, Deployment fullDeployment) throws IOException { DeploymentUnit currentDeploymentUnit = currentDeployment.getDeploymentUnit(zone); SerializedDeploymentUnit currentSerializedUnit = createSerializedUnit(currentDeploymentUnit); DeploymentUnit fullDeploymentUnit = fullDeployment.getDeploymentUnit(zone); SerializedDeploymentUnit fullSerializedUnit = createSerializedUnit(fullDeploymentUnit); return new DeploymentCommand(zone, currentSerializedUnit, fullSerializedUnit); }
private ServiceContract getServiceContract(BindableDefinition parent) throws GenerationException { ServiceContract serviceContract; if (parent instanceof AbstractService) { serviceContract = ((AbstractService) parent).getServiceContract(); } else if (parent instanceof AbstractReference) { serviceContract = ((AbstractReference) parent).getServiceContract(); } else { throw new GenerationException("Unsupported bindable type: " + parent); } return serviceContract; }
/** * Generates interceptor definitions for the operation based on a set of resolved policies. * * @param source the operation * @param target the target operation * @return the interceptor definitions */ private Set<PhysicalInterceptor> generateInterceptors(LogicalOperation source, LogicalOperation target) { Set<PhysicalInterceptor> interceptors = new LinkedHashSet<>(); for (InterceptorGenerator interceptorGenerator : generatorRegistry.getInterceptorGenerators()) { Optional<PhysicalInterceptor> optional = interceptorGenerator.generate(source, target); optional.ifPresent(interceptors::add); } return interceptors; }
@SuppressWarnings({"unchecked"}) private List<PhysicalResource> createPhysicalResources(LogicalResource logicalResource) throws Fabric3Exception { List<PhysicalResource> physicalResources = new ArrayList<>(); Resource resource = logicalResource.getDefinition(); ResourceGenerator generator = generatorRegistry.getResourceGenerator(resource.getClass()); PhysicalResource physicalResource = generator.generateResource(logicalResource); physicalResources.add(physicalResource); return physicalResources; }
@SuppressWarnings({"unchecked"}) private PhysicalChannelConnection generateDirectBoundConnection(LogicalConsumer consumer, LogicalChannel channel, DeliveryType deliveryType, ClassLoader classLoader, PhysicalConnectionTarget target) { LogicalBinding<?> binding = channel.getBinding(); ConnectionBindingGenerator bindingGenerator = getGenerator(binding); PhysicalConnectionSource source = bindingGenerator.generateConnectionSource(consumer, binding, deliveryType); source.setClassLoader(classLoader); URI uri = channel.getUri(); Class<?> type = getType(consumer); return new PhysicalChannelConnection(uri, consumer.getUri(), source, target, type, true); }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalService service) { for (LogicalBinding<?> logicalBinding : service.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateServiceCallback(logicalBinding); definition.setParent(service.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, service); service.addCallbackBinding(logicalCallback); } }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalReference reference) { for (LogicalBinding<?> logicalBinding : reference.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateReferenceCallback(logicalBinding); definition.setParent(reference.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, reference); reference.addCallbackBinding(logicalCallback); } }
/** * Serializes the contents of a parsed WSDL as a string. * * @param wsdl the WSDL * @return the serialized WSDL * @throws GenerationException if an error occurs reading the URL */ private String serializeToString(Definition wsdl) throws GenerationException { try { WSDLWriter writer = wsdlFactory.newWriter(); StringWriter stringWriter = new StringWriter(); writer.writeWSDL(wsdl, stringWriter); return stringWriter.toString(); } catch (WSDLException e) { throw new GenerationException(e); } }
/** * Loads a service contract class in either a host environment that supports classloader isolation or one that does not, in which case the TCCL is used. * * @param javaContract the contract * @param contributionUri the contribution URI the contract class is loaded in * @return the loaded class */ private Class<?> loadServiceClass(JavaServiceContract javaContract, URI contributionUri) throws GenerationException { ClassLoader loader = classLoaderRegistry.getClassLoader(contributionUri); try { return loader.loadClass(javaContract.getInterfaceClass()); } catch (ClassNotFoundException e) { throw new GenerationException(e); } }
/** * Returns the WSDL location if one is defined in the binding configuration or null. * * @param binding the logical binding * @return the WSDL location or null * @throws GenerationException if the WSDL location is invalid */ private URL getWsdlLocation(LogicalBinding<WsBindingDefinition> binding) throws GenerationException { WsBindingDefinition definition = binding.getDefinition(); try { String location = definition.getWsdlLocation(); if (location != null) { return new URL(location); } } catch (MalformedURLException e) { throw new GenerationException(e); } return null; }
public MetroWireTargetDefinition generateTarget(LogicalBinding<WsBindingDefinition> binding, WsdlServiceContract contract, EffectivePolicy policy) throws GenerationException { URL targetUrl = null; URI targetUri = binding.getDefinition().getTargetUri(); if (targetUri != null) { try { targetUrl = targetUri.toURL(); } catch (MalformedURLException e) { throw new GenerationException(e); } } return generateTarget(binding, targetUrl, contract, policy); }
public FtpWireSourceDefinition generateSource(LogicalBinding<FtpBindingDefinition> binding, ServiceContract contract, List<LogicalOperation> operations, EffectivePolicy policy) throws GenerationException { if (contract.getOperations().size() != 1) { throw new GenerationException("Expects only one operation"); } FtpWireSourceDefinition hwsd = new FtpWireSourceDefinition(); URI targetUri = binding.getDefinition().getTargetUri(); hwsd.setUri(targetUri); return hwsd; }