コード例 #1
0
        /// <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);
                }
            }
        }