예제 #1
0
 private static T GetResultTypeRef <T>(ServiceTypeInfo type) where T : ISwaggerSchema, new()
 {
     return(new T
     {
         Ref = "#/definitions/" + GetTypeAsDtoName(type),
     });
 }
예제 #2
0
        public static List <ServiceTypeInfo> GetList_ServiceType(string ServiceTypeID, string ServiceTypeName, bool IsActive)
        {
            using (DBHelper dbhlper = new DBHelper("[spMSTServiceTypeGet]"))
            {
                DBHelper.AddPparameter("@ServiceTypeId", ServiceTypeID);
                DBHelper.AddPparameter("@ServiceTypeName", ServiceTypeName);

                using (DataSet ds = DBHelper.Execute_Query())
                {
                    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                    {
                        List <ServiceTypeInfo> list = new List <ServiceTypeInfo>();
                        ServiceTypeInfo        obj  = null;

                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            obj = new ServiceTypeInfo();
                            obj.ServiceTypeId   = dr["ServiceTypeID"].ToString();
                            obj.ServiceTypeName = dr["ServiceTypeName"].ToString();
                            obj.LastModifiedOn  = Convert.ToDateTime(dr["LastModifiedOn"]);
                            obj.LastModifiedBy  = dr["LastModifiedBy"].ToString();
                            obj.ActivityType    = dr["ActivityType"].ToString();
                            obj.IsActive        = dr["IsActive"].ToString().Trim().ToUpper() == "Y";
                            obj.DatauniqueID    = dr["DatauniqueID"].ToString();

                            list.Add(obj);
                        }

                        return(list);
                    }
                }
            }

            return(null);
        }
예제 #3
0
        public void Register_WithExistingServiceType()
        {
            // Arrange
            var urmServiceType = ServiceTypeInfo.Create(Resources.ServiceType_URMService);

            var serviceTypeSettings = new Mock <ServiceTypeSettings>();

            serviceTypeSettings
            .SetupGet(i => i.ClassName)
            .Returns(urmServiceType.Class);

            var serviceTypeCreator = new Mock <ServiceTypeManager>(serviceTypeSettings.Object);

            var registerableServices = new Dictionary <string, string>();

            MockWrapperFactory.Instance.ServiceManagementServer
            .Setup(i => i.GetRegisterableServices())
            .Returns(registerableServices);

            var serviceTypeInfoCollection = new List <ServiceTypeInfo>
            {
                urmServiceType
            };

            MockWrapperFactory.Instance.ServiceManagementServer
            .Setup(i => i.GetServiceTypes())
            .Returns(serviceTypeInfoCollection);

            // Action
            serviceTypeCreator.Object.Register();
        }
예제 #4
0
        private IEnumerable <ServiceDtoInfo> GetDtosForType(ServiceTypeInfo type)
        {
            switch (type.Kind)
            {
            case ServiceTypeKind.Error:
                yield return(GetErrorDto());

                break;

            case ServiceTypeKind.Dto:
                yield return(type.Dto);

                break;

            case ServiceTypeKind.Result:
                yield return(GetResultDto(type));

                break;
            }

            if (type.ValueType != null)
            {
                foreach (var dto in GetDtosForType(type.ValueType))
                {
                    yield return(dto);
                }
            }
        }
예제 #5
0
        /// <summary>
        /// Serializes the object to JSON.
        /// </summary>
        /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param>
        /// <param name="obj">The object to serialize to JSON.</param>
        internal static void Serialize(JsonWriter writer, ServiceTypeInfo obj)
        {
            // Required properties are always serialized, optional properties are serialized when not null.
            writer.WriteStartObject();
            if (obj.ServiceTypeDescription != null)
            {
                writer.WriteProperty(obj.ServiceTypeDescription, "ServiceTypeDescription", ServiceTypeDescriptionConverter.Serialize);
            }

            if (obj.ServiceManifestName != null)
            {
                writer.WriteProperty(obj.ServiceManifestName, "ServiceManifestName", JsonWriterExtensions.WriteStringValue);
            }

            if (obj.ServiceManifestVersion != null)
            {
                writer.WriteProperty(obj.ServiceManifestVersion, "ServiceManifestVersion", JsonWriterExtensions.WriteStringValue);
            }

            if (obj.IsServiceGroup != null)
            {
                writer.WriteProperty(obj.IsServiceGroup, "IsServiceGroup", JsonWriterExtensions.WriteBoolValue);
            }

            writer.WriteEndObject();
        }
예제 #6
0
        public static bool Save_ServiceType(bool isOnlyDelete, ServiceTypeInfo obj, UserInfo objUserInfo, out string errormsg)
        {
            errormsg = "";

            #region Validations
            if (!Validations.ValidateDataType(obj.ServiceTypeId, Validations.ValueType.Integer, true, "ServiceType Id", out errormsg))
            {
                return(false);
            }
            if (!Validations.ValidateDataType(obj.ServiceTypeName, Validations.ValueType.AlphaNumericSpecialChar, true, "ServiceType Name", out errormsg))
            {
                return(false);
            }
            #endregion

            using (DBHelper dbhlper = new DBHelper("[spMSTServiceTypeSave]", true))
            {
                DBHelper.AddPparameter("@ServiceTypeId", obj.ServiceTypeId, DBHelper.param_types.Varchar);
                DBHelper.AddPparameter("@ServiceTypeName", obj.ServiceTypeName, DBHelper.param_types.Varchar);
                DBHelper.AddPparameter("@IsActive", (obj.IsActive ? "Y" : "N"), DBHelper.param_types.Varchar);
                DBHelper.AddPparameter("@UserCode", objUserInfo.UserCode.ToString().Trim(), DBHelper.param_types.Varchar);
                DBHelper.AddPparameter("@isOnlyDelete", (isOnlyDelete ? 'Y' : 'N'), DBHelper.param_types.Varchar);
                DBHelper.AddPparameter("@NewDatauniqueID", 0, DBHelper.param_types.BigInt, 50, DBHelper.param_direction.Output);
                DBHelper.AddPparameter("@ErrorMessage", errormsg, DBHelper.param_types.Varchar, 500, DBHelper.param_direction.Output);

                return(DBHelper.Execute_NonQuery(out errormsg));
            }
        }
예제 #7
0
 private static SwaggerSchema GetMapOfSchema(ServiceTypeInfo type)
 {
     return(new SwaggerSchema
     {
         Type = SwaggerSchemaType.Object,
         AdditionalProperties = GetTypeSchema <SwaggerSchema>(type),
     });
 }
예제 #8
0
 private static T GetArrayOfSchema <T>(ServiceTypeInfo type) where T : ISwaggerSchema, new()
 {
     return(new T
     {
         Type = SwaggerSchemaType.Array,
         Items = GetTypeSchema <SwaggerSchema>(type),
     });
 }
예제 #9
0
 private static SwaggerResponse CreateSwaggerResponse(ServiceTypeInfo type = null, string identifier = null, string description = null)
 {
     return(new SwaggerResponse
     {
         Description = description ?? "",
         Schema = type != null && type.Kind != ServiceTypeKind.Boolean ? GetTypeSchema <SwaggerSchema>(type) : null,
         Identifier = identifier,
     });
 }
        public static ServiceTypeInfo GetServiceTypeInfo(Guid serviceTypeGuid)
        {
            var connection = WrapperFactory.Instance.GetServiceManagementServerWrapper(null);

            using (connection.BaseAPIServer?.Connection)
            {
                string serviceTypeInfoXml = connection.GetServiceType(serviceTypeGuid);
                return(ServiceTypeInfo.Create(serviceTypeInfoXml));
            }
        }
예제 #11
0
 private static ServiceDtoInfo GetResultDto(ServiceTypeInfo type)
 {
     return(new ServiceDtoInfo(name: GetTypeAsDtoName(type),
                               fields: new[]
     {
         new ServiceFieldInfo(name: "value", typeName: type.ValueType.ToString(), summary: "The value."),
         new ServiceFieldInfo(name: "error", typeName: "error", summary: "The error."),
     },
                               summary: "A result value or error."));
 }
예제 #12
0
 private static SwaggerParameter CreateSwaggerRequestBodyParameter(ServiceTypeInfo type, string name, string description = null)
 {
     return(new SwaggerParameter
     {
         In = SwaggerParameterKind.Body,
         Name = name,
         Description = description,
         Required = true,
         Schema = GetTypeSchema <SwaggerSchema>(type),
     });
 }
예제 #13
0
        private static ServiceTypeInfo TryCreateMethodResponseBodyType(HttpMethodInfo httpMethodInfo, HttpResponseInfo httpResponseInfo)
        {
            if (httpResponseInfo.NormalFields == null || httpResponseInfo.NormalFields.Count == 0)
            {
                return(null);
            }

            return(ServiceTypeInfo.CreateDto(new ServiceDtoInfo(
                                                 name: $"{CodeGenUtility.ToPascalCase(httpMethodInfo.ServiceMethod.Name)}Response",
                                                 fields: httpResponseInfo.NormalFields.Select(x => x.ServiceField))));
        }
예제 #14
0
        internal ServiceInfo(Type serviceType, Type implementationType, ServiceScope scope, object instance, Func <IDependencyResolver, object> creationFunction, InjectionMode injectionMode)
        {
            ServiceType = serviceType;

            if (implementationType != null)
            {
                ImplementationTypeInfo = ServiceTypeInfo.Get(implementationType);
            }

            Scope            = scope;
            Instance         = instance;
            CreationFunction = creationFunction;
            InjectionMode    = injectionMode;
        }
예제 #15
0
        internal static TObject CreateObject <TObject>(IDependencyResolver dependencyResolver)
            where TObject : class, new()
        {
            var info         = ServiceTypeInfo.Get(typeof(TObject));
            var dependencies = info.DependencyProperties.Select(x => dependencyResolver.Get(x.PropertyType)).ToArray();
            var instance     = new TObject();

            for (var i = 0; i < dependencies.Length; i++)
            {
                info.DependencyProperties[i].SetValue(instance, dependencies[i]);
            }

            return(instance);
        }
예제 #16
0
        public override void AddChild(IConfigurationFileElement child)
        {
            base.AddChild(child);
            if (child is IServiceToProxyImplementationElement serviceToProxyImplementation)
            {
                if (ServiceTypeInfo.Type == serviceToProxyImplementation.ValueTypeInfo.Type)
                {
                    throw new ConfigurationParseException(serviceToProxyImplementation,
                                                          $"The types specified in elements '{ConfigurationFileElementNames.ProxyService}' and '{ConfigurationFileElementNames.ServiceToProxy}' cannot be the same. Both elements use specify the type '{ServiceTypeInfo.Type.GetTypeNameInCSharpClass()}'.", this);
                }

                if (!ServiceTypeInfo.Type.IsAssignableFrom(serviceToProxyImplementation.ValueTypeInfo.Type))
                {
                    throw new ConfigurationParseException(serviceToProxyImplementation,
                                                          string.Format("The type specified element '{0}' for service to proxy should be assignable from the type specified element '{1}' for proxy service.",
                                                                        ConfigurationFileElementNames.ServiceToProxy,
                                                                        ConfigurationFileElementNames.ProxyService), this);
                }

                var pluginTypesUsedInProxyService   = ServiceTypeInfo.GetUniquePluginTypes();
                var pluginTypesUsedInProxiedService = serviceToProxyImplementation.ValueTypeInfo.GetUniquePluginTypes();

                if (pluginTypesUsedInProxyService.Count == 0)
                {
                    if (pluginTypesUsedInProxiedService.Count > 0)
                    {
                        throw new ConfigurationParseException(serviceToProxyImplementation,
                                                              string.Format("Non plugin proxy service '{0}' cannot proxy a plugin service '{1}' which belongs to plugin '{2}'.",
                                                                            ServiceTypeInfo.TypeCSharpFullName,
                                                                            serviceToProxyImplementation.ValueTypeInfo,
                                                                            pluginTypesUsedInProxiedService[0].Assembly.Plugin.Name),
                                                              this);
                    }
                }
                else
                {
                    if (pluginTypesUsedInProxiedService.Count == 0)
                    {
                        throw new ConfigurationParseException(serviceToProxyImplementation,
                                                              string.Format("Proxy service '{0}' belongs to plugin '{1}' and cannot proxy a non-plugin service '{1}'.",
                                                                            ServiceTypeInfo.TypeCSharpFullName,
                                                                            pluginTypesUsedInProxiedService[0].Assembly.Plugin.Name, serviceToProxyImplementation.ValueTypeInfo),
                                                              this);
                    }
                }

                _implementations.Add(serviceToProxyImplementation);
            }
        }
예제 #17
0
        public ActionResult Save_ServiceType(string isOnlyDelete, string ServiceTypeId, string ServiceTypeName, string IsActive)
        {
            using (Master_Svc.MasterServiceClient iGstSvc = new Master_Svc.MasterServiceClient())
            {
                ServiceTypeInfo objServiceType = new ServiceTypeInfo();
                objServiceType.ServiceTypeId   = ServiceTypeId;
                objServiceType.ServiceTypeName = ServiceTypeName;
                objServiceType.IsActive        = IsActive.Trim().ToUpper() == "Y";

                if (iGstSvc.Save_ServiceType(isOnlyDelete.Trim().ToUpper() == "Y", objServiceType, ((UserInfo)Session["UserDetails"]), out ErrorMessage))
                {
                    return(Json("Ok", JsonRequestBehavior.AllowGet));
                }
                return(Json(ErrorMessage, JsonRequestBehavior.AllowGet));
            }
        }
        public static ServiceTypeInfo GetServiceType(Guid guid)
        {
            var serviceManagementServer = WrapperFactory.Instance.GetServiceManagementServerWrapper(null);

            using (serviceManagementServer.BaseAPIServer?.Connection)
            {
                var serviceTypeXml = serviceManagementServer.GetServiceType(guid);
                if (string.IsNullOrEmpty(serviceTypeXml))
                {
                    return(null);
                }
                else
                {
                    return(ServiceTypeInfo.Create(serviceTypeXml));
                }
            }
        }
예제 #19
0
        private static string GetMemberTypeName(this ServiceTypeInfo type)
        {
            switch (type.Kind)
            {
            case ServiceTypeKind.Dto:
                return(type.Dto.Name);

            case ServiceTypeKind.Enum:
                return(type.Enum.Name);

            case ServiceTypeKind.Array:
            case ServiceTypeKind.Result:
            case ServiceTypeKind.Map:
                return(type.ValueType.GetMemberTypeName());
            }
            return(null);
        }
예제 #20
0
        private static string GetTypeAsDtoName(ServiceTypeInfo type)
        {
            var typeKind = type.Kind;

            switch (typeKind)
            {
            case ServiceTypeKind.Dto:
                return(type.Dto.Name);

            case ServiceTypeKind.Enum:
                return(type.Enum.Name);

            case ServiceTypeKind.Result:
            case ServiceTypeKind.Array:
            case ServiceTypeKind.Map:
                return(GetTypeAsDtoName(type.ValueType) + typeKind);

            default:
                return(typeKind.ToString());
            }
        }
예제 #21
0
        private string RenderFieldType(ServiceTypeInfo fieldType)
        {
            switch (fieldType.Kind)
            {
            case ServiceTypeKind.String:
            case ServiceTypeKind.Bytes:
            case ServiceTypeKind.Enum:
                return("string");

            case ServiceTypeKind.Boolean:
                return("boolean");

            case ServiceTypeKind.Double:
            case ServiceTypeKind.Int32:
            case ServiceTypeKind.Int64:
            case ServiceTypeKind.Decimal:
                return("number");

            case ServiceTypeKind.Object:
                return("{ [name: string]: any }");

            case ServiceTypeKind.Error:
                return("IServiceError");

            case ServiceTypeKind.Dto:
                return($"I{CodeGenUtility.Capitalize(fieldType.Dto.Name)}");

            case ServiceTypeKind.Result:
                return($"IServiceResult<{RenderFieldType(fieldType.ValueType)}>");

            case ServiceTypeKind.Array:
                return($"{RenderFieldType(fieldType.ValueType)}[]");

            case ServiceTypeKind.Map:
                return($"{{ [name: string]: {RenderFieldType(fieldType.ValueType)} }}");

            default:
                throw new NotSupportedException("Unknown field type " + fieldType.Kind);
            }
        }
 public static string RenderFieldTypeClass(ServiceTypeInfo typeInfo) =>
 typeInfo.Kind switch
 {
예제 #23
0
 public bool Save_ServiceType(bool isOnlyDelete, ServiceTypeInfo obj, UserInfo objUserInfo, out string errormsg)
 {
     return(wscalls.Save_ServiceType(isOnlyDelete, obj, objUserInfo, out errormsg));
 }
예제 #24
0
        private static T GetTypeSchema <T>(ServiceTypeInfo type) where T : ISwaggerSchema, new()
        {
            switch (type.Kind)
            {
            case ServiceTypeKind.String:
                return(new T {
                    Type = SwaggerSchemaType.String
                });

            case ServiceTypeKind.Boolean:
                return(new T {
                    Type = SwaggerSchemaType.Boolean
                });

            case ServiceTypeKind.Double:
                return(new T {
                    Type = SwaggerSchemaType.Number, Format = SwaggerSchemaTypeFormat.Double
                });

            case ServiceTypeKind.Int32:
                return(new T {
                    Type = SwaggerSchemaType.Integer, Format = SwaggerSchemaTypeFormat.Int32
                });

            case ServiceTypeKind.Int64:
                return(new T {
                    Type = SwaggerSchemaType.Integer, Format = SwaggerSchemaTypeFormat.Int64
                });

            case ServiceTypeKind.Decimal:
                return(new T {
                    Type = SwaggerSchemaType.Number, Format = SwaggerSchemaTypeFormat.Decimal
                });

            case ServiceTypeKind.Bytes:
                return(new T {
                    Type = SwaggerSchemaType.String, Format = SwaggerSchemaTypeFormat.Byte
                });

            case ServiceTypeKind.Object:
                return(new T {
                    Type = SwaggerSchemaType.Object
                });

            case ServiceTypeKind.Error:
                return(GetErrorSchemaRef <T>());

            case ServiceTypeKind.Dto:
                return(GetDtoSchemaRef <T>(type.Dto));

            case ServiceTypeKind.Enum:
                return(GetEnumSchema <T>(type.Enum));

            case ServiceTypeKind.Result:
                return(GetResultTypeRef <T>(type));

            case ServiceTypeKind.Array:
                return(GetArrayOfSchema <T>(type.ValueType));

            case ServiceTypeKind.Map:
                return((T)(object)GetMapOfSchema(type.ValueType));

            default:
                throw new InvalidOperationException("Unexpected field type kind: " + type.Kind);
            }
        }