            var serviceProvider = new ServiceCollection().AddSingleton<AsyncComponent>().BuildServiceProvider();

            var htmlRenderer = GetHtmlRenderer(serviceProvider);

            // Act
            var result = await htmlRenderer.Dispatcher.InvokeAsync(() => htmlRenderer.RenderComponentAsync<NestedAsyncComponent>(ParameterCollection.FromDictionary(new Dictionary<string, object>
            {
                ["Nested"] = false,
                ["Value"] = 10
            })));

            // Assert
            Assert.Equal(expectedHtml, result.Tokens);
        }


        private class NestedAsyncComponent : ComponentBase
        {
            [Parameter] public bool Nested { get; set; }
            [Parameter] public int Value { get; set; }

            protected override async Task OnInitializedAsync()
            {
                Value = Value * 2;
                await Task.Yield();
            }

            protected override void BuildRenderTree(RenderTreeBuilder builder)
            {
                builder.OpenElement(0, "p");
                builder.AddContent(1, Value.ToString());
                builder.CloseElement();
                if (!Nested)
                {
                    builder.OpenComponent<NestedAsyncComponent>(2);
                    builder.AddAttribute(3, "Nested", true);
                    builder.AddAttribute(4, "Value", Value * 2);
                    builder.CloseComponent();
                }
            }
        }

        private class AsyncComponent : ComponentBase
        {
            public AsyncComponent()
            {
            }

            [Parameter]
            public int Value { get; set; }

            protected override async Task OnInitializedAsync()
            {
                Value = Value * 2;
                await Task.Delay(Value * 100);
            }

            protected override void BuildRenderTree(RenderTreeBuilder builder)
            {
                builder.OpenElement(0, "p");
                builder.AddContent(1, Value.ToString());
                builder.CloseElement();
            }
        }

        private class ChildComponent : IComponent
        {
            private RenderHandle _renderHandle;

            public void Attach(RenderHandle renderHandle)
            {
                _renderHandle = renderHandle;
            }

            public Task SetParametersAsync(ParameterCollection parameters)
            {
                _renderHandle.Render(CreateRenderFragment(parameters));
                return Task.CompletedTask;
            }

            private RenderFragment CreateRenderFragment(ParameterCollection parameters)
            {
                return RenderFragment;

                void RenderFragment(RenderTreeBuilder rtb)
                {
                    rtb.OpenElement(1, "span");
                    rtb.AddContent(2, parameters.GetValueOrDefault<string>("Value"));
                    rtb.CloseElement();
                }
            }
        }

        private class TestComponent : IComponent
        {
            private RenderHandle _renderHandle;

            [Inject]
            public RenderFragment Fragment { get; set; }

            public void Attach(RenderHandle renderHandle)
            {
                _renderHandle = renderHandle;
            }

            public Task SetParametersAsync(ParameterCollection parameters)
            {
                _renderHandle.Render(Fragment);
                return Task.CompletedTask;
            }
        }
    }
}
This is one of a distinctive group of enamels produced for the Court from some time shortly after the construction of the Guyue Xuan for the Qianlong Emperor in 1767 until the Emperor's death in 1799. Some of the Guyue Xuan group were produced at the Palace workshops, including this example, while others were made elsewhere, probably at Yangzhou (see lots 610 and 690). Among the Beijing products is a small group on mostly earlier colored glass bottles made at the Imperial Glassworks which include Imperial yellow and sapphire-blue versions. This is a rare example on a caramel-colored ground.
See another example on caramel-colored ground, formerly from the Mack Collection, and now in the Denis Low Collection, More Treasures from the Sanctum of Enlightened Respect, p. 18, no. 15, which is also attributed to the Palace Workshops in Beijing, and two other examples illustrated in B. Stevens, The Collector's Book of Chinese Snuff Bottles, no. 955 (on a yellow ground) and no. 960 (on a turquoise ground). For a Guyue Xuan-marked example on caramel-colored ground but attributed to Yangzhou, see one from the Blanche B. Exstein collection, sold in these rooms, 21 March 2002, lot 27, which bears a Guyue Xuan mark in red.Run In Ottawa

Hi, Just moved from Alta Vista to the BywardMarket area(Dalhousie/Clarence perimeter) and was wondering if it is a safe place let's say to go for early morning runs(kinda like at around 2am ish)? Cus I know for a fact that where I lived in Alta Vista was nowhere near safe!! so let me know where it could be okay for me to go for a run as I am a woman do do fear just a little bit as I am originally from the suburbs of Montreal where i could legit go for run at the same time!!!!Hi, Anyone knows how to pass a different file path (parameter) in Batch File?
I am calling my fmw in a batch file however I cannot change my source and destination path.
fme myworkspace.fmw --SourceDataset_ESRISHAPE "c:\data\parks.shp" --DestDataset_ESRISHAPE "C:\SHP\output.shp"
You can find an example of the command line entry to use at the top of the log file when you run the workspace in Workbench.
Make sure the --SourceDataset_FILEGDB and --DestDataset_FILEGDB are on the same line as the C:\apps\FME\fme.exe E:\500-GIS\01-ESRI\AverageDepth.fmw. The log file has line-breaks to clean up the formatting, but in the actual command it all has to be on the same line. Because the flags are optional, if they are on a separate line then the FMW file will use the default values.
Another issue to be aware of is that FME can only create so many folders when it is running a translation. It should be able to handle what you have set, but double check to see if the folder Created_Shapefiles already exists. If not, create it manually.Gluecode debuts enterprise server software
Gluecode Software has rolled out Gluecode Enterprise Server 3.5, which is designed to provide an open-source business automation...
Gluecode Software has rolled out Gluecode Enterprise Server 3.5, which is designed to provide an open-source business automation server chassis that can be custom-configured to meet customer requirements.
Pricing starts at $4,000 per month per deployment, regardless of the number of servers or users.
The Gluecode Enterprise Server combines business process management, security management and an enterprise portal in an integrated suite that uses open-source applications from the nonprofit Apache Software Foundation as its starting point.
Gluecode takes Apache open-source applications and "glues" its own code on top of them depending on customer requirements.
Chief executive officer Winston Damarillo said his company's strategy follows an industry trend toward rapid software standardisation on languages and protocols that make it easier for applications to work together. Gluecode takes the base Apache applications, creates connecting code to customise it for the users and sells it in a package that includes support and a software warranty.
Apache open-source projects include the popular Apache Web server, the Jetspeed Enterprise Information Portal, the component-based web development framework Cocoon and the Java-based build tool Ant. There are also open-source Apache projects under way for web services, component programming and enterprise mail and news servers.
Greg Stein, chairman of the Apache Software Foundation, said his group encourages companies such as Gluecode to take open-source applications and use them to create their own products.
Analysts offered varying opinions on Gluecode's model.
Nathaniel Palmer, an analyst at The Delphi Group in Boston, called the company's strategy "a disruptive trend".
"Right now, the rate of adoption is fairly low, but the impact of the ripples, I think, is fairly significant," he added.
Palmer said he did not know whether the idea will be embraced by IT departments, although he admitted he did see the recognition that this is something that's fundamentally changing software," he added.
"What is going to move open-source to the next level [in corporate IT] is having the value of something that's been tested and delivered with some level of warranty and commercial assurances."
Robert Lerner, an analyst at Current Analysis, was not so sure. He believed something as complicated and expensive as a full-fledged corporate portal may not be workable using a customised open-source application because companies want suppliers that will be available when they need them.
"This product will appeal probably to smaller customers who can't afford the major vendors," Lerner said. "It may be able to carve out a niche for itself, and I'm all in favour of open-source portals. The problem is there's no real record