public static DomAttribute CreateFromClrAttribute(IServiceModel serviceModel, IAttributeInfo attributeInfo, object clrAttribute) { Contract.Requires(serviceModel != null); Contract.Requires(attributeInfo != null); var domAttribute = CreateFromClrAttribute(attributeInfo, clrAttribute); var isComplexType = attributeInfo.IsComplexType; if (!isComplexType) { return(domAttribute); } var isCollection = attributeInfo.IsCollection; if (isCollection) { AddCollectionOfComplexTypeAttributes(serviceModel, attributeInfo, domAttribute); } else { AddComplexTypeAttributes(serviceModel, attributeInfo, domAttribute); } return(domAttribute); }
// PROTECTED CONSTRUCTORS /////////////////////////////////////////// #region Constructors protected ResourceIdentifierBuilder(IServiceModel serviceModel, IContainerNode <DomNodeType> domContainerNode, Type clrResourceType, object clrResource) { Contract.Requires(serviceModel != null); Contract.Requires(domContainerNode != null); this.DomContainerNode = domContainerNode; if (clrResourceType == null) { return; } this.BuildingResourceIdentifier = true; var resourceType = serviceModel.GetResourceType(clrResourceType); this.ResourceType = resourceType; if (clrResource == null) { return; } this.CreateAndAddDomReadWriteResourceIdentifierIfNeeded(); this.DomReadWriteResourceIdentifier.SetDomIdFromClrResource(this.ResourceType, clrResource); }
public static bool TryGetHomeResourceType(this IServiceModel serviceModel, out IResourceType homeResourceType) { Contract.Requires(serviceModel != null); homeResourceType = serviceModel.HomeResourceType; return(homeResourceType != null); }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal RelationshipBuilder(TParentBuilder parentBuilder, IServiceModel serviceModel, IContainerNode <DomNodeType> domContainerNode, string rel) : base(serviceModel, domContainerNode, rel) { Contract.Requires(parentBuilder != null); this.ParentBuilder = parentBuilder; }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal RelationshipsCollectionBuilder(TParentBuilder parentBuilder, IServiceModel serviceModel, IReadOnlyCollection <IContainerNode <DomNodeType> > domContainerNodeCollection, IReadOnlyList <TResource> clrResourceCollection) { Contract.Requires(parentBuilder != null); Contract.Requires(serviceModel != null); Contract.Requires(domContainerNodeCollection != null); var domReadWriteRelationshipsCollectionCount = domContainerNodeCollection.Count; var clrResourceCollectionCount = clrResourceCollection.Count; if (clrResourceCollectionCount != domReadWriteRelationshipsCollectionCount) { var detail = ServerErrorStrings .InternalErrorExceptionDetailCollectionCountMismatch .FormatWith("DOM read-write relationships collection", domReadWriteRelationshipsCollectionCount, "CLR resource collection", clrResourceCollectionCount); throw new InternalErrorException(detail); } this.ParentBuilder = parentBuilder; this.ServiceModel = serviceModel; var resourceType = serviceModel.GetResourceType <TResource>(); this.ResourceType = resourceType; var domReadWriteRelationshipsCollection = domContainerNodeCollection .Select(x => x.GetOrAddNode(DomNodeType.Relationships, () => DomReadWriteRelationships.Create())) .ToList(); this.DomReadWriteRelationshipsCollection = domReadWriteRelationshipsCollection; this.ClrResourceCollection = clrResourceCollection; }
private void AddResourceLinkage(IServiceModel serviceModel, Type fromClrResourceType, object fromClrResource, string fromApiRel, Type toClrResourceType, IEnumerable <object> toClrResourceCollection) { Contract.Requires(serviceModel != null); Contract.Requires(String.IsNullOrWhiteSpace(fromApiRel)); if (fromClrResourceType == null || fromClrResource == null) { return; } // Create ResourceLinkageKey from ToManyIncludedResources. var fromResourceType = serviceModel.GetResourceType(fromClrResourceType); var fromApiResourceIdentifier = fromResourceType.GetApiResourceIdentifier(fromClrResource); var apiResourceLinkageKey = new ApiResourceLinkageKey(fromApiResourceIdentifier, fromApiRel); // Create ResourceLinkage from ToManyIncludedResources. var toApiResourceIdentifierCollection = Enumerable.Empty <ResourceIdentifier>() .ToList(); if (toClrResourceType != null && toClrResourceCollection != null) { var toResourceType = serviceModel.GetResourceType(toClrResourceType); toApiResourceIdentifierCollection = toClrResourceCollection.Select(toResourceType.GetApiResourceIdentifier) .ToList(); } var apiResourceLinkage = new ApiResourceLinkage(toApiResourceIdentifierCollection); // Add ResourceLinkage to this DocumentBuilderContext this.AddResourceLinkage(apiResourceLinkageKey, apiResourceLinkage); }
// PRIVATE METHODS ////////////////////////////////////////////////// #region Methods private void AddResourceLinkage(IServiceModel serviceModel, Type fromClrResourceType, object fromClrResource, string fromApiRel, Type toClrResourceType, object toClrResource) { Contract.Requires(serviceModel != null); Contract.Requires(String.IsNullOrWhiteSpace(fromApiRel)); if (fromClrResourceType == null || fromClrResource == null) { return; } // Create ResourceLinkageKey from ToOneIncludedResource. var fromResourceType = serviceModel.GetResourceType(fromClrResourceType); var fromApiResourceIdentifier = fromResourceType.GetApiResourceIdentifier(fromClrResource); var apiResourceLinkageKey = new ApiResourceLinkageKey(fromApiResourceIdentifier, fromApiRel); // Create ResourceLinkage from ToOneIncludedResource var toApiResourceIdentifier = default(ResourceIdentifier); if (toClrResourceType != null && toClrResource != null) { var toResourceType = serviceModel.GetResourceType(toClrResourceType); toApiResourceIdentifier = toResourceType.GetApiResourceIdentifier(toClrResource); } var apiResourceLinkage = new ApiResourceLinkage(toApiResourceIdentifier); // Add ResourceLinkage to this DocumentBuilderContext this.AddResourceLinkage(apiResourceLinkageKey, apiResourceLinkage); }
// PRIVATE METHODS ////////////////////////////////////////////////// #region Factory Methods private static IDocumentContextOptions CreateDocumentContextOptions(IServiceModel apiServiceModel, IHypermediaAssemblerRegistry apiHypermediaAssemblerRegistry, IOptions <ApiHypermediaOptions> apiHypermediaOptionsAccessor) { Contract.Requires(apiServiceModel != null); Contract.Requires(apiHypermediaOptionsAccessor != null); var options = new DocumentContextOptions <DocumentContext>(); var optionsBuilder = new DocumentContextOptionsBuilder(options); optionsBuilder.UseServiceModel(apiServiceModel); if (apiHypermediaAssemblerRegistry != null) { optionsBuilder.UseHypermediaAssemblerRegistry(apiHypermediaAssemblerRegistry); } var apiHypermediaOptions = apiHypermediaOptionsAccessor.Value; var scheme = apiHypermediaOptions.Scheme; var host = apiHypermediaOptions.Host; var port = apiHypermediaOptions.Port; var urlBuilderConfiguration = new UrlBuilderConfiguration(scheme, host, port); optionsBuilder.UseUrlBuilderConfiguration(urlBuilderConfiguration); return(options); }
public HomeController(ISingletonService singletonService, ITransientService transientService, IScopedService scopedService, IServiceModel servicesModel) { _singletonService = singletonService; _transientService = transientService; _scopedService = scopedService; _serviceModel = servicesModel; }
// PUBLIC CONSTRUCTORS ////////////////////////////////////////////// #region Constructors public HypermediaContext(IServiceModel serviceModel, IUrlBuilderConfiguration urlBuilderConfiguration) { Contract.Requires(serviceModel != null); Contract.Requires(urlBuilderConfiguration != null); this.ServiceModel = serviceModel; this.UrlBuilderConfiguration = urlBuilderConfiguration; }
// PUBLIC METHODS /////////////////////////////////////////////////// #region IInfoObject Implementation public virtual void Initialize(IServiceModel serviceModel, IResourceType resourceType) { Contract.Requires(serviceModel != null); Contract.Requires(resourceType != null); this.ServiceModel = serviceModel; this.ResourceType = resourceType; }
internal PrimaryResourceIdentifierBuilder(IDocumentWriter parentBuilder, IServiceModel serviceModel, DomDocument domDocument, TResource clrResource) : base(serviceModel, domDocument.AddData(), clrResource) { Contract.Requires(parentBuilder != null); this.Builder = this; this.ParentBuilder = parentBuilder; }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal ResourcePathContextBuilder(TParentBuilder parentBuilder, IServiceModel serviceModel) { Contract.Requires(parentBuilder != null); Contract.Requires(serviceModel != null); this.ParentBuilder = parentBuilder; this.ServiceModel = serviceModel; }
// PROTECTED CONSTRUCTORS /////////////////////////////////////////// #region Constructors protected ResourceIdentifierCollectionBuilder(IServiceModel serviceModel, IContainerNode <DomNodeType> domContainerNode) { Contract.Requires(serviceModel != null); Contract.Requires(domContainerNode != null); this.ServiceModel = serviceModel; this.DomContainerNode = domContainerNode; }
// PUBLIC METHODS /////////////////////////////////////////////////// #region IServiceModel Extensions Methods public static IContractResolver CreateComplexTypesContractResolver(this IServiceModel serviceModel) { Contract.Requires(serviceModel != null); return(serviceModel.ComplexTypes.Any() ? new ComplexTypesContractResolver(serviceModel) : null); }
public static DomDocument Create(IServiceModel serviceModel, params Node <DomNodeType>[] domNodes) { Contract.Requires(serviceModel != null); var domDocument = NodesContainer <DomNodeType> .CreateRoot(() => new DomDocument(serviceModel), domNodes); return(domDocument); }
public override IEnumerable <string> DeclareUsings(IServiceModel service) { return(new[] { "using NLog;", "using System.Diagnostics;" }); }
public override IEnumerable <string> DeclareUsings(IServiceModel service) { return(new[] { "using Intent.Framework;", "using Intent.Framework.Core.Context;", }); }
// PUBLIC CONSTRUCTORS ////////////////////////////////////////////// #region Constructors public DocumentReader(Document apiDocument, IServiceModel serviceModel) { Contract.Requires(serviceModel != null); Contract.Requires(apiDocument != null); var domDocument = DomDocument.Parse(apiDocument, serviceModel); this.DomDocument = domDocument; }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal DocumentBuilder(DomDocument domDocument, IServiceModel serviceModel, IDocumentWriter documentWriter) { Contract.Requires(documentWriter != null); Contract.Requires(serviceModel != null); Contract.Requires(domDocument != null); this.DocumentWriter = documentWriter; this.ServiceModel = serviceModel; this.DomDocument = domDocument; }
public static DomAttribute CreateFromClrResource(IServiceModel serviceModel, IAttributeInfo attributeInfo, object clrResource) { Contract.Requires(serviceModel != null); Contract.Requires(attributeInfo != null); Contract.Requires(clrResource != null); var clrAttribute = attributeInfo.GetClrProperty(clrResource); return(CreateFromClrAttribute(serviceModel, attributeInfo, clrAttribute)); }
public ViewModel(IServiceModel locationsServiceModel) { Location = new LocationModel(); _locationServiceModel = locationsServiceModel; GetAllDataCommand = new RelayCommand(ReloadLocations); Locations = new ObservableCollection <LocationModel>(_locationServiceModel.GetAll()); AddLocationCommand = new RelayCommand(AddLocation); DeleteLocationCommand = new RelayCommand(RemoveLocation); UpdateLocationCommand = new RelayCommand(UpdateLocation); }
// PUBLIC CONSTRUCTORS ////////////////////////////////////////////// #region Constructors public DocumentWriter(IServiceModel serviceModel) { Contract.Requires(serviceModel != null); this.ServiceModel = serviceModel; var domDocument = DomDocument.Create(serviceModel); this.DomDocument = domDocument; }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal ResourcePathContextBuilder(TParentBuilder parentBuilder, IServiceModel serviceModel, Type clrResourceType) { Contract.Requires(parentBuilder != null); Contract.Requires(serviceModel != null); Contract.Requires(clrResourceType != null); this.ParentBuilder = parentBuilder; this.ServiceModel = serviceModel; this.ClrResourceType = clrResourceType; }
public void TestDomDocumentDomResources(string name, IServiceModel serviceModel, Document apiDocument) { // Arrange var domDocument = DomDocument.Parse(apiDocument, serviceModel); var expectedApiResources = new List <Resource>(); if (!apiDocument.IsDataNullOrEmpty()) { if (apiDocument.IsResourceDocument()) { var apiResource = apiDocument.GetResource(); expectedApiResources.Add(apiResource); } else if (apiDocument.IsResourceCollectionDocument()) { var apiResourceCollection = apiDocument.GetResourceCollection(); expectedApiResources.AddRange(apiResourceCollection); } } if (!apiDocument.IsIncludedNullOrEmpty()) { var apiIncludedResources = apiDocument.GetIncludedResources(); expectedApiResources.AddRange(apiIncludedResources); } // Act var actualDomResources = domDocument.DomResources() .SafeToList(); var actualApiResources = actualDomResources.Select(x => x.ApiResource) .SafeToList(); this.Output.WriteLine("Test Name: {0}", name); this.Output.WriteLine(String.Empty); this.OutputDomTree(domDocument); this.OutputEmptyLine(); this.Output.WriteLine("Expected Resources"); foreach (var expectedApiResource in expectedApiResources) { this.Output.WriteLine(expectedApiResource.ToString()); } this.OutputEmptyLine(); this.Output.WriteLine("Actual Resources"); foreach (var actualApiResource in actualApiResources) { this.Output.WriteLine(actualApiResource.ToString()); } // Assert ResourceAssert.Equal(expectedApiResources, actualApiResources); }
// PUBLIC CONSTRUCTORS ////////////////////////////////////////////// #region Constructors public HypermediaContext(IServiceModel serviceModel, IUrlBuilderConfiguration urlBuilderConfiguration, IDictionary <Type, IUrlBuilderConfiguration> urlBuilderConfigurationPerResourceType) { Contract.Requires(serviceModel != null); Contract.Requires(urlBuilderConfiguration != null); this.ServiceModel = serviceModel; this.UrlBuilderConfiguration = urlBuilderConfiguration; this.UrlBuilderConfigurationPerResourceType = urlBuilderConfigurationPerResourceType; }
public override string GetDecoratedImplementation(IServiceModel serviceModel, IOperationModel operationModel) { var currentDomain = GetDomainForService(serviceModel); if (currentDomain == null) { return(string.Empty); } return(MethodImplementationStrategy.ImplementOnMatch(_metaDataManager, _application, currentDomain, operationModel)); }
public override string AfterCallToAppLayer(IServiceModel service, IOperationModel operation) { if (operation.Stereotypes.Any(x => x.Name == "ReadOnly")) { return(""); } return(operation.IsAsync() ? $@" await _dbContext.SaveChangesAsync();" : $@" _dbContext.SaveChanges();"); }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal RelationshipCollectionBuilder(TParentBuilder parentBuilder, IServiceModel serviceModel, IReadOnlyList <DomReadWriteRelationships> domReadWriteRelationshipsCollection, IReadOnlyList <TResource> clrResourceCollection, string rel, Func <TResource, bool> predicate) { Contract.Requires(parentBuilder != null); Contract.Requires(serviceModel != null); Contract.Requires(domReadWriteRelationshipsCollection != null); Contract.Requires(clrResourceCollection != null); Contract.Requires(String.IsNullOrWhiteSpace(rel) == false); var domReadWriteRelationshipsCollectionCount = domReadWriteRelationshipsCollection.Count; var clrResourceCollectionCount = clrResourceCollection.Count; if (clrResourceCollectionCount != domReadWriteRelationshipsCollectionCount) { var detail = ServerErrorStrings .InternalErrorExceptionDetailCollectionCountMismatch .FormatWith("DOM read-write relationships collection", domReadWriteRelationshipsCollectionCount, "CLR resource collection", clrResourceCollectionCount); throw new InternalErrorException(detail); } this.ParentBuilder = parentBuilder; this.ServiceModel = serviceModel; var resourceType = serviceModel.GetResourceType <TResource>(); this.ResourceType = resourceType; this.Rel = rel; var domReadWriteRelationshipCollection = new List <DomReadWriteRelationship>(); var clrResourceCollectionFiltered = new List <TResource>(); var count = clrResourceCollectionCount; for (var i = 0; i < count; ++i) { var clrResource = clrResourceCollection[i]; var canAddRelationship = predicate == null || predicate(clrResource); if (canAddRelationship == false) { continue; } var domReadWriteRelationships = domReadWriteRelationshipsCollection[i]; var domReadWriteRelationship = domReadWriteRelationships.AddDomReadWriteRelationship(rel); domReadWriteRelationshipCollection.Add(domReadWriteRelationship); clrResourceCollectionFiltered.Add(clrResource); } this.DomReadWriteRelationshipCollection = domReadWriteRelationshipCollection; this.ClrResourceCollection = clrResourceCollectionFiltered; }
protected ResourceIdentifierBuilder(IServiceModel serviceModel, IContainerNode <DomNodeType> domContainerNode, TResource clrResource) : this(serviceModel, domContainerNode) { if (clrResource == null) { return; } this.CreateAndAddDomReadWriteResourceIdentifierIfNeeded(); this.DomReadWriteResourceIdentifier.SetDomIdFromClrResource(this.ResourceType, clrResource); }