Example #1
0
        private HelloResponse ProcessHelloRequest(HelloRequest request)
        {
            IList <RemoteConnectorInfoImpl> connectorInfo;
            Exception exception = null;

            try
            {
                ConnectorInfoManager manager =
                    GetConnectorInfoManager();
                IList <ConnectorInfo> localInfos =
                    manager.ConnectorInfos;
                connectorInfo = new List <RemoteConnectorInfoImpl>();
                foreach (ConnectorInfo localInfo in localInfos)
                {
                    LocalConnectorInfoImpl localInfoImpl =
                        (LocalConnectorInfoImpl)localInfo;
                    RemoteConnectorInfoImpl remoteInfo =
                        localInfoImpl.ToRemote();
                    connectorInfo.Add(remoteInfo);
                }
            }
            catch (Exception e)
            {
                TraceUtil.TraceException(null, e);
                exception     = e;
                connectorInfo = null;
            }
            return(new HelloResponse(exception, connectorInfo));
        }
Example #2
0
        /// <summary>
        /// Method for convenient testing of local connectors.
        /// </summary>
        public APIConfiguration CreateTestConfiguration(SafeType <Connector> clazz,
                                                        Configuration config)
        {
            LocalConnectorInfoImpl info = new LocalConnectorInfoImpl();

            info.ConnectorConfigurationClass = SafeType <Configuration> .Get(config);

            info.ConnectorClass          = (clazz);
            info.ConnectorDisplayNameKey = ("DUMMY_DISPLAY_NAME");
            info.ConnectorKey            = (
                new ConnectorKey(clazz.RawType.Name + ".bundle",
                                 "1.0",
                                 clazz.RawType.Name));
            info.Messages = (this.CreateDummyMessages());
            APIConfigurationImpl rv = new APIConfigurationImpl();

            rv.IsConnectorPoolingSupported = (
                IsConnectorPoolingSupported(clazz));
            ConfigurationPropertiesImpl properties =
                CSharpClassProperties.CreateConfigurationProperties(config);

            rv.ConfigurationProperties = (properties);
            rv.ConnectorInfo           = (info);
            rv.SupportedOperations     = (
                FrameworkUtil.GetDefaultSupportedOperations(clazz));
            info.DefaultAPIConfiguration = (
                rv);
            return(rv);
        }
        private HelloResponse ProcessHelloRequest(HelloRequest request)
        {
            IList <RemoteConnectorInfoImpl> connectorInfo = null;
            IList <ConnectorKey>            connectorKeys = null;
            IDictionary <string, object>    serverInfo    = null;
            Exception exception = null;

            try
            {
                serverInfo = new Dictionary <string, object>(1);
                if (request.isServerInfo())
                {
                    serverInfo.Add(HelloResponse.SERVER_START_TIME, _server.StartTime());
                }
                if (request.isConnectorKeys())
                {
                    ConnectorInfoManager  manager    = GetConnectorInfoManager();
                    IList <ConnectorInfo> localInfos = manager.ConnectorInfos;
                    connectorKeys = new List <ConnectorKey>();
                    foreach (ConnectorInfo localInfo in localInfos)
                    {
                        connectorKeys.Add(localInfo.ConnectorKey);
                    }
                    if (request.isConnectorInfo())
                    {
                        connectorInfo = new List <RemoteConnectorInfoImpl>();
                        foreach (ConnectorInfo localInfo in localInfos)
                        {
                            LocalConnectorInfoImpl localInfoImpl =
                                (LocalConnectorInfoImpl)localInfo;
                            RemoteConnectorInfoImpl remoteInfo =
                                localInfoImpl.ToRemote();
                            connectorInfo.Add(remoteInfo);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                LOG.Error(e);
                exception     = e;
                connectorInfo = null;
            }
            return(new HelloResponse(exception, serverInfo, connectorKeys, connectorInfo));
        }
Example #4
0
        public override ConnectorFacade NewInstance(APIConfiguration config)
        {
            ConnectorFacade       ret           = null;
            APIConfigurationImpl  impl          = (APIConfigurationImpl)config;
            AbstractConnectorInfo connectorInfo = impl.ConnectorInfo;

            if (connectorInfo is LocalConnectorInfoImpl)
            {
                LocalConnectorInfoImpl localInfo =
                    (LocalConnectorInfoImpl)connectorInfo;
                // create a new Provisioner..
                ret = new LocalConnectorFacadeImpl(localInfo, impl);
            }
            else
            {
                ret = new RemoteConnectorFacadeImpl(impl);
            }
            return(ret);
        }
Example #5
0
        /// <summary>
        /// Method for convenient testing of local connectors.
        /// </summary>
        public APIConfiguration CreateTestConfiguration(SafeType <Connector> connectorClass, PropertyBag configData, string prefix)
        {
            Debug.Assert(null != connectorClass);
            Type rawConnectorClass = connectorClass.RawType;

            Object[] attributes = connectorClass.RawType.GetCustomAttributes(
                typeof(ConnectorClassAttribute),
                false);
            if (attributes.Length > 0)
            {
                ConnectorClassAttribute attribute =
                    (ConnectorClassAttribute)attributes[0];

                Assembly assembly = IOUtil.GetAssemblyContainingType(rawConnectorClass.FullName);

                String fileName = assembly.Location;
                SafeType <Configuration> connectorConfigurationClass = attribute.ConnectorConfigurationType;
                if (connectorConfigurationClass == null)
                {
                    String MSG = ("File " + fileName +
                                  " contains a ConnectorInfo attribute " +
                                  "with no connector configuration class.");
                    throw new ConfigurationException(MSG);
                }
                String connectorDisplayNameKey =
                    attribute.ConnectorDisplayNameKey;
                if (connectorDisplayNameKey == null)
                {
                    String MSG = ("File " + fileName +
                                  " contains a ConnectorInfo attribute " +
                                  "with no connector display name.");
                    throw new ConfigurationException(MSG);
                }
                LocalConnectorInfoImpl rv = new LocalConnectorInfoImpl();
                rv.ConnectorClass = connectorClass;
                rv.ConnectorConfigurationClass = connectorConfigurationClass;
                rv.ConnectorDisplayNameKey     = connectorDisplayNameKey;
                rv.ConnectorCategoryKey        = attribute.ConnectorCategoryKey;
                rv.ConnectorKey = (
                    new ConnectorKey(rawConnectorClass.Name + ".bundle",
                                     "1.0",
                                     rawConnectorClass.Name));;
                APIConfigurationImpl impl = LocalConnectorInfoManagerImpl.CreateDefaultAPIConfiguration(rv);
                rv.DefaultAPIConfiguration = impl;
//                if (false)
//                {
//                    rv.Messages = CreateDummyMessages();
//                }
//                else
                {
                    rv.Messages = LocalConnectorInfoManagerImpl.LoadMessages(assembly, rv, attribute.MessageCatalogPaths);
                }
                ConfigurationPropertiesImpl configProps = (ConfigurationPropertiesImpl)impl.ConfigurationProperties;

                string fullPrefix = StringUtil.IsBlank(prefix) ? null : prefix + ".";

                foreach (ConfigurationPropertyImpl property in configProps.Properties)
                {
                    object value = configData.GetProperty(null != fullPrefix ? fullPrefix + property.Name : property.Name, property.ValueType, property.Value);
                    if (value != null)
                    {
                        property.Value = value;
                    }
                }
                return(impl);
            }
            throw new ArgumentException("ConnectorClass does not define ConnectorClassAttribute");
        }