コード例 #1
0
        private LinkRepresentation CreatePromptLink(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter) {
            var opts = new List<OptionalProperty>();

            var parameterContext = new ParameterContextSurface {
                Action = parameter.Action,
                Target = nakedObject,
                Parameter = parameter
            };

            if (parameter.IsAutoCompleteEnabled) {
                var arguments = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.XRoSearchTerm, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, null, typeof (object))))));
                var extensions = new OptionalProperty(JsonPropertyNames.Extensions, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.MinLength, parameter.AutoCompleteMinLength())));

                opts.Add(arguments);
                opts.Add(extensions);
            }
            else {
                Tuple<string, INakedObjectSpecificationSurface>[] parms = parameter.GetChoicesParameters();
                OptionalProperty[] args = parms.Select(tuple => RestUtils.CreateArgumentProperty(req, tuple, Flags)).ToArray();
                var arguments = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(args));
                opts.Add(arguments);
            }

            return LinkRepresentation.Create(new PromptRelType(new UriMtHelper(req, parameterContext)), Flags, opts.ToArray());
        }
コード例 #2
0
 public UriMtHelper(HttpRequestMessage req, ParameterTypeContextSurface parameterTypeContext)
     : this(req) {
     action     = parameterTypeContext.Action;
     spec       = parameterTypeContext.OwningSpecification;
     param      = parameterTypeContext.Parameter;
     cachedId   = "";
     cachedType = spec.DomainTypeName();
 }
コード例 #3
0
 private static object CreateDefaultLinks(HttpRequestMessage req, INakedObjectActionParameterSurface parameter, INakedObjectSurface defaultNakedObject, string title, RestControlFlags flags)
 {
     if (defaultNakedObject.Specification.IsCollection())
     {
         return(defaultNakedObject.ToEnumerable().Select(i => CreateDefaultLink(req, parameter, i, i.TitleString(), flags)).ToArray());
     }
     return(CreateDefaultLink(req, parameter, defaultNakedObject, title, flags));
 }
コード例 #4
0
 public UriMtHelper(HttpRequestMessage req, ParameterContextSurface parameterContext)
     : this(req) {
     action      = parameterContext.Action;
     param       = parameterContext.Parameter;
     nakedObject = parameterContext.Target;
     spec        = nakedObject.Specification;
     LinkObjectId oid = OidStrategyHolder.OidStrategy.GetOid(nakedObject);
     cachedId   = oid.InstanceId;
     cachedType = oid.DomainType;
 }
コード例 #5
0
        private void SetLinks(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter) {
            var tempLinks = new List<LinkRepresentation>();


            if (Flags.FormalDomainModel) {
                var parameterTypeContextSurface = new ParameterTypeContextSurface {
                    Action = parameter.Action,
                    OwningSpecification = nakedObject.Specification,
                    Parameter = parameter
                };
                LinkRepresentation describedBy = LinkRepresentation.Create(new ParamTypeRelType(RelValues.DescribedBy, new UriMtHelper(req, parameterTypeContextSurface)), Flags);
                tempLinks.Add(describedBy);
            }

            if (parameter.IsAutoCompleteEnabled || parameter.GetChoicesParameters().Any()) {
                tempLinks.Add(CreatePromptLink(req, nakedObject, parameter));
            }

            Links = tempLinks.ToArray();
        }
コード例 #6
0
 public static string Description(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <string>(ScalarProperty.Description));
 }
コード例 #7
0
 public string GetRelParametersFor(INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(FormatParameter(RelParamValues.Action, nakedObjectActionParameterSurface.Action.Id) + FormatParameter(RelParamValues.Param, nakedObjectActionParameterSurface.Id));
 }
コード例 #8
0
 public static object GetChoiceValue(HttpRequestMessage req, INakedObjectSurface item, INakedObjectActionParameterSurface parameter, RestControlFlags flags) {
     return GetChoiceValue(item, new ChoiceRelType(parameter, new UriMtHelper(req, item)), flags);
 }
コード例 #9
0
 public string GetRelParametersFor(INakedObjectActionParameterSurface nakedObjectActionParameterSurface) {
     return FormatParameter(RelParamValues.Action, nakedObjectActionParameterSurface.Action.Id) + FormatParameter(RelParamValues.Param, nakedObjectActionParameterSurface.Id);
 }
コード例 #10
0
        private void SetExtensions(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter, RestControlFlags flags) {
            IDictionary<string, object> custom = parameter.ExtensionData();

            if (IsUnconditionalChoices(parameter)) {
                Tuple<INakedObjectSurface, string>[] choices = parameter.GetChoicesAndTitles(nakedObject, null);
                Tuple<object, string>[] choicesArray = choices.Select(tuple => new Tuple<object, string>(RestUtils.GetChoiceValue(req, tuple.Item1, parameter, flags), tuple.Item2)).ToArray();

                OptionalProperty[] op = choicesArray.Select(tuple => new OptionalProperty(tuple.Item2, tuple.Item1)).ToArray();
                MapRepresentation map = MapRepresentation.Create(op);
                custom = custom ?? new Dictionary<string, object>();
                custom[JsonPropertyNames.CustomChoices] = map;
            }

            string mask = parameter.Mask();

            if (!string.IsNullOrWhiteSpace(mask)) {
                custom = custom ?? new Dictionary<string, object>();
                custom[JsonPropertyNames.CustomMask] = mask;
            }

            if (Flags.SimpleDomainModel) {
                Extensions = RestUtils.GetExtensions(friendlyname: parameter.Name(),
                                                     description: parameter.Description(),
                                                     pluralName: null,
                                                     domainType: null,
                                                     isService: null,
                                                     hasParams: null,
                                                     optional: !parameter.IsMandatory(),
                                                     maxLength: parameter.MaxLength(),
                                                     pattern: parameter.Pattern(),
                                                     memberOrder: null,
                                                     customExtensions: custom,
                                                     returnType: parameter.Specification);
            }
            else {
                Extensions = MapRepresentation.Create();
            }
        }
コード例 #11
0
 private static object CreateDefaultLinks(HttpRequestMessage req, INakedObjectActionParameterSurface parameter, INakedObjectSurface defaultNakedObject, string title, RestControlFlags flags)  {
     if (defaultNakedObject.Specification.IsCollection()) {
         return  defaultNakedObject.ToEnumerable().Select(i => CreateDefaultLink(req, parameter, i, i.TitleString(), flags)).ToArray();
     }
     return CreateDefaultLink(req, parameter, defaultNakedObject, title, flags);
 }
コード例 #12
0
 protected ParameterRepresentation(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter, RestControlFlags flags) : base(flags) {
     SetName(parameter);
     SetExtensions(req, nakedObject, parameter, flags);
     SetLinks(req, nakedObject, parameter);
     SetHeader(nakedObject);
 }
コード例 #13
0
 public static int AutoCompleteMinLength(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <int>(ScalarProperty.AutoCompleteMinLength));
 }
コード例 #14
0
 private static bool IsUnconditionalChoices(INakedObjectActionParameterSurface parameter) {
     return parameter.IsChoicesEnabled &&
            (parameter.Specification.IsParseable() || (parameter.Specification.IsCollection() && parameter.Specification.ElementType.IsParseable())) &&
            !parameter.GetChoicesParameters().Any();
 }
コード例 #15
0
 public static bool IsMandatory(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <bool>(ScalarProperty.IsMandatory));
 }
コード例 #16
0
 public static int Number(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <int>(ScalarProperty.Number));
 }
コード例 #17
0
 private static LinkRepresentation CreateDefaultLink(HttpRequestMessage req, INakedObjectActionParameterSurface parameter, INakedObjectSurface defaultNakedObject, string title, RestControlFlags flags)
 {
     return(LinkRepresentation.Create(new DefaultRelType(parameter, new UriMtHelper(req, defaultNakedObject)), flags, new OptionalProperty(JsonPropertyNames.Title, title)));
 }
コード例 #18
0
 private static bool IsUnconditionalChoices(INakedObjectActionParameterSurface parameter)
 {
     return(parameter.IsChoicesEnabled &&
            (parameter.Specification.IsParseable() || (parameter.Specification.IsCollection() && parameter.ElementType.IsParseable())) &&
            !parameter.GetChoicesParameters().Any());
 }
コード例 #19
0
        private void SetExtensions(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter, RestControlFlags flags)
        {
            IDictionary <string, object> custom = parameter.ExtensionData();

            if (IsUnconditionalChoices(parameter))
            {
                Tuple <INakedObjectSurface, string>[] choices = parameter.GetChoicesAndTitles(nakedObject, null);
                Tuple <object, string>[] choicesArray         = choices.Select(tuple => new Tuple <object, string>(RestUtils.GetChoiceValue(req, tuple.Item1, parameter, flags), tuple.Item2)).ToArray();

                OptionalProperty[] op  = choicesArray.Select(tuple => new OptionalProperty(tuple.Item2, tuple.Item1)).ToArray();
                MapRepresentation  map = MapRepresentation.Create(op);
                custom = custom ?? new Dictionary <string, object>();
                custom[JsonPropertyNames.CustomChoices] = map;
            }

            string mask = parameter.Mask();

            if (!string.IsNullOrWhiteSpace(mask))
            {
                custom = custom ?? new Dictionary <string, object>();
                custom[JsonPropertyNames.CustomMask] = mask;
            }

            if (Flags.SimpleDomainModel)
            {
                Extensions = RestUtils.GetExtensions(friendlyname: parameter.Name(),
                                                     description: parameter.Description(),
                                                     pluralName: null,
                                                     domainType: null,
                                                     isService: null,
                                                     hasParams: null,
                                                     optional: !parameter.IsMandatory(),
                                                     maxLength: parameter.MaxLength(),
                                                     pattern: parameter.Pattern(),
                                                     memberOrder: null,
                                                     customExtensions: custom,
                                                     returnType: parameter.Specification,
                                                     elementType: parameter.ElementType);
            }
            else
            {
                Extensions = MapRepresentation.Create();
            }
        }
コード例 #20
0
 public UriMtHelper(HttpRequestMessage req, ParameterContextSurface parameterContext)
     : this(req) {
     action = parameterContext.Action;
     param = parameterContext.Parameter;
     nakedObject = parameterContext.Target;
     spec = nakedObject.Specification;
     LinkObjectId oid = OidStrategyHolder.OidStrategy.GetOid(nakedObject);
     cachedId = oid.InstanceId;
     cachedType = oid.DomainType;
 }
コード例 #21
0
 public UriMtHelper(HttpRequestMessage req, ParameterTypeContextSurface parameterTypeContext)
     : this(req) {
     action = parameterTypeContext.Action;
     spec = parameterTypeContext.OwningSpecification;
     param = parameterTypeContext.Parameter;
     cachedId = "";
     cachedType = spec.DomainTypeName();
 }
コード例 #22
0
 public static int?MaxLength(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <int?>(ScalarProperty.MaxLength));
 }
コード例 #23
0
        public static ParameterRepresentation Create(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter, RestControlFlags flags)
        {
            var optionals = new List <OptionalProperty>();

            if (parameter.IsChoicesEnabled && !parameter.GetChoicesParameters().Any())
            {
                INakedObjectSurface[] choices = parameter.GetChoices(nakedObject, null);
                object[] choicesArray         = choices.Select(c => RestUtils.GetChoiceValue(req, c, parameter, flags)).ToArray();
                optionals.Add(new OptionalProperty(JsonPropertyNames.Choices, choicesArray));
            }

            if (parameter.DefaultTypeIsExplicit(nakedObject))
            {
                INakedObjectSurface defaultNakedObject = parameter.GetDefault(nakedObject);
                if (defaultNakedObject != null)
                {
                    string title        = defaultNakedObject.TitleString();
                    object value        = RestUtils.ObjectToPredefinedType(defaultNakedObject.Object);
                    var    isValue      = defaultNakedObject.Specification.IsParseable() || (defaultNakedObject.Specification.IsCollection() && defaultNakedObject.ElementSpecification.IsParseable());
                    object defaultValue = isValue ? value : CreateDefaultLinks(req, parameter, defaultNakedObject, title, flags);

                    optionals.Add(new OptionalProperty(JsonPropertyNames.Default, defaultValue));
                }
            }

            if (optionals.Count == 0)
            {
                return(new ParameterRepresentation(req, nakedObject, parameter, flags));
            }
            return(CreateWithOptionals <ParameterRepresentation>(new object[] { req, nakedObject, parameter, flags }, optionals));
        }
コード例 #24
0
 public static string Mask(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <string>(ScalarProperty.Mask));
 }
コード例 #25
0
 protected ParameterRepresentation(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter, RestControlFlags flags) : base(flags)
 {
     SetName(parameter);
     SetExtensions(req, nakedObject, parameter, flags);
     SetLinks(req, nakedObject, parameter);
     SetHeader(nakedObject);
 }
コード例 #26
0
 public static IDictionary <string, object> ExtensionData(this INakedObjectActionParameterSurface nakedObjectActionParameterSurface)
 {
     return(nakedObjectActionParameterSurface.GetScalarProperty <IDictionary <string, object> >(ScalarProperty.ExtensionData));
 }
コード例 #27
0
 private void SetName(INakedObjectActionParameterSurface parameter)
 {
     Name = parameter.Id;
 }
コード例 #28
0
 private static LinkRepresentation CreateDefaultLink(HttpRequestMessage req, INakedObjectActionParameterSurface parameter, INakedObjectSurface defaultNakedObject, string title, RestControlFlags flags) {
     return LinkRepresentation.Create(new DefaultRelType(parameter, new UriMtHelper(req, defaultNakedObject)), flags, new OptionalProperty(JsonPropertyNames.Title, title));
 }
コード例 #29
0
        private LinkRepresentation CreatePromptLink(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter)
        {
            var opts = new List <OptionalProperty>();

            var parameterContext = new ParameterContextSurface {
                Action    = parameter.Action,
                Target    = nakedObject,
                Parameter = parameter
            };

            if (parameter.IsAutoCompleteEnabled)
            {
                var arguments  = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.XRoSearchTerm, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, null, typeof(object))))));
                var extensions = new OptionalProperty(JsonPropertyNames.Extensions, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.MinLength, parameter.AutoCompleteMinLength())));

                opts.Add(arguments);
                opts.Add(extensions);
            }
            else
            {
                Tuple <string, INakedObjectSpecificationSurface>[] parms = parameter.GetChoicesParameters();
                OptionalProperty[] args = parms.Select(tuple => RestUtils.CreateArgumentProperty(req, tuple, Flags)).ToArray();
                var arguments           = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(args));
                opts.Add(arguments);
            }

            return(LinkRepresentation.Create(new PromptRelType(new UriMtHelper(req, parameterContext)), Flags, opts.ToArray()));
        }
コード例 #30
0
        public static ParameterRepresentation Create(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter, RestControlFlags flags) {
            var optionals = new List<OptionalProperty>();
            
            if (parameter.IsChoicesEnabled && !parameter.GetChoicesParameters().Any()) {
                INakedObjectSurface[] choices = parameter.GetChoices(nakedObject, null);
                object[] choicesArray = choices.Select(c => RestUtils.GetChoiceValue(req, c, parameter, flags)).ToArray();
                optionals.Add(new OptionalProperty(JsonPropertyNames.Choices, choicesArray));
            }

            if (parameter.DefaultTypeIsExplicit(nakedObject)) {
                INakedObjectSurface defaultNakedObject = parameter.GetDefault(nakedObject);
                if (defaultNakedObject != null) {
                    string title = defaultNakedObject.TitleString();
                    object value = RestUtils.ObjectToPredefinedType(defaultNakedObject.Object);
                    var isValue = defaultNakedObject.Specification.IsParseable() || (defaultNakedObject.Specification.IsCollection() && defaultNakedObject.ElementSpecification.IsParseable());
                    object defaultValue = isValue ? value : CreateDefaultLinks(req, parameter, defaultNakedObject, title, flags);

                    optionals.Add(new OptionalProperty(JsonPropertyNames.Default, defaultValue));
                }
            }
                 
            if (optionals.Count == 0) {
                return new ParameterRepresentation(req, nakedObject, parameter, flags);
            }
            return CreateWithOptionals<ParameterRepresentation>(new object[] {req, nakedObject, parameter, flags}, optionals);
        }
コード例 #31
0
        private void SetLinks(HttpRequestMessage req, INakedObjectSurface nakedObject, INakedObjectActionParameterSurface parameter)
        {
            var tempLinks = new List <LinkRepresentation>();


            if (Flags.FormalDomainModel)
            {
                var parameterTypeContextSurface = new ParameterTypeContextSurface {
                    Action = parameter.Action,
                    OwningSpecification = nakedObject.Specification,
                    Parameter           = parameter
                };
                LinkRepresentation describedBy = LinkRepresentation.Create(new ParamTypeRelType(RelValues.DescribedBy, new UriMtHelper(req, parameterTypeContextSurface)), Flags);
                tempLinks.Add(describedBy);
            }

            if (parameter.IsAutoCompleteEnabled || parameter.GetChoicesParameters().Any())
            {
                tempLinks.Add(CreatePromptLink(req, nakedObject, parameter));
            }

            Links = tempLinks.ToArray();
        }
コード例 #32
0
 private void SetName(INakedObjectActionParameterSurface parameter) {
     Name = parameter.Id;
 }
コード例 #33
0
 public static object GetChoiceValue(HttpRequestMessage req, INakedObjectSurface item, INakedObjectActionParameterSurface parameter, RestControlFlags flags)
 {
     return(GetChoiceValue(item, new ChoiceRelType(parameter, new UriMtHelper(req, item)), flags));
 }
コード例 #34
0
 public DefaultRelType(INakedObjectActionParameterSurface parameter, UriMtHelper helper)
     : this(helper) {
     this.parameter = parameter;
 }
コード例 #35
0
 public DefaultRelType(INakedObjectActionParameterSurface parameter, UriMtHelper helper)
     : this(helper) {
     this.parameter = parameter;
 }
コード例 #36
0
 private ParameterRepresentation GetParameter(INakedObjectActionParameterSurface parameter) {
     INakedObjectSurface nakedObject = actionContext.Target;
     return ParameterRepresentation.Create(req, nakedObject, parameter, Flags);
 }
コード例 #37
0
        private ParameterRepresentation GetParameter(INakedObjectActionParameterSurface parameter)
        {
            INakedObjectSurface nakedObject = actionContext.Target;

            return(ParameterRepresentation.Create(req, nakedObject, parameter, Flags));
        }