/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { // store default message (in case the error comes from a DC element) and set our new message dcModelMessageTemplate = this.MessageTemplate; this.MessageTemplate = currentMessageTemplate; // Validate cross model references base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(objectToValidate); if (referencedElement != null) { DataContractModel dcm = referencedElement.Store.ElementDirectory.FindElements <DataContractModel>()[0]; if (dcm.ImplementationTechnology == null || String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) || !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase)) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.dcModelMessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this)); } } } }
public void TestJsonDeserialization() { JsonSerial serializer = new JsonSerial(); DataContractModel model = serializer.DeserializeDataContract(); Assert.AreEqual(model.Name, serializer.Model.Name); }
public void TestInitialize() { serviceProvider = new MockMappingServiceProvider(); #region Data Contract dcStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(DataContractDslDomainModel)); dcDomainModel = dcStore.GetDomainModel <DataContractDslDomainModel>(); dcTransaction = dcStore.TransactionManager.BeginTransaction(); dcModel = (DataContractModel)dcDomainModel.CreateElement(new Partition(dcStore), typeof(DataContractModel), null); // Specify the Implementation Technology and PMT dcModel.ImplementationTechnology = new DataContractWcfExtensionProvider(); dcModel.ProjectMappingTable = projectMappingTableName; dc = dcStore.ElementFactory.CreateElement(DataContract.DomainClassId) as DataContract; primitiveDataElement = dcStore.ElementFactory.CreateElement(PrimitiveDataType.DomainClassId) as PrimitiveDataType; primitiveDataElement.Name = primitiveDataElementName; #endregion #region Service Contract scStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); scDomainModel = scStore.GetDomainModel <ServiceContractDslDomainModel>(); scTransaction = scStore.TransactionManager.BeginTransaction(); scModel = (ServiceContractModel)scDomainModel.CreateElement(new Partition(scStore), typeof(ServiceContractModel), null); scModel.ImplementationTechnology = new ServiceContractWCFExtensionProvider(); scModel.ProjectMappingTable = projectMappingTableName; sc = scStore.ElementFactory.CreateElement(ServiceContract.DomainClassId) as ServiceContract; #endregion #region Validator // Initialize validator's config attributes = new NameValueCollection(); attributes.Add("elementNameProperty", "Name"); #endregion #region Simulate Model //Create the moniker //mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT.GUID]@[PROJECT]\[MODELFILE] string requestMoniker = string.Format(@"mel://{0}\{1}\{2}@{3}\{4}", primitiveDataElement.GetType().Namespace, primitiveDataElement.GetType().Name, primitiveDataElement.Id.ToString(), dataContractModelProjectName, dataContractModelFileName); // Add a DC to the model dc.DataMembers.Add(primitiveDataElement); dcModel.Contracts.Add(dc); // Create a Fault that references the Data Contract fault = scStore.ElementFactory.CreateElement(DataContractFault.DomainClassId) as DataContractFault; fault.Name = faultName; fault.Type = new MockModelBusReference(primitiveDataElement); // Create an Operation operation = scStore.ElementFactory.CreateElement(Operation.DomainClassId) as Operation; operation.Name = operationContractName; operation.Faults.Add(fault); sc.Operations.Add(operation); #endregion }
private string GetItName(object element) { if (element == null) { return(string.Empty); } ModelElement mel = element as ModelElement; if (mel != null) { // Try with DC model first if (!string.IsNullOrWhiteSpace(dcModelMessageTemplate)) { DataContractModel dcModel = DomainModelHelper.GetElement <DataContractModel>(mel.Store); if (dcModel != null && dcModel.ImplementationTechnology != null) { return(dcModel.ImplementationTechnology.Name); } } if (!string.IsNullOrWhiteSpace(dcModelMessageTemplate)) { ServiceContractModel scModel = DomainModelHelper.GetElement <ServiceContractModel>(mel.Store); if (scModel != null && scModel.ImplementationTechnology != null) { return(scModel.ImplementationTechnology.Name); } } } return(string.Empty); }
private string GetDcImplementationTechnology(ModelBusReference reference) { using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(reference); DataContractModel dcm = DomainModelHelper.GetElement <DataContractModel>(referencedElement.Store); return((dcm == null || dcm.ImplementationTechnology == null) ? string.Empty : dcm.ImplementationTechnology.Name); } }
private DataContractModel CreateDataContractRoot() { DataContractModel dataContractModel = new DataContractModel(DataContractStore); dataContractModel.ProjectMappingTable = "WCF"; return(dataContractModel); }
public void TestWalkerFromMessageContractWithDataContractMessagePartsWithDataElements() { List <ModelElement> elementList = new List <ModelElement>(); using (Transaction t = DataContractStore.TransactionManager.BeginTransaction()) { DataContractModel dcRoot = CreateDataContractRoot(); DataContract dataContract1 = CreateDataContract("FooDc"); PrimitiveDataType element1 = CreatePrimitiveDataElement("FooElement1"); PrimitiveDataType element2 = CreatePrimitiveDataElement("FooElement2"); DataContract dataContract2 = CreateDataContract("FooDc1"); PrimitiveDataType element3 = CreatePrimitiveDataElement("FooElement1"); PrimitiveDataType element4 = CreatePrimitiveDataElement("FooElement2"); dataContract1.DataMembers.Add(element1); dataContract1.DataMembers.Add(element2); dataContract2.DataMembers.Add(element3); dataContract2.DataMembers.Add(element4); dcRoot.Contracts.Add(dataContract1); dcRoot.Contracts.Add(dataContract2); using (Transaction t1 = ServiceContractStore.TransactionManager.BeginTransaction()) { ServiceContractModel scRoot = CreateServiceContractRoot(); Message request = CreateMessageContract("FooMCReq", "FooMCReq"); DataContractMessagePart part1 = CreateDataContractMessagePart( "FooPart1", GetMockMoniker(dataContract1)); DataContractMessagePart part2 = CreateDataContractMessagePart( "FooPart2", GetMockMoniker(dataContract2)); request.MessageParts.Add(part1); request.MessageParts.Add(part2); scRoot.Messages.Add(request); FullDepthElementWalker elementWalker = new FullDepthElementWalker( new ModelElementVisitor(elementList), new EmbeddingReferenceVisitorFilter(), false); elementWalker.DoTraverse(request); Assert.AreEqual(3, elementList.Count); // 9 elemsn with Resolver t1.Rollback(); } t.Rollback(); } }
public void Should_recognise_data_member_attributes() { // Given var model = new DataContractModel { AnInt = 45 }; var stream = new MemoryStream(); // When this.serializer.Serialize("application/json", model, stream); // Then Assert.Equal("{\"anInt\":45}", Encoding.ASCII.GetString(stream.ToArray())); }
public void TestInitialize() { serviceProvider = new MockMappingServiceProvider(); attributes = new NameValueCollection(); attributes.Add("elementNameProperty", "Name"); #region Data Contract dcStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(DataContractDslDomainModel)); dcDomainModel = dcStore.GetDomainModel <DataContractDslDomainModel>(); dcTransaction = dcStore.TransactionManager.BeginTransaction(); dcModel = (DataContractModel)dcDomainModel.CreateElement(new Partition(dcStore), typeof(DataContractModel), null); dcModel.ProjectMappingTable = projectMappingTableName; dc = dcStore.ElementFactory.CreateElement(DataContract.DomainClassId) as DataContract; primitiveDataElement = dcStore.ElementFactory.CreateElement(PrimitiveDataType.DomainClassId) as PrimitiveDataType; primitiveDataElement.Name = primitiveDataElementName; dc.DataMembers.Add(primitiveDataElement); dcModel.Contracts.Add(dc); #endregion #region Service Contract scStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); scDomainModel = scStore.GetDomainModel <ServiceContractDslDomainModel>(); scTransaction = scStore.TransactionManager.BeginTransaction(); scModel = (ServiceContractModel)scDomainModel.CreateElement(new Partition(scStore), typeof(ServiceContractModel), null); scModel.ProjectMappingTable = projectMappingTableName; msg = scStore.ElementFactory.CreateElement(Message.DomainClassId) as Message; msg.Name = messageName; //Create the moniker //mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT.GUID]@[PROJECT]\[MODELFILE] string requestMoniker = string.Format(@"mel://{0}\{1}\{2}@{3}\{4}", primitiveDataElement.GetType().Namespace, primitiveDataElement.GetType().Name, primitiveDataElement.Id.ToString(), dataContractModelProjectName, dataContractModelFileName); part = scStore.ElementFactory.CreateElement(DataContractMessagePart.DomainClassId) as DataContractMessagePart; part.Name = partName; part.Type = new MockModelBusReference(primitiveDataElement); msg.MessageParts.Add(part); scModel.Messages.Add(msg); #endregion }
public void TestInitialize() { serviceProvider = new MockMappingServiceProvider(); attributes = new NameValueCollection(); attributes.Add("elementNameProperty", "Name"); #region Data Contract dcStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(DataContractDslDomainModel)); dcDomainModel = dcStore.GetDomainModel <DataContractDslDomainModel>(); dcTransaction = dcStore.TransactionManager.BeginTransaction(); dcModel = (DataContractModel)dcDomainModel.CreateElement(new Partition(dcStore), typeof(DataContractModel), null); dcModel.ProjectMappingTable = projectMappingTableName; fc = dcStore.ElementFactory.CreateElement(FaultContract.DomainClassId) as FaultContract; fc.Name = faultContractName; dcModel.Contracts.Add(fc); #endregion #region Service Contract scStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); scDomainModel = scStore.GetDomainModel <ServiceContractDslDomainModel>(); scTransaction = scStore.TransactionManager.BeginTransaction(); scModel = (ServiceContractModel)scDomainModel.CreateElement(new Partition(scStore), typeof(ServiceContractModel), null); scModel.ProjectMappingTable = projectMappingTableName; operation = scStore.ElementFactory.CreateElement(Operation.DomainClassId) as Operation; operation.Name = operationName; //Create the moniker //mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT.GUID]@[PROJECT]\[MODELFILE] string requestMoniker = string.Format(@"mel://{0}\{1}\{2}@{3}\{4}", fc.GetType().Namespace, fc.GetType().Name, fc.Id.ToString(), dataContractModelProjectName, dataContractModelFileName); dcfault = scStore.ElementFactory.CreateElement(DataContractFault.DomainClassId) as DataContractFault; dcfault.Name = dcfaultName; dcfault.Type = new MockModelBusReference(fc); operation.Faults.Add(dcfault); scModel.Operations.Add(operation); #endregion }
public void TestWalkerFromMessageContractWithDataContractCollectionMessagePart() { List <ModelElement> elementList = new List <ModelElement>(); using (Transaction t = DataContractStore.TransactionManager.BeginTransaction()) { DataContractModel dcRoot = CreateDataContractRoot(); DataContract dataContract = CreateDataContract("FooDc"); DataContractCollection dataContractCollection = CreateDataContractCollection("FooDcc"); dataContractCollection.DataContract = dataContract; dcRoot.Contracts.Add(dataContract); dcRoot.Contracts.Add(dataContractCollection); using (Transaction t1 = ServiceContractStore.TransactionManager.BeginTransaction()) { ServiceContractModel scRoot = CreateServiceContractRoot(); Message request = CreateMessageContract("FooMCReq", "FooMCReq"); DataContractMessagePart part1 = CreateDataContractMessagePart( "FooPart1", GetMockMoniker(dataContract)); request.MessageParts.Add(part1); scRoot.Messages.Add(request); FullDepthElementWalker elementWalker = new FullDepthElementWalker( new ModelElementVisitor(elementList), new EmbeddingReferenceVisitorFilter(), false); elementWalker.DoTraverse(request); Assert.AreEqual(2, elementList.Count); // 4 elemsn with Resolver t1.Rollback(); } t.Rollback(); } }