コード例 #1
0
        /// <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));
                    }
                }
            }
        }
コード例 #2
0
        public void TestJsonDeserialization()
        {
            JsonSerial        serializer = new JsonSerial();
            DataContractModel model      = serializer.DeserializeDataContract();

            Assert.AreEqual(model.Name, serializer.Model.Name);
        }
コード例 #3
0
        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
        }
コード例 #4
0
        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);
     }
 }
コード例 #6
0
        private DataContractModel CreateDataContractRoot()
        {
            DataContractModel dataContractModel =
                new DataContractModel(DataContractStore);

            dataContractModel.ProjectMappingTable = "WCF";

            return(dataContractModel);
        }
コード例 #7
0
        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();
            }
        }
コード例 #8
0
        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
        }
コード例 #10
0
        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
        }
コード例 #11
0
        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();
            }
        }