/// <summary> /// Builds an MethodCall using IMethodCallMessage. /// </summary> /// <param name="msg">Information, to create a MethodCallRequest</param> /// <returns>A new instance of methodCallrequest</returns> private MethodCallMessage ToMethodCallRequest(IMethodCallMessage msg) { Guid id = Guid.NewGuid(); string methodName = msg.MethodName; Dictionary <string, string> metaData = new Dictionary <string, string>(); // The structure is always domain.DOMAINTYPE.events metaData.Add("serviceId", "domain." + DomainName + ".events"); // Arbitrary string, maybe not necessary metaData.Add("contextId", ContextId); List <string> classes = new List <string>(); foreach (object arg in msg.Args) { if (arg != null) { LocalType type = new LocalType(arg.GetType()); classes.Add(type.RemoteTypeFullName); } else { classes.Add(null); } } RemoteMethodCall call = RemoteMethodCall.CreateInstance(methodName, msg.Args, metaData, classes, null); BeanDescription authentification = BeanDescription.CreateInstance(AuthenificationClass); authentification.Data.Add("value", Password); MethodCallMessage message = MethodCallMessage.CreateInstance(Username, authentification, call, id.ToString(), true, String.Empty); return(message); }
/// <summary> /// Creates an Proxy on the bus. /// </summary> public override void CreateRemoteProxy() { Logger.Info("Create a new connector"); IDictionary <string, string> metaData = new Dictionary <string, string>(); metaData.Add("serviceId", CreationServiceId); metaData.Add("contextId", ContextId); RegisterId = ConnectorId; IList <string> classes = new List <string>(); LocalType localType = new LocalType(typeof(String)); classes.Add(localType.RemoteTypeFullName); classes.Add("org.openengsb.core.api.model.ConnectorDescription"); IList <object> args = new List <object>(); Org.Openengsb.Loom.CSharp.Bridge.OpenEngSB300.Remote.RemoteObjects.ConnectorDescription connectorDescription = new Org.Openengsb.Loom.CSharp.Bridge.OpenEngSB300.Remote.RemoteObjects.ConnectorDescription(); connectorDescription.Attributes.Add("serviceId", ConnectorId); connectorDescription.Attributes.Add("portId", CreationPort); connectorDescription.Attributes.Add("destination", Destination); connectorDescription.ConnectorType = CreationConnectorType; connectorDescription.DomainType = DomainName; args.Add(RegisterId); args.Add(connectorDescription); RemoteMethodCall creationCall = RemoteMethodCall.CreateInstance(CreationMethodName, args, metaData, classes, null); JmsDestination destinationinfo = new JmsDestination(Destination); destinationinfo.Queue = CreationQueue; String id = Guid.NewGuid().ToString(); BeanDescription autinfo = BeanDescription.CreateInstance(AuthentificationClass); autinfo.Data.Add("value", Password); MethodCallMessage secureRequest = MethodCallMessage.CreateInstance(Username, autinfo, creationCall, id, true, String.Empty); IOutgoingPort portOut = new JmsOutgoingPort(destinationinfo.FullDestination, ExceptionHandler, ConnectorId); string request = Marshaller.MarshallObject(secureRequest); portOut.Send(request, id); WaitAndCheckAnswer(destinationinfo, id); RegistrationProcess = ERegistration.CREATED; portOut.Close(); Logger.Info("Create done"); }
/// <summary> /// Connect a connector to xlink /// </summary> /// <param name="ServiceId"></param> /// <param name="hostId"></param> /// <param name="toolName"></param> /// <param name="modelsToViews"></param> /// <returns></returns> public override XLinkUrlBlueprint ConnectToXLink(string toolName, String hostId, ModelToViewsTuple[] modelsToViews) { Logger.Info("Create a Xlink connector"); IDictionary <string, string> metaData = new Dictionary <string, string>(); metaData.Add("serviceId", CreationServiceId); metaData.Add("contextId", ContextId); IList <string> classes = new List <string>(); LocalType localType = new LocalType(typeof(String)); classes.Add(localType.RemoteTypeFullName); classes.Add(localType.RemoteTypeFullName); classes.Add(localType.RemoteTypeFullName); localType = new LocalType(modelsToViews.GetType()); classes.Add(localType.RemoteTypeFullName); IList <object> args = new List <object>(); args.Add(RegisterId); args.Add(hostId); args.Add(toolName); args.Add(modelsToViews); RemoteMethodCall creationCall = RemoteMethodCall.CreateInstance(XlinkMethodName, args, metaData, classes, null); JmsDestination destinationinfo = new JmsDestination(Destination); destinationinfo.Queue = CreationQueue; String id = Guid.NewGuid().ToString(); BeanDescription autinfo = BeanDescription.CreateInstance(AuthentificationClass); autinfo.Data.Add("value", Password); MethodCallMessage methodCall = MethodCallMessage.CreateInstance(Username, autinfo, creationCall, id, true, String.Empty); IOutgoingPort portOut = new JmsOutgoingPort(destinationinfo.FullDestination, ExceptionHandler, ConnectorId); string request = Marshaller.MarshallObject(methodCall); portOut.Send(request, id); portOut.Close(); MethodResultMessage result = WaitAndCheckAnswer(destinationinfo, id); RegistrationProcess = ERegistration.XLINK; Logger.Info("Create done"); return(Marshaller.UnmarshallObject <XLinkUrlBlueprint>(result.Result.Arg.ToString())); }
/// <summary> /// Creates an Proxy on the bus. /// </summary> public override void UnRegisterConnector() { if (!RegistrationProcess.Equals(ERegistration.REGISTERED)) { return; } Logger.Info("Unregister the connector with ID: " + ConnectorId); IDictionary <string, string> metaData = new Dictionary <string, string>(); metaData.Add("serviceId", CreationRegistration); metaData.Add("contextId", ContextId); LocalType localType = new LocalType(typeof(String)); IList <string> classes = new List <string>(); classes.Add(localType.RemoteTypeFullName); IList <object> args = new List <object>(); args.Add(ConnectorId); RemoteMethodCall creationCall = RemoteMethodCall.CreateInstance(UnregistrationMethodName, args, metaData, classes, null); JmsDestination destinationinfo = new JmsDestination(Destination); destinationinfo.Queue = CreationQueue; BeanDescription autinfo = BeanDescription.CreateInstance(AuthentificationClass); autinfo.Data.Add("value", Password); String id = Guid.NewGuid().ToString(); MethodCallMessage secureRequest = MethodCallMessage.CreateInstance(Username, autinfo, creationCall, id, true, String.Empty); IOutgoingPort portOut = new JmsOutgoingPort(destinationinfo.FullDestination, ExceptionHandler, ConnectorId); string request = Marshaller.MarshallObject(secureRequest); portOut.Send(request, id); WaitAndCheckAnswer(destinationinfo, id); if (RegistrationProcess.Equals(ERegistration.REGISTERED)) { RegistrationProcess = ERegistration.CREATED; } portOut.Close(); Logger.Info("Unregister done"); }
private string GetJsonExampleString() { BeanDescription bean = BeanDescription.CreateInstance("classname"); RemoteMethodCall remoteMC = RemoteMethodCall.CreateInstance( "methodName", new List <Object>() { "Test1" }, new Dictionary <String, String>(), new List <String>() { "Classes" }, new List <String> { "Real" }); MethodCallMessage message = MethodCallMessage.CreateInstance("principal", bean, remoteMC, "123", false, "TestCase"); return(marshaller.MarshallObject(message)); }
/// <summary> /// Disconnect the Connector from XLink /// </summary> public override void DisconnectFromXLink(String hostId) { Logger.Info("Disconnect connector from xlink with the serviceId: " + ConnectorId); IDictionary <string, string> metaData = new Dictionary <string, string>(); metaData.Add("serviceId", CreationServiceId); metaData.Add("contextId", ContextId); LocalType localType = new LocalType(typeof(String)); IList <String> classes = new List <String>(); classes.Add(localType.RemoteTypeFullName); classes.Add(localType.RemoteTypeFullName); IList <object> args = new List <object>(); args.Add(RegisterId); args.Add(hostId); RemoteMethodCall deletionCall = RemoteMethodCall.CreateInstance(RemoveXlinkConnectorMethodName, args, metaData, classes, null); String id = Guid.NewGuid().ToString(); BeanDescription authentification = BeanDescription.CreateInstance(AuthentificationClass); authentification.Data.Add("value", Password); MethodCallMessage callRequest = MethodCallMessage.CreateInstance(Username, authentification, deletionCall, id, true, String.Empty); JmsDestination destinationinfo = new JmsDestination(Destination); destinationinfo.Queue = CreationQueue; IOutgoingPort portOut = new JmsOutgoingPort(destinationinfo.FullDestination, ExceptionHandler, ConnectorId); string request = Marshaller.MarshallObject(callRequest); portOut.Send(request, id); WaitAndCheckAnswer(destinationinfo, id); portOut.Close(); RegistrationProcess = ERegistration.REGISTERED; Logger.Info("XLink is disconnected"); }