예제 #1
0
        public void getFacetByNameTest1()
        {
            IComponentServant  target    = new IComponentServant(context);
            string             facetName = typeof(IReceptacles).Name;
            Facet              facet     = context.GetFacetByName(facetName);
            MarshalByRefObject expected  = facet.Reference;
            MarshalByRefObject actual    = target.getFacetByName(facetName);

            Assert.AreEqual(expected, actual);
        }
예제 #2
0
        public void getFacetsByNameTest()
        {
            IMetaInterfaceServant target = new IMetaInterfaceServant(context);

            string[] names = new string[3];
            names[0] = typeof(IComponent).Name;
            names[1] = typeof(IReceptacles).Name;
            names[2] = typeof(IMetaInterface).Name;
            FacetDescription[] actual = target.getFacetsByName(names);
            Assert.AreEqual(names.Length, actual.Length);
            foreach (var facet in actual)
            {
                Facet expected = context.GetFacetByName(facet.name);
                Assert.IsNotNull(expected);
            }
        }
예제 #3
0
        /// <summary>
        /// Obtém a faceta do componente através do nome da faceta.
        /// </summary>
        /// <param name="facetName">Nome da faceta que se deseja obter.</param>
        /// <returns>Referência para a faceta do componente.</returns>
        public MarshalByRefObject getFacetByName(string facetName)
        {
            Facet facet = context.GetFacetByName(facetName);

            if (facet == null)
            {
                return(null);
            }
            return(facet.Reference);
        }
        /// <summary>
        /// Adiciona as facetas do arquivo de descrição ao componente.
        /// </summary>
        /// <param name="context">O componente</param>
        /// <exception cref="SCSException">Caso ocorra um erro na criação das facetas.</exception>
        private void AddFacets(ComponentContext context)
        {
            XmlNodeList facetsNodeList =
                xmlComponent.GetElementsByTagName(FACET_ELEMENT);

            foreach (XmlNode facetNode in facetsNodeList)
            {
                String  name            = facetNode[FACET_NAME].InnerText;
                String  interfaceName   = facetNode[FACET_REP_ID].InnerText;
                XmlNode servantNode     = facetNode[FACET_SERVANT];
                String  servantName     = servantNode.InnerText;
                String  servantAssembly = servantNode.Attributes[FACET_SERVANT_ASSEMBLY_ATTRIBUTE].InnerText;
                String  type            = String.Format("{0}, {1}", servantName, servantAssembly);

                MarshalByRefObject servant = InstantiateServant(type, context);
                if (!IiopNetUtil.CheckInterface(servant, interfaceName))
                {
                    string errorMsg = String.Format(
                        "A faceta '{0}' não suporta a interface '{1}'", name, interfaceName);
                    throw new SCSException(errorMsg);
                }
                if (context.GetFacetByName(name) != null)
                {
                    logger.Info(String.Format("A faceta {0} foi atualizada.", name));
                    try {
                        context.UpdateFacet(name, servant);
                    }
                    catch (ArgumentException e) {
                        throw new SCSException(e.Message);
                    }
                }
                else
                {
                    logger.Debug(String.Format("Adicionando a faceta {0}", name));
                    context.AddFacet(name, interfaceName, servant);
                }
            }
        }