コード例 #1
0
        private IObjectDefinition RegisterMongoObjectDefinition(XmlElement element)
        {
            var mongoBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(typeof(MongoFactoryObject));

            string host = element.GetAttribute(ObjectNames.MongoDatabaseFactoryHost);

            if (!StringUtils.HasText(host))
            {
                host = ObjectNames.MongoDatabaseFactoryDefaultHostname;
            }

            string port = element.GetAttribute(ObjectNames.MongoDatabaseFactoryPort);

            if (!StringUtils.HasText(port))
            {
                port = ObjectNames.MongoDatabaseFactoryDefaultPort;
            }

            string url = string.Format("mongodb://{0}:{1}", host, port);

            mongoBuilder.AddPropertyValue(MongoFactoryObject.UrlProperty, url);
            mongoBuilder.RawObjectDefinition.Source = element;

            return(mongoBuilder.ObjectDefinition);
        }
コード例 #2
0
        /// <summary>
        /// Creates object definition using <c>objectBuildAction</c>.
        /// </summary>
        /// <typeparam name="TObject">Type of defined object.</typeparam>
        /// <param name="objectBuildAction">Action used to configure object.</param>
        /// <returns>Definition.</returns>
        public static IDefinition <TObject> Object <TObject>(Action <IInstantiationBuildStage <TObject> > objectBuildAction)
        {
            var builder = new ObjectDefinitionBuilder <TObject>(null);

            objectBuildAction(builder);
            return(new Definition <TObject>(builder.Definition));
        }
コード例 #3
0
        public string Parse(XmlElement element, ParserContext parserContext)
        {
            ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.CHANNEL_INTERCEPTOR_PACKAGE + ".WireTap");
            string targetRef = element.GetAttribute("channel");

            if (!StringUtils.HasText(targetRef))
            {
                parserContext.ReaderContext.ReportException(element, "wire-tap", "The 'channel' attribute is required.");
            }
            builder.AddConstructorArgReference(targetRef);
            string selectorRef = element.GetAttribute("selector");

            if (StringUtils.HasText(selectorRef))
            {
                builder.AddConstructorArgReference(selectorRef);
            }
            // TODO check timeout
            string timeout = element.GetAttribute("timeout");

            if (StringUtils.HasText(timeout))
            {
                builder.AddPropertyValue("timeout", TimeSpan.Parse(timeout));
            }
            return(parserContext.ReaderContext.RegisterWithGeneratedName(builder.ObjectDefinition));
        }
コード例 #4
0
        protected override void DoParse(XmlElement element, ParserContext parserContext, ObjectDefinitionBuilder builder)
        {
            builder.AddPropertyReference(TxNamespaceUtils.TRANSACTION_MANAGER_PROPERTY,
                                         GetAttributeValue(element, TxNamespaceUtils.TRANSACTION_MANAGER_ATTRIBUTE));
            XmlNodeList txAttributes = element.SelectNodes("*[local-name()='attributes' and namespace-uri()='" + element.NamespaceURI + "']");

            if (txAttributes.Count > 1)
            {
                parserContext.ReaderContext.ReportException(element, "tx advice", "Element <attributes> is allowed at most once inside element <advice>");
            }
            else if (txAttributes.Count == 1)
            {
                //using xml defined source
                XmlElement attributeSourceElement = txAttributes[0] as XmlElement;
                AbstractObjectDefinition attributeSourceDefinition =
                    ParseAttributeSource(attributeSourceElement, parserContext);
                builder.AddPropertyValue(TxNamespaceUtils.TRANSACTION_ATTRIBUTE_SOURCE, attributeSourceDefinition);
            }
            else
            {
                //Assume attibutes source
                ObjectDefinitionBuilder txAttributeSourceBuilder =
                    parserContext.ParserHelper.CreateRootObjectDefinitionBuilder(typeof(AttributesTransactionAttributeSource));

                builder.AddPropertyValue(TxNamespaceUtils.TRANSACTION_ATTRIBUTE_SOURCE,
                                         txAttributeSourceBuilder.ObjectDefinition);
            }
        }
コード例 #5
0
        internal static bool SetCollectionPropertyIfElementDefined(XmlElement element, ParserContext parserContext,
                                                                   ObjectDefinitionBuilder builder, string propertyName, string parentPropertyName, string parentId)
        {
            var propertyElement = element.GetSingleChildElement(propertyName.ToCamelCase());

            if (propertyElement != null)
            {
                var managedList = new ManagedList();

                foreach (XmlNode node in propertyElement)
                {
                    var parser           = NamespaceParserRegistry.GetParser(node.NamespaceURI);
                    var objectDefinition = parser.ParseElement((XmlElement)node, parserContext);

                    if (!string.IsNullOrEmpty(parentPropertyName))
                    {
                        //if the child object has a parent Property specified then set it as well for bi-directional relationships to work seamlessly.
                        objectDefinition.PropertyValues.Add(parentPropertyName, new RuntimeObjectReference(parentId));
                    }

                    managedList.Add(objectDefinition);
                }
                builder.AddPropertyValue(propertyName, managedList);

                return(true);
            }

            return(false);
        }
コード例 #6
0
 public void Configure(ObjectDefinitionBuilder builder)
 {
     foreach (var key in properties.Keys)
     {
         builder.AddPropertyValue(key, properties[key]);
     }
 }
コード例 #7
0
        protected override void DoParse(XmlElement element, ObjectDefinitionBuilder builder)
        {
            base.DoParse(element, builder);
            ParseSimpleProperties(element, builder);

            XmlNodeList subElements = element.ChildNodes;
            ManagedList locators    = new ManagedList(subElements.Count);
            ManagedList servers     = new ManagedList(subElements.Count);

            for (int i = 0; i < subElements.Count; i++)
            {
                XmlNode subElement = subElements.Item(i);
                if (subElement != null && subElement.NodeType == XmlNodeType.Element)
                {
                    if ("locator".Equals(subElement.LocalName))
                    {
                        locators.Add(ParseLocator((XmlElement)subElement));
                    }
                    if ("server".Equals(subElement.LocalName))
                    {
                        servers.Add(ParseServer((XmlElement)subElement));
                    }
                }
            }

            if (locators.Count > 0)
            {
                builder.AddPropertyValue("Locators", locators);
            }
            if (servers.Count > 0)
            {
                builder.AddPropertyValue("Servers", servers);
            }
        }
コード例 #8
0
 public void Configure(ObjectDefinitionBuilder builder)
 {
     foreach (var keyValue in properties)
     {
         builder.AddPropertyValue(keyValue.Key, keyValue.Value);
     }
 }
コード例 #9
0
        /// <summary>
        /// Registers object definition with specified <c>id</c> for <c>T</c> type.
        /// </summary>
        /// <typeparam name="T">Type of configured object.</typeparam>
        /// <param name="id">Object id.</param>
        /// <returns>Next build stage.</returns>
        public IScopeBuildStage <T> RegisterNamed <T>(string id)
        {
            var builder = new ObjectDefinitionBuilder <T>(id);

            RegisterObjectDefinition(id, builder.Definition);
            return(builder);
        }
コード例 #10
0
        public IObjectDefinition ParseElement(XmlElement element, ParserContext parserContext)
        {
            IObjectDefinitionFactory factory = parserContext.ReaderContext.ObjectDefinitionFactory;

            AssertUtils.ArgumentNotNull(factory, "factory");

            string id        = element.GetAttribute(ObjectNames.MongoConventionProfileId);
            string defaultId = StringUtils.HasText(id) ? id : ObjectNames.MongoConventionProfileDefaultId;

            ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.GenericObjectDefinition(typeof(ConventionProfileFactory));

            SetConvention(element, builder, ObjectNames.ConventionProfileDefaultValue, ConventionProfileFactory.DefaultValueConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileElementName, ConventionProfileFactory.ElementNameConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileExtraElementsMember, ConventionProfileFactory.ExtraElementsMemberConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileIdGenerator, ConventionProfileFactory.IdGeneratorConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileIdMember, ConventionProfileFactory.IdMemberConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileIgnoreExtraElements, ConventionProfileFactory.IgnoreExtraElementsConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileIgnoreIfDefault, ConventionProfileFactory.IgnoreIfDefaultConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileIgnoreIfNull, ConventionProfileFactory.IgnoreIfNullConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileMemberFinder, ConventionProfileFactory.MemberFinderConventionProperty);
            SetConvention(element, builder, ObjectNames.ConventionProfileSerializationOptions, ConventionProfileFactory.SerializationOptionsConventionProperty);

            parserContext.Registry.RegisterObjectDefinition(defaultId, builder.ObjectDefinition);

            return(null);
        }
コード例 #11
0
        public void ObjectDefinitionReplacementTest()
        {
            var appContext           = (AbstractApplicationContext)applicationContext;
            var objectDefinitionName = _dummyCalculator.GetType().FullName;

            var originalObjectDefinition  = appContext.GetObjectDefinition(objectDefinitionName);
            var surrogateObjectDefinition = ObjectDefinitionBuilder.GenericObjectDefinition(
                typeof(SurrogateFactoryObject))
                                            .AddPropertyValue("TargetObjectType", typeof(ICalculator))
                                            .ObjectDefinition;

            appContext.ReplaceObjectDefinition(objectDefinitionName, surrogateObjectDefinition);

            var surrogateObject = appContext.GetObject(objectDefinitionName);

            Assert.AreNotSame(surrogateObject.GetType(), _dummyCalculator.GetType());

            //Replace
            appContext.ReplaceObjectDefinition(objectDefinitionName, originalObjectDefinition);

            var originalObject = appContext.GetObject(objectDefinitionName);

            Assert.AreNotSame(surrogateObject, originalObject);
            Assert.AreSame(_dummyCalculator.GetType(), originalObject.GetType());
        }
コード例 #12
0
 public void Configure(ObjectDefinitionBuilder builder)
 {
     foreach (var keyValue in properties)
     {
         builder.AddPropertyValue(keyValue.Key, keyValue.Value);
     }
 }
コード例 #13
0
        private void ParseTypeFilters(XmlElement element, ObjectDefinitionBuilder builder)
        {
            var includeTypeFilters = new List <ITypeFilter>();
            var excludeTypeFilters = new List <ITypeFilter>();

            foreach (XmlNode node in element.ChildNodes)
            {
                if (node.Name.Contains(ObjectNames.IncludeFilterElement))
                {
                    var typeFilter = CreateTypeFilter(node);
                    if (typeFilter != null)
                    {
                        includeTypeFilters.Add(typeFilter);
                    }
                }
                else if (node.Name.Contains(ObjectNames.ExcludeFilterElement))
                {
                    var typeFilter = CreateTypeFilter(node);
                    if (typeFilter != null)
                    {
                        excludeTypeFilters.Add(typeFilter);
                    }
                }
            }

            builder.AddPropertyValue(ConventionProfileFactory.IncludeFiltersProperty, includeTypeFilters);
            builder.AddPropertyValue(ConventionProfileFactory.ExcludeFiltersProperty, excludeTypeFilters);
        }
コード例 #14
0
        /**
         * Parse an "interval-trigger" element
         */
        private static string ParseIntervalTrigger(XmlElement element, ParserContext parserContext)
        {
            string interval = element.GetAttribute("interval");

            if (!StringUtils.HasText(interval))
            {
                parserContext.ReaderContext.ReportException(element, element.Name, "the 'interval' attribute is required for an <interval-trigger/>");
            }
            //TimeUnit timeUnit = TimeUnit.valueOf(element.getAttribute("time-unit"));
            ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.SCHEDULING_PACKAGE + ".IntervalTrigger");

            //TODO MLP handle parsing of time-unit correctly, now hardcode use of 'seconds' via Spring.Core.TypeConversion.TimeSpanConverter
            string timeUnit = element.GetAttribute("time-unit");

            switch (timeUnit)
            {
            case "SECONDS":
                interval = interval + "s";
                break;

            case "MILLISECONDS":
                interval = interval + "ms";
                break;
            }
            builder.AddConstructorArg(interval);


            //builder.addConstructorArgValue(timeUnit);
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "initial-delay");
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "fixed-rate");
            return(parserContext.ReaderContext.RegisterWithGeneratedName(builder.ObjectDefinition));
        }
コード例 #15
0
        protected override AbstractObjectDefinition ParseInternal(XmlElement element, ParserContext parserContext)
        {
            ObjectDefinitionBuilder metadataBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.SCHEDULING_PACKAGE + ".PollerMetadata");

            if (element.HasAttribute("ref"))
            {
                parserContext.ReaderContext.ReportException(element, element.Name, "the 'ref' attribute must not be present on a 'poller' element submitted to the parser");
            }
            ConfigureTrigger(element, metadataBuilder, parserContext);
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(metadataBuilder, element, "max-messages-per-poll");
            XmlElement adviceChainElement = DomUtils.GetChildElementByTagName(element, "advice-chain");

            if (adviceChainElement != null)
            {
                ConfigureAdviceChain(adviceChainElement, metadataBuilder, parserContext);
            }
            XmlElement txElement = DomUtils.GetChildElementByTagName(element, "transactional");

            if (txElement != null)
            {
                ConfigureTransactionAttributes(txElement, metadataBuilder);
            }
            IntegrationNamespaceUtils.SetReferenceIfAttributeDefined(metadataBuilder, element, "task-executor");
            return(metadataBuilder.ObjectDefinition);
        }
コード例 #16
0
        private void ParseSelectorChain(ObjectDefinitionBuilder builder, XmlElement element, ParserContext parserContext)
        {
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "voting-strategy");
            ManagedList selectors = new ManagedList();

            selectors.ElementTypeName = typeof(IMessageSelector).FullName;
            XmlNodeList childNodes = element.ChildNodes;

            for (int i = 0; i < childNodes.Count; i++)
            {
                XmlNode child = childNodes.Item(i);
                if (child.NodeType == XmlNodeType.Element)
                {
                    string nodeName = child.LocalName;
                    if ("selector".Equals(nodeName))
                    {
                        string refatr = ((XmlElement)child).GetAttribute("ref");
                        selectors.Add(new RuntimeObjectReference(refatr));
                    }
                    else if ("selector-chain".Equals(nodeName))
                    {
                        ObjectDefinitionBuilder nestedBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(GetObjectTypeName(null));
                        ParseSelectorChain(nestedBuilder, (XmlElement)child, parserContext);
                        string nestedBeanName = parserContext.ReaderContext.RegisterWithGeneratedName(nestedBuilder.ObjectDefinition);
                        selectors.Add(new RuntimeObjectReference(nestedBeanName));
                    }
                }
            }
            builder.AddPropertyValue("selectors", selectors);
        }
        protected override ObjectDefinitionBuilder BuildObjectDefinition(XmlElement element, ParserContext parserContext)
        {
            ObjectDefinitionBuilder builder;
            XmlElement queueElement;

            if ((queueElement = DomUtils.GetChildElementByTagName(element, "queue")) != null)
            {
                builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.CHANNEL_PACKAGE + ".QueueChannel");
                ParseQueueCapacity(builder, queueElement);
            }
            else if ((queueElement = DomUtils.GetChildElementByTagName(element, "priority-queue")) != null)
            {
                builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.CHANNEL_PACKAGE + ".PriorityChannel");
                ParseQueueCapacity(builder, queueElement);
                string comparatorRef = queueElement.GetAttribute("comparator");
                if (StringUtils.HasText(comparatorRef))
                {
                    builder.AddConstructorArgReference(comparatorRef);
                }
            }
            else if (DomUtils.GetChildElementByTagName(element, "rendezvous-queue") != null)
            {
                builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.CHANNEL_PACKAGE + ".RendezvousChannel");
            }
            else
            {
                builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.CHANNEL_PACKAGE + ".DirectChannel");
            }
            return(builder);
        }
コード例 #18
0
        private static IApplicationContext CreateContextProgrammaticallyWithAutoWire()
        {
            InitializeCommonLogging();
            GenericApplicationContext ctx = new GenericApplicationContext();

            IObjectDefinitionFactory objectDefinitionFactory = new DefaultObjectDefinitionFactory();


            //Create MovieLister and dependency on
            ObjectDefinitionBuilder builder =
                ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(MovieLister));

            builder.AddPropertyReference("MovieFinder", "BogusNameOfDependency")
            .SetAutowireMode(AutoWiringMode.ByType);

            ctx.RegisterObjectDefinition("MyMovieLister", builder.ObjectDefinition);

            builder = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(ColonDelimitedMovieFinder));
            builder.AddConstructorArg("movies.txt")
            .SetAutowireMode(AutoWiringMode.ByType);

            ctx.RegisterObjectDefinition("AnotherMovieFinder", builder.ObjectDefinition);

            ctx.Refresh();

            return(ctx);
        }
        protected override AbstractObjectDefinition ParseConsumer(XmlElement element, ParserContext parserContext)
        {
            ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.HANDLER_PACKAGE + ".LoggingHandler");

            builder.AddConstructorArg(element.GetAttribute("level"));
            return(builder.ObjectDefinition);
        }
コード例 #20
0
        void Init()
        {
            if (initialized)
            {
                return;
            }

            lock (componentProperties)
            {
                foreach (var t in componentProperties.Keys)
                {
                    var builder = ObjectDefinitionBuilder.RootObjectDefinition(factory, t)
                                  .SetAutowireMode(AutoWiringMode.AutoDetect)
                                  .SetSingleton(typeHandleLookup[t] == DependencyLifecycle.SingleInstance);

                    componentProperties[t].Configure(builder);

                    IObjectDefinition def = builder.ObjectDefinition;
                    context.RegisterObjectDefinition(t.FullName, def);
                }
            }

            initialized = true;
            context.Refresh();
        }
コード例 #21
0
        /// <summary>
        /// Registers the specified implementation type.
        /// </summary>
        /// <typeparam name="TService">The type of the service.</typeparam>
        /// <param name="implementationType">Type of the implementation.</param>
        public void Register <TService>(Type implementationType)
            where TService : class
        {
            var b = SetLifetime(ObjectDefinitionBuilder.RootObjectDefinition(_factory, implementationType));

            _container.RegisterObjectDefinition(SpringServiceLocator.GetName(implementationType), b.ObjectDefinition);
        }
コード例 #22
0
        /// <summary>
        /// Registers the specified implementation type.
        /// </summary>
        /// <typeparam name="TService">The type of the service.</typeparam>
        /// <param name="implementationType">Type of the implementation.</param>
        /// <param name="name">The name.</param>
        public void Register <TService>(Type implementationType, string name)
            where TService : class
        {
            var b = ObjectDefinitionBuilder.RootObjectDefinition(_factory, implementationType);

            _container.RegisterObjectDefinition(name, b.ObjectDefinition);
        }
コード例 #23
0
        private static void RegisterPrototype <TImplementation>(IConfigurableListableObjectFactory confObjFactory)
        {
            ObjectDefinitionBuilder odb = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(TImplementation))
                                          .SetSingleton(false).SetAutowireMode(AutoWiringMode.AutoDetect);

            confObjFactory.RegisterObjectDefinition(typeof(TImplementation).FullName, odb.ObjectDefinition);
        }
コード例 #24
0
        /**
         * Register an error channel in the given ObjectDefinitionRegistry if not yet present.
         * The bean name for which this is checking is defined by the constant
         * {@link IntegrationContextUtils#ERROR_CHANNEL_BEAN_NAME}.
         */
        private void RegisterErrorChannelIfNecessary(IObjectDefinitionRegistry registry)
        {
            if (!registry.ContainsObjectDefinition(IntegrationContextUtils.ErrorChannelObjectName))
            {
                if (logger.IsInfoEnabled)
                {
                    logger.Info("No bean named '" + IntegrationContextUtils.ErrorChannelObjectName +
                                "' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.");
                }

                RootObjectDefinition errorChannelDef = new RootObjectDefinition();
                errorChannelDef.ObjectTypeName = IntegrationNamespaceUtils.BASE_PACKAGE + ".Channel.PublishSubscribeChannel";
                ObjectDefinitionHolder errorChannelHolder = new ObjectDefinitionHolder(errorChannelDef, IntegrationContextUtils.ErrorChannelObjectName);
                ObjectDefinitionReaderUtils.RegisterObjectDefinition(errorChannelHolder, registry);

                ObjectDefinitionBuilder loggingHandlerBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.HANDLER_PACKAGE + ".LoggingHandler");

                string loggingHandlerObjectName = ObjectDefinitionReaderUtils.GenerateObjectName(loggingHandlerBuilder.ObjectDefinition, registry);

                loggingHandlerBuilder.AddConstructorArg("ERROR");
                ObjectDefinitionHolder loggingHandlerHolder = new ObjectDefinitionHolder(loggingHandlerBuilder.ObjectDefinition, loggingHandlerObjectName);
                ObjectDefinitionReaderUtils.RegisterObjectDefinition(loggingHandlerHolder, registry);

                ObjectDefinitionBuilder loggingEndpointBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.ENDPOINT_PACKAGE + ".EventDrivenConsumer");
                loggingEndpointBuilder.AddConstructorArgReference(IntegrationContextUtils.ErrorChannelObjectName);
                loggingEndpointBuilder.AddConstructorArgReference(loggingHandlerObjectName);
                string loggingEndpointObjectName             = ObjectDefinitionReaderUtils.GenerateObjectName(loggingEndpointBuilder.ObjectDefinition, registry);
                ObjectDefinitionHolder loggingEndpointHolder = new ObjectDefinitionHolder(loggingEndpointBuilder.ObjectDefinition, loggingEndpointObjectName);
                ObjectDefinitionReaderUtils.RegisterObjectDefinition(loggingEndpointHolder, registry);
            }
        }
コード例 #25
0
        /// <summary>
        /// Registers object definition with specified <c>id</c> for <c>T</c> type.
        /// </summary>
        /// <typeparam name="T">Type of configured object.</typeparam>
        /// <param name="ctx">Context for the registration</param>
        /// <param name="id">Object id.</param>
        /// <returns>Next build stage.</returns>
        public static IScopeBuildStage <T> RegisterNamed <T>(this IConfigurableApplicationContext ctx, string id)
        {
            var builder = new ObjectDefinitionBuilder <T>(id);

            ctx.ObjectFactory.RegisterObjectDefinition(id, builder.Definition);
            return(builder);
        }
コード例 #26
0
        private static void Register <TSerivice, TImplementation>(IConfigurableListableObjectFactory confObjFactory)
        {
            ObjectDefinitionBuilder odb = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(TImplementation)).
                                          SetAutowireMode(AutoWiringMode.Constructor);

            confObjFactory.RegisterObjectDefinition(typeof(TSerivice).FullName, odb.ObjectDefinition);
        }
コード例 #27
0
 protected static void PostProcess(ObjectDefinitionBuilder builder, XmlElement element)
 {
     foreach (string attributeName in _referenceAttributes)
     {
         IntegrationNamespaceUtils.SetReferenceIfAttributeDefined(builder, element, attributeName);
     }
 }
コード例 #28
0
        protected override void DoParse(XmlElement element, ParserContext parserContext, ObjectDefinitionBuilder builder)
        {
            base.DoParse(element, builder);

            //TODO investigate setting of scope on client cache
            //builder.AddPropertyValue("Scope", "some value");

            //TODO check if .NET client has any 'data policy' settings.

            ParsingUtils.SetPropertyValue(element, builder, "name", "name");
            ParsingUtils.SetPropertyValue(element, builder, "pool-name", "poolName");

            String cacheRef = element.GetAttribute("cache-ref");

            // add cache reference (fallback to default if nothing is specified)
            builder.AddPropertyReference("cache", (StringUtils.HasText(cacheRef) ? cacheRef : "gemfire-cache"));


            // client region attributes
            String regionAttributesRef = element.GetAttribute("attributes-ref");

            if (StringUtils.HasText(regionAttributesRef))
            {
                ObjectDefinitionBuilder attrBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(typeof(RegionAttributesFactoryObject));
                builder.AddPropertyReference("attributes", regionAttributesRef);
            }

            ManagedList interests   = new ManagedList();
            XmlNodeList subElements = element.ChildNodes;

            for (int i = 0; i < subElements.Count; i++)
            {
                XmlNode subElement = subElements.Item(i);
                if (subElement.NodeType == XmlNodeType.Element)
                {
                    string name = subElement.LocalName;
                    if ("cache-listener".Equals(name))
                    {
                        builder.AddPropertyValue("cacheListeners", ParseCacheListener(parserContext, (XmlElement)subElement, builder));
                    }
                    else if ("regex-interest".Equals(name))
                    {
                        interests.Add(ParseRegexInterest(parserContext, (XmlElement)subElement));
                    }
                    else if ("key-interest".Equals(name))
                    {
                        interests.Add(ParseKeyInterest(parserContext, (XmlElement)subElement));
                    }
                    else if ("all-keys-interest".Equals(name))
                    {
                        interests.Add(ParseAllKeysInterest(parserContext, (XmlElement)subElement));
                    }
                }
            }

            if (subElements.Count > 0)
            {
                builder.AddPropertyValue("interests", interests);
            }
        }
コード例 #29
0
        private object ParseAllKeysInterest(ParserContext parserContext, XmlElement subElement)
        {
            ObjectDefinitionBuilder keyInterestBuilder = ObjectDefinitionBuilder.GenericObjectDefinition(typeof(AllKeysInterest));

            ParseCommonInterestAttr(subElement, keyInterestBuilder);
            return(keyInterestBuilder.ObjectDefinition);
        }
コード例 #30
0
 public void Configure(ObjectDefinitionBuilder builder)
 {
     foreach (var key in properties.Keys)
     {
         builder.AddPropertyValue(key, properties[key]);
     }
 }
        private string ParseMessageListenerContainer(XmlElement element, ParserContext parserContext)
        {
            if (element.HasAttribute("container"))
            {
                foreach (string containerAttribute in containerAttributes)
                {
                    if (element.HasAttribute(containerAttribute))
                    {
                        parserContext.ReaderContext.ReportException(element, containerAttribute,
                                                                    "The '" + containerAttribute +
                                                                    "' attribute should not be provided when specifying a 'container' reference.");
                    }
                }
                return(element.GetAttribute("container"));
            }
            ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.GenericObjectDefinition(typeof(SimpleMessageListenerContainer));
            string destinationAttribute     = this.expectReply ? "request-destination" : "destination";
            string destinationNameAttribute = this.expectReply ? "request-destination-name" : "destination-name";
            string destination     = element.GetAttribute(destinationAttribute);
            string destinationName = element.GetAttribute(destinationNameAttribute);

            if (!(StringUtils.HasText(destination) ^ StringUtils.HasText(destinationName)))
            {
                parserContext.ReaderContext.ReportException(element, "destination or destination-name",
                                                            "Exactly one of '" + destinationAttribute + "' or '" + destinationNameAttribute + "' is required.");
            }

            builder.AddPropertyReference(NmsAdapterParserUtils.CONNECTION_FACTORY_PROPERTY,
                                         NmsAdapterParserUtils.DetermineConnectionFactoryBeanName(element, parserContext));

            if (StringUtils.HasText(destination))
            {
                builder.AddPropertyReference("destination", destination);
            }
            else
            {
                builder.AddPropertyValue("destinationName", destinationName);
            }
            AcknowledgementMode acknowledgementMode = NmsAdapterParserUtils.ParseAcknowledgementMode(element, parserContext);

            if (acknowledgementMode.Equals(AcknowledgementMode.Transactional))
            {
                builder.AddPropertyValue("sessionTransacted", true);
            }
            else
            {
                builder.AddPropertyValue("sessionAcknowledgeMode", acknowledgementMode);
            }

            IntegrationNamespaceUtils.SetReferenceIfAttributeDefined(builder, element, "destination-resolver");
            IntegrationNamespaceUtils.SetReferenceIfAttributeDefined(builder, element, "transaction-manager");
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "pub-sub-domain");
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "concurrent-consumers");
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "max-concurrent-consumers");
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "max-messages-per-task");
            IntegrationNamespaceUtils.SetValueIfAttributeDefined(builder, element, "idle-task-execution-limit");
            builder.AddPropertyValue("autoStartup", false);
            return(parserContext.ReaderContext.RegisterWithGeneratedName(builder.ObjectDefinition));
        }
コード例 #32
0
        private static string CreateCompletionStrategyAdapter(string refatr, string method, ParserContext parserContext)
        {
            ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.GenericObjectDefinition(IntegrationNamespaceUtils.AGGREGATOR_PACKAGE + ".CompletionStrategyAdapter");

            builder.AddConstructorArgReference(refatr);
            builder.AddConstructorArg(method);
            return(parserContext.ReaderContext.RegisterWithGeneratedName(builder.ObjectDefinition));
        }