예제 #1
0
        private Parameter createParameter(XNamespace xnamespace, CoreNamespace ownerNamespace, CoreBehavioralFeature owner, XElement xparameter)
        {
            Parameter parameter = new ParameterImpl();
            var       name      = xparameter.Attribute("name");

            parameter.setName(name != null ? name.Value : "");
            parameter.setBehavioralFeature(owner);
            updateOperationParameters(owner, parameter);
            parameter.setNamespace(ownerNamespace);
            updateNamespaceElemOwnedElements(ownerNamespace, parameter);

            var id = xparameter.Attribute("Id").Value;

            lookup.Add(id, parameter);

            var xptype = xparameter.Descendants(xnamespace + "referencedTypeMoniker").FirstOrDefault();

            if (xptype != null)
            {
                var xtyperefid = xptype.Attribute("Id").Value;
                idToType.Add(id, xtyperefid);
            }

            string skind = xparameter.Attribute("direction").Value.ToLower();

            parameter.setKind(getParameterDirectionKind(skind));

            return(parameter);
        }
예제 #2
0
        private Parameter createParameter(XNamespace xnamespace, CoreNamespace ownerNamespace, CoreBehavioralFeature owner, XElement xparameter)
        {
            Parameter parameter = new ParameterImpl();

            parameter.setName(xparameter.Attribute("name").Value);
            parameter.setBehavioralFeature(owner);
            updateOperationParameters(owner, parameter);
            parameter.setNamespace(ownerNamespace);
            updateNamespaceElemOwnedElements(ownerNamespace, parameter);

            var id = xparameter.Attribute("xmi.id").Value;

            lookup.Add(id, parameter);

            // mode 1
            var xptype = xparameter.Element(xnamespace + "Parameter.type");

            if (xptype != null)
            {
                var xpclass = xptype.Element(xnamespace + "Class");
                if (xpclass != null)
                {
                    var xtyperefid = xpclass.Attribute("xmi.idref").Value;
                    idToType.Add(id, xtyperefid);
                }
            }
            else // mode 2
            {
                var xtype = xparameter.Attribute("type");
                if (xtype != null)
                {
                    string xtypeidref = xtype.Value;
                    idToType.Add(id, xtypeidref);
                }
            }

            string           skind = xparameter.Attribute("kind").Value;
            CoreModelElement kind;

            lookup.TryGetValue(skind, out kind);
            parameter.setKind(getParameterDirectionKind(skind));

            return(parameter);
        }