##// END OF EJS Templates
Added tests for Implab.ServiceHost.Unity configuration loader.
cin -
r289:95896f882995 v3.0.14 v3
parent child
Show More
@@ -0,0 +1,29
1 <Project Sdk="Microsoft.NET.Sdk">
2 <PropertyGroup Condition="'$(OSTYPE)'=='linux'">
3 <TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks>
4 <FrameworkPathOverride Condition="'$(TargetFramework)'=='net46'">/usr/lib/mono/4.5/</FrameworkPathOverride>
5 </PropertyGroup>
6
7 <PropertyGroup Condition="'$(OSTYPE)'=='windows'">
8 <TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks>
9 </PropertyGroup>
10
11 <PropertyGroup>
12 <IsPackable>false</IsPackable>
13 </PropertyGroup>
14
15 <ItemGroup>
16 <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.6.0-preview-20180109-01" />
17 <PackageReference Include="System.Reactive" Version="4.0.0" />
18 <PackageReference Include="xunit" Version="2.3.1" />
19 <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
20 <ProjectReference Include="../Implab/Implab.csproj"/>
21 <ProjectReference Include="../Implab.ServiceHost/Implab.ServiceHost.csproj"/>
22 <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
23 </ItemGroup>
24
25 <ItemGroup>
26 <None Include="data/**/*.*" CopyToOutputDirectory="PreserveNewest" />
27 </ItemGroup>
28
29 </Project>
@@ -0,0 +1,74
1 <?xml version="1.0" encoding="UTF-8"?>
2 <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd">
3 <namespace name="System"/>
4 <namespace name="System.Collections.Generic"/>
5 <namespace name="Implab.Components"/>
6 <namespace name="Implab.ServiceHost.Test.Mock"/>
7
8 <!-- Default FooService -->
9 <register type="FooService{}">
10 <property name="Name">
11 <value>I'm default!</value>
12 </property>
13 </register>
14
15 <!-- foo2 -->
16 <register name="foo2" type="Foo">
17 <property name="Name">
18 <value>GOOD</value>
19 </property>
20 <property name="IntValue">
21 <value>2</value>
22 </property>
23 </register>
24
25 <register type="Foo">
26 <method name="AddRange">
27 <array itemsType="Foo">
28 <dependency name="foo2"/>
29 </array>
30 </method>
31 </register>
32
33 <register type="IContainer{}" mapTo="Container{}">
34 <constructor/>
35 <method name="SetInstance">
36 <dependency type="T"/>
37 </method>
38 <method name="AddRange">
39 <array itemsType="T">
40 <dependency name="foo2-bar"/>
41 </array>
42 </method>
43 </register>
44
45 <register type="List{}">
46 <constructor />
47 </register>
48
49 <register type="IContainer{String}" mapTo="Container{String}">
50 <constructor/>
51 <method name="SetInstance">
52 <dependency type="String" name="name1"/>
53 </method>
54 </register>
55
56 <serialized type="Foo+Bar">
57 <Bar xmlns="" id="1">
58 <Name>Baaar</Name>
59 </Bar>
60 </serialized>
61
62 <value name="connection1" type="String"><![CDATA[Connect me <here>!]]></value>
63 <value name="name1" type="String" value="Hello!"/>
64
65 <factory name="foo3" type="IFactory{Foo}" mapTo="FooFactory">
66 <property name="Connection">
67 <value><![CDATA[Wired "" objecty <> name @#$%^&]]></value>
68 </property>
69 <property name="UseSsl">
70 <value>false</value>
71 </property>
72 </factory>
73
74 </container> No newline at end of file
@@ -0,0 +1,2
1 <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd">
2 </container> No newline at end of file
@@ -0,0 +1,65
1 <?xml version="1.0"?>
2 <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd">
3 <namespace name="System"/>
4 <namespace name="System.Collections.Generic"/>
5 <namespace name="Implab.Components"/>
6 <namespace name="Implab.ServiceHost.Test.Mock"/>
7
8 <register name="Big" type="Baz+Nut">
9 <property name="Size">
10 <value>5</value>
11 </property>
12 </register>
13 <register name="Mid" type="Baz+Nut">
14 <property name="Size">
15 <value>3</value>
16 </property>
17 </register>
18 <register name="Small" type="Baz+Nut">
19 <property name="Size">
20 <value>1</value>
21 </property>
22 </register>
23 <register type="Baz+Nut">
24 <property name="Size">
25 <value>2</value>
26 </property>
27 </register>
28
29 <!-- register a generic interface mapping to the generic type -->
30 <register type="IBox{}" mapTo="Box{}">
31 <property name="Value">
32 <!-- the dependency type is implied from the property and will be the generic parameter {T} -->
33 <dependency optional="true"/>
34 </property>
35 </register>
36
37 <factory name="Box2" type="BoxFactory{}">
38 </factory>
39
40 <register type="IBox{String}" mapTo="Box{String}">
41 <property name="Name">
42 <value>boxForString</value>
43 </property>
44 </register>
45
46 <register name="Small" type="IBox{}" mapTo="Box{}">
47 <property name="Value">
48 <dependency name="Small" optional="true"/>
49 </property>
50 </register>
51
52 <register type="SetOfBoxes{}">
53 <constructor/>
54 <method name="BoxValues">
55 <!-- only generic parameter or type without unresolved parameters
56 can be used, this is a limitation of Unity container. TODO -->
57 <array itemsType="T">
58 <default />
59 <dependency optional="true"/>
60 <dependency name="Small" optional="true"/>
61 </array>
62 </method>
63 </register>
64
65 </container> No newline at end of file
@@ -0,0 +1,6
1 <?xml version="1.0"?>
2 <Person xmlns="urn:implab:test:model">
3 <FirstName>Trohn</FirstName>
4 <LastName>Javolta</LastName>
5 <Age>88</Age>
6 </Person> No newline at end of file
@@ -0,0 +1,16
1 <?xml version="1.0"?>
2 <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd">
3 <namespace name="System"/>
4 <namespace name="System.Collections.Generic"/>
5 <namespace name="Implab.Components"/>
6 <namespace name="Implab.ServiceHost.Test.Mock"/>
7
8 <serialized name="p1" type="Person">
9 <Person xmlns="urn:implab:test:model">
10 <FirstName>Com</FirstName>
11 <LastName>Truise</LastName>
12 <Age>99</Age>
13 </Person>
14 </serialized>
15 <serialized name="p2" type="Person" href="p2.xml"/>
16 </container> No newline at end of file
@@ -0,0 +1,63
1 <?xml version="1.0"?>
2 <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd">
3 <namespace name="System"/>
4 <namespace name="System.Collections.Generic"/>
5 <namespace name="Implab.Components"/>
6 <namespace name="Implab.ServiceHost.Test.Mock"/>
7
8 <register name="Baz1" type="Baz">
9 <property name="Numbers">
10 <array>
11 <value>1</value>
12 <value>2</value>
13 <value>3</value>
14 </array>
15 </property>
16 </register>
17
18 <register type="Baz">
19 <property name="Nuts">
20 <array>
21 <dependency/>
22 <dependency name="Big"/>
23 <dependency name="Big"/>
24 <dependency name="Small"/>
25 <dependency name="Mid"/>
26 </array>
27 </property>
28 </register>
29
30 <register name="Big" type="Baz+Nut">
31 <property name="Size">
32 <value>5</value>
33 </property>
34 </register>
35 <register name="Mid" type="Baz+Nut">
36 <property name="Size">
37 <value>3</value>
38 </property>
39 </register>
40 <register name="Small" type="Baz+Nut">
41 <property name="Size">
42 <value>1</value>
43 </property>
44 </register>
45 <register type="Baz+Nut">
46 <property name="Size">
47 <value>2</value>
48 </property>
49 </register>
50 <factory type="BazFactory">
51 <provides name="Baz2" type="Baz"/>
52 </factory>
53
54 <factory name="Baz3" type="BazFactory">
55 <property name="IdGenerator">
56 <dependency/>
57 </property>
58 </factory>
59
60 <factory type="GuidFactory">
61 <singleton/>
62 </factory>
63 </container> No newline at end of file
@@ -0,0 +1,23
1 using System;
2 using System.Collections.Generic;
3
4 namespace Implab.ServiceHost.Test.Mock {
5 public class Baz {
6
7 public Guid Id {
8 get; set;
9 }
10
11 public int[] Numbers {
12 get; set;
13 }
14
15 public Nut[] Nuts {
16 get; set;
17 }
18
19 public class Nut {
20 public int Size { get; set; }
21 }
22 }
23 } No newline at end of file
@@ -0,0 +1,17
1 using System;
2 using Implab.Components;
3
4 namespace Implab.ServiceHost.Test.Mock {
5 public class BazFactory : IFactory<Baz> {
6
7 public Func<Guid> IdGenerator {
8 get; set;
9 }
10
11 Baz IFactory<Baz>.Create() {
12 return new Baz {
13 Id = IdGenerator?.Invoke() ?? Guid.Empty
14 };
15 }
16 }
17 } No newline at end of file
@@ -0,0 +1,13
1 using System;
2 using Implab.Components;
3
4 namespace Implab.ServiceHost.Test.Mock {
5 public class BoxFactory<T> : IFactory<IBox<T>> {
6 public IBox<T> Create() {
7 return new Box<T> {
8 Name = "Creepy sugar"
9 };
10 }
11 }
12
13 } No newline at end of file
@@ -0,0 +1,13
1 namespace Implab.ServiceHost.Test.Mock {
2 public class Box<T> : IBox<T> {
3
4 public string Name { get; set; }
5
6 public T Value { get; set; }
7
8 public T GetBoxValue() {
9 return Value;
10 }
11
12 }
13 } No newline at end of file
@@ -0,0 +1,10
1 using System;
2 using Implab.Components;
3
4 namespace Implab.ServiceHost.Test.Mock {
5 public class GuidFactory : IFactory<Guid> {
6 public Guid Create() {
7 return Guid.NewGuid();
8 }
9 }
10 } No newline at end of file
@@ -0,0 +1,6
1 namespace Implab.ServiceHost.Test.Mock {
2 public interface IBox<T> {
3 string Name { get; }
4 T GetBoxValue();
5 }
6 } No newline at end of file
@@ -0,0 +1,20
1 using System.Xml.Serialization;
2
3 namespace Implab.ServiceHost.Test.Mock
4 {
5 [XmlRoot(Namespace="urn:implab:test:model")]
6 public class Person {
7 public string FirstName { get; set; }
8
9 public string LastName { get; set; }
10
11 public int Age { get; set; }
12
13 [XmlIgnore]
14 public bool AgeSpecified { get; set; }
15
16
17 [XmlElement("Tag")]
18 public string[] Tags { get; set; }
19 }
20 } No newline at end of file
@@ -0,0 +1,21
1 using System;
2 using System.Linq;
3
4 namespace Implab.ServiceHost.Test.Mock {
5 public class SetOfBoxes<T> {
6
7 public Guid Uuid { get; set; }
8
9 public IBox<T>[] Boxes {
10 get; set;
11 }
12
13 public void BoxValues(T[] items) {
14 if (items == null || items.Length == 0)
15 return;
16
17 Boxes = items.Select(x => new Box<T> {Value = x}).ToArray();
18 }
19
20 }
21 } No newline at end of file
@@ -0,0 +1,94
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 using System.Threading;
6 using System.Threading.Tasks;
7 using Implab.Components;
8 using Implab.Diagnostics;
9 using Implab.ServiceHost.Test.Mock;
10 using Implab.ServiceHost.Unity;
11 using Unity;
12 using Xunit;
13
14 namespace Implab.Test {
15
16 public class UnityConfigTest {
17
18 [Fact]
19 public void CreateContainer() {
20 var container = new UnityContainer();
21
22 container.LoadXmlConfiguration(Path.Combine("data","container","empty.xml"));
23 }
24
25 [Fact]
26 public void SimpleServicesContainer() {
27 var container = new UnityContainer();
28
29 container.LoadXmlConfiguration(Path.Combine("data","container","simple.services.xml"));
30
31 // named service registration
32 var baz1 = container.Resolve<Baz>("Baz1");
33
34 Assert.Equal(new [] {1,2,3}, baz1.Numbers);
35
36 // default service registration
37 var baz = container.Resolve<Baz>();
38
39 Assert.Equal(new [] {2,5,5,1,3}, baz.Nuts.Select(x => x.Size));
40
41 // ServiceFactory registered without a name
42 // explicitly provides 'Baz2' service
43 var baz2 = container.Resolve<Baz>("Baz2");
44
45 // ServiceFactory registered with name 'Baz3'
46 // provides by default the service registration with same name
47 var baz3 = container.Resolve<Baz>("Baz3");
48
49 // This factory uses GuidGenerator registration
50 // to generate a new id value
51 Assert.NotEqual(Guid.Empty, baz3.Id);
52 }
53
54 [Fact]
55 public void GenericServicesContainer() {
56 var container = new UnityContainer();
57 container.LoadXmlConfiguration(Path.Combine("data","container","generic.services.xml"));
58
59 // resolve using a generig interface mapping
60 var box = container.Resolve<IBox<Baz.Nut>>();
61
62 Assert.NotNull(box.GetBoxValue());
63
64 // registered generic defines dependency of type {T}
65 // in this case it should resolve to the default Nut with Size=2
66 Assert.Equal(box.GetBoxValue().Size,2);
67
68 // generic factory which provides generic services
69 var box2 = container.Resolve<IBox<Baz.Nut>>();
70
71 var set1 = container.Resolve<SetOfBoxes<Baz.Nut>>();
72
73 Assert.Equal(new int?[] {null,2,1}, set1.Boxes?.Select(x => x.GetBoxValue()?.Size));
74 }
75
76 [Fact]
77 public void SerializedInstances() {
78 var container = new UnityContainer();
79 container.LoadXmlConfiguration(Path.Combine("data","container","serialized.instances.xml"));
80
81 var p1 = container.Resolve<Person>("p1");
82 var p2 = container.Resolve<Person>("p2");
83
84 Assert.Equal("Com", p1.FirstName);
85 Assert.True(p1.AgeSpecified);
86 Assert.Equal(99, p1.Age);
87
88 Assert.Equal("Javolta", p2.LastName);
89 Assert.True(p2.AgeSpecified);
90 Assert.Equal(88, p2.Age);
91 }
92
93 }
94 } No newline at end of file
@@ -25,3 +25,5 Implab.Playground/obj/
25 Implab.Playground/bin/
25 Implab.Playground/bin/
26 Implab.ServiceHost/bin/
26 Implab.ServiceHost/bin/
27 Implab.ServiceHost/obj/
27 Implab.ServiceHost/obj/
28 Implab.ServiceHost.Test/bin/
29 Implab.ServiceHost.Test/obj/
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractContainerItem.cs to Implab.ServiceHost/src/Unity/AbstractContainerItem.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractContainerItem.cs to Implab.ServiceHost/src/Unity/AbstractContainerItem.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractInjectionParameter.cs to Implab.ServiceHost/src/Unity/AbstractInjectionParameter.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractInjectionParameter.cs to Implab.ServiceHost/src/Unity/AbstractInjectionParameter.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractMemberInjection.cs to Implab.ServiceHost/src/Unity/AbstractMemberInjection.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractMemberInjection.cs to Implab.ServiceHost/src/Unity/AbstractMemberInjection.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractRegistration.cs to Implab.ServiceHost/src/Unity/AbstractRegistration.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractRegistration.cs to Implab.ServiceHost/src/Unity/AbstractRegistration.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayParameterElement.cs to Implab.ServiceHost/src/Unity/ArrayParameterElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayParameterElement.cs to Implab.ServiceHost/src/Unity/ArrayParameterElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayTypeReference.cs to Implab.ServiceHost/src/Unity/ArrayTypeReference.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayTypeReference.cs to Implab.ServiceHost/src/Unity/ArrayTypeReference.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/AssemblyElement.cs to Implab.ServiceHost/src/Unity/AssemblyElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AssemblyElement.cs to Implab.ServiceHost/src/Unity/AssemblyElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ConstructorInjectionElement.cs to Implab.ServiceHost/src/Unity/ConstructorInjectionElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ConstructorInjectionElement.cs to Implab.ServiceHost/src/Unity/ConstructorInjectionElement.cs
@@ -50,7 +50,8 namespace Implab.ServiceHost.Unity {
50 var builder = new TypeRegistrationBuilder(
50 var builder = new TypeRegistrationBuilder(
51 m_resolver,
51 m_resolver,
52 registrationType,
52 registrationType,
53 implementationType
53 implementationType,
54 this
54 );
55 );
55
56
56 builder.Lifetime = registration.GetLifetime(this);
57 builder.Lifetime = registration.GetLifetime(this);
@@ -76,7 +77,8 namespace Implab.ServiceHost.Unity {
76
77
77 var builder = new InstanceRegistrationBuilder (
78 var builder = new InstanceRegistrationBuilder (
78 m_resolver,
79 m_resolver,
79 registrationType
80 registrationType,
81 this
80 );
82 );
81
83
82 builder.Lifetime = registration.GetLifetime(this);
84 builder.Lifetime = registration.GetLifetime(this);
@@ -123,6 +125,15 namespace Implab.ServiceHost.Unity {
123 }
125 }
124
126
125 /// <summary>
127 /// <summary>
128 /// Resolves a path ralatively to the current container configuration location.
129 /// </summary>
130 /// <param name="location">A path yto resolve</param>
131 /// <returns>Resolved Uri fot the specified location</returns>
132 public Uri MakeLocationUri(string location) {
133 return m_location != null ? new Uri(m_location, location) : new Uri(location);
134 }
135
136 /// <summary>
126 /// Loads a configuration from the specified local file.
137 /// Loads a configuration from the specified local file.
127 /// </summary>
138 /// </summary>
128 /// <param name="file">The path to the configuration file.</param>
139 /// <param name="file">The path to the configuration file.</param>
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerConfigurationSchema.cs to Implab.ServiceHost/src/Unity/ContainerConfigurationSchema.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerConfigurationSchema.cs to Implab.ServiceHost/src/Unity/ContainerConfigurationSchema.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerElement.cs to Implab.ServiceHost/src/Unity/ContainerElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerElement.cs to Implab.ServiceHost/src/Unity/ContainerElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContainerLifetimeElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContainerLifetimeElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContextLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContextLifetimeElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContextLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContextLifetimeElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/DefaultParameterElement.cs to Implab.ServiceHost/src/Unity/DefaultParameterElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/DefaultParameterElement.cs to Implab.ServiceHost/src/Unity/DefaultParameterElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/DependencyParameterElement.cs to Implab.ServiceHost/src/Unity/DependencyParameterElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/DependencyParameterElement.cs to Implab.ServiceHost/src/Unity/DependencyParameterElement.cs
@@ -27,12 +27,23 namespace Implab.ServiceHost.Unity {
27
27
28 public IEnumerable<ITypeMemberInjection> MemberInjections {
28 public IEnumerable<ITypeMemberInjection> MemberInjections {
29 get {
29 get {
30 yield return new FactoryInjector {
30 if (RegistrationType == null)
31 Factory = (InjectionFactory)GetType()
31 throw new Exception($"RegistrationType must be specified");
32 .GetMethod(nameof(CreateInjectionFactory), BindingFlags.Static | BindingFlags.NonPublic)
32 if (!typeof(IFactory<>).MakeGenericType(RegistrationType).IsAssignableFrom(FactoryType))
33 .MakeGenericMethod(FactoryType, RegistrationType)
33 throw new Exception($"The factory {FactoryType} can't be used to create {RegistrationType} instances");
34 .Invoke(null, new [] { FactoryName })
34
35 };
35 if (FactoryType.ContainsGenericParameters) {
36 yield return new FactoryInjector {
37 Factory = CreateDynamicInjectionFactory(FactoryName)
38 };
39 } else {
40 yield return new FactoryInjector {
41 Factory = (InjectionFactory)GetType()
42 .GetMethod(nameof(CreateInjectionFactory), BindingFlags.Static | BindingFlags.NonPublic)
43 .MakeGenericMethod(FactoryType, RegistrationType)
44 .Invoke(null, new [] { FactoryName })
45 };
46 }
36 }
47 }
37 }
48 }
38
49
@@ -59,5 +70,9 namespace Implab.ServiceHost.Unity {
59
70
60 return new InjectionFactory(c => c.Resolve<TFac>(dependencyName).Create());
71 return new InjectionFactory(c => c.Resolve<TFac>(dependencyName).Create());
61 }
72 }
73
74 static InjectionFactory CreateDynamicInjectionFactory(string dependencyName) {
75 return new InjectionFactory((c,t,name) => ((IFactory<object>)c.Resolve(t, dependencyName)).Create());
76 }
62 }
77 }
63 } No newline at end of file
78 }
@@ -37,7 +37,7 namespace Implab.ServiceHost.Unity {
37 RegistrationType = builder.ResolveType(item.RegistrationType),
37 RegistrationType = builder.ResolveType(item.RegistrationType),
38 FactoryName = Name,
38 FactoryName = Name,
39 FactoryType = factoryType,
39 FactoryType = factoryType,
40 Lifetime = item.Lifetime.GetLifetime(builder)
40 Lifetime = item.Lifetime?.GetLifetime(builder)
41 };
41 };
42 builder.Visit(activator);
42 builder.Visit(activator);
43 }
43 }
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/HierarchicalLifetimeElement.cs to Implab.ServiceHost/src/Unity/HierarchicalLifetimeElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/HierarchicalLifetimeElement.cs to Implab.ServiceHost/src/Unity/HierarchicalLifetimeElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInjectionParameter.cs to Implab.ServiceHost/src/Unity/IInjectionParameter.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInjectionParameter.cs to Implab.ServiceHost/src/Unity/IInjectionParameter.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInstanceRegistration.cs to Implab.ServiceHost/src/Unity/IInstanceRegistration.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInstanceRegistration.cs to Implab.ServiceHost/src/Unity/IInstanceRegistration.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/IRegistration.cs to Implab.ServiceHost/src/Unity/IRegistration.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IRegistration.cs to Implab.ServiceHost/src/Unity/IRegistration.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeMemberInjection.cs to Implab.ServiceHost/src/Unity/ITypeMemberInjection.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeMemberInjection.cs to Implab.ServiceHost/src/Unity/ITypeMemberInjection.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeRegistration.cs to Implab.ServiceHost/src/Unity/ITypeRegistration.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeRegistration.cs to Implab.ServiceHost/src/Unity/ITypeRegistration.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/IncludeElement.cs to Implab.ServiceHost/src/Unity/IncludeElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IncludeElement.cs to Implab.ServiceHost/src/Unity/IncludeElement.cs
@@ -16,6 +16,8 namespace Implab.ServiceHost.Unity {
16
16
17 public Type ValueType { get; private set; }
17 public Type ValueType { get; private set; }
18
18
19 public ContainerBuilder Root { get; private set; }
20
19 object m_value;
21 object m_value;
20
22
21 public object Value {
23 public object Value {
@@ -42,9 +44,10 namespace Implab.ServiceHost.Unity {
42 get { return m_injection != null; }
44 get { return m_injection != null; }
43 }
45 }
44
46
45 internal InjectionParameterBuilder(TypeResolver resolver, Type defaultType) {
47 internal InjectionParameterBuilder(TypeResolver resolver, Type defaultType, ContainerBuilder root) {
46 m_resolver = resolver;
48 m_resolver = resolver;
47 DefaultType = defaultType;
49 DefaultType = defaultType;
50 Root = root;
48 }
51 }
49
52
50 public Type ResolveInjectedValueType(string typeSpec) {
53 public Type ResolveInjectedValueType(string typeSpec) {
@@ -77,7 +80,11 namespace Implab.ServiceHost.Unity {
77 ValueSpecified = false;
80 ValueSpecified = false;
78 m_value = null;
81 m_value = null;
79
82
80 m_injection = optional ? (InjectionParameterValue)new OptionalParameter(type, name) : new ResolvedParameter(type, name);
83 m_injection = optional ?
84 type.IsGenericParameter ?
85 new OptionalGenericParameter(type.Name, name)
86 : (InjectionParameterValue)new OptionalParameter(type, name)
87 : new ResolvedParameter(type, name);
81 }
88 }
82
89
83 internal void Visit(ArrayParameterElement arrayParameter) {
90 internal void Visit(ArrayParameterElement arrayParameter) {
@@ -100,21 +107,19 namespace Implab.ServiceHost.Unity {
100
107
101 InjectionParameterValue[] injections = (arrayParameter.Items ?? new AbstractInjectionParameter[0])
108 InjectionParameterValue[] injections = (arrayParameter.Items ?? new AbstractInjectionParameter[0])
102 .Select(x => {
109 .Select(x => {
103 var builder = new InjectionParameterBuilder(m_resolver, itemsType);
110 var builder = new InjectionParameterBuilder(m_resolver, itemsType, Root);
104 x.Visit(builder);
111 x.Visit(builder);
105 return builder.Injection;
112 return builder.Injection;
106 })
113 })
107 .ToArray();
114 .ToArray();
108
115
109 var array = itemsType.IsGenericParameter ?
116 m_injection = itemsType.IsGenericParameter ?
110 (InjectionParameterValue)new GenericResolvedArrayParameter(itemsType.Name, injections) :
117 (InjectionParameterValue)new GenericResolvedArrayParameter(itemsType.Name, injections) :
111 new ResolvedArrayParameter(itemsType, injections);
118 new ResolvedArrayParameter(itemsType, injections);
112
119
113 ValueType = arrayType;
120 ValueType = arrayType;
114 m_value = null;
121 m_value = null;
115 ValueSpecified = false;
122 ValueSpecified = false;
116
117 m_injection = array;
118 }
123 }
119
124
120 Type GetItemsType(Type collectionType) {
125 Type GetItemsType(Type collectionType) {
@@ -123,7 +128,7 namespace Implab.ServiceHost.Unity {
123
128
124 Type itemsType = null;
129 Type itemsType = null;
125
130
126 if (collectionType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) {
131 if (collectionType.IsGenericType && collectionType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) {
127 itemsType = collectionType.GetGenericArguments()[0];
132 itemsType = collectionType.GetGenericArguments()[0];
128 } else if (collectionType == typeof(IEnumerable)) {
133 } else if (collectionType == typeof(IEnumerable)) {
129 itemsType = typeof(object);
134 itemsType = typeof(object);
@@ -6,8 +6,8 namespace Implab.ServiceHost.Unity
6
6
7 public InjectionParameterBuilder ValueBuilder { get; private set; }
7 public InjectionParameterBuilder ValueBuilder { get; private set; }
8
8
9 internal InstanceRegistrationBuilder(TypeResolver typeResolver, Type registrationType) : base(registrationType) {
9 internal InstanceRegistrationBuilder(TypeResolver typeResolver, Type registrationType, ContainerBuilder root) : base(registrationType, root) {
10 ValueBuilder = new InjectionParameterBuilder(typeResolver, registrationType);
10 ValueBuilder = new InjectionParameterBuilder(typeResolver, registrationType, root);
11 }
11 }
12 }
12 }
13 } No newline at end of file
13 }
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/LifetimeElement.cs to Implab.ServiceHost/src/Unity/LifetimeElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/LifetimeElement.cs to Implab.ServiceHost/src/Unity/LifetimeElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/MethodInjectionElement.cs to Implab.ServiceHost/src/Unity/MethodInjectionElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/MethodInjectionElement.cs to Implab.ServiceHost/src/Unity/MethodInjectionElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/NamespaceElement.cs to Implab.ServiceHost/src/Unity/NamespaceElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/NamespaceElement.cs to Implab.ServiceHost/src/Unity/NamespaceElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/NestedTypeReference.cs to Implab.ServiceHost/src/Unity/NestedTypeReference.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/NestedTypeReference.cs to Implab.ServiceHost/src/Unity/NestedTypeReference.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/PropertyInjectionElement.cs to Implab.ServiceHost/src/Unity/PropertyInjectionElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/PropertyInjectionElement.cs to Implab.ServiceHost/src/Unity/PropertyInjectionElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ProvidesElement.cs to Implab.ServiceHost/src/Unity/ProvidesElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ProvidesElement.cs to Implab.ServiceHost/src/Unity/ProvidesElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/RegisterElement.cs to Implab.ServiceHost/src/Unity/RegisterElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/RegisterElement.cs to Implab.ServiceHost/src/Unity/RegisterElement.cs
@@ -13,6 +13,10 namespace Implab.ServiceHost.Unity {
13 /// Базовый класс для формирования записей в контейнере, созволяет указать время жизни для записи
13 /// Базовый класс для формирования записей в контейнере, созволяет указать время жизни для записи
14 /// </summary>
14 /// </summary>
15 public abstract class RegistrationBuilder {
15 public abstract class RegistrationBuilder {
16 public ContainerBuilder Root {
17 get; private set;
18 }
19
16 public Type RegistrationType {
20 public Type RegistrationType {
17 get;
21 get;
18 private set;
22 private set;
@@ -20,7 +24,8 namespace Implab.ServiceHost.Unity {
20
24
21 internal LifetimeManager Lifetime { get; set; }
25 internal LifetimeManager Lifetime { get; set; }
22
26
23 protected RegistrationBuilder(Type registrationType) {
27 protected RegistrationBuilder(Type registrationType, ContainerBuilder root) {
28 Root = root;
24 RegistrationType = registrationType;
29 RegistrationType = registrationType;
25 }
30 }
26 }
31 }
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/RootTypeReference.cs to Implab.ServiceHost/src/Unity/RootTypeReference.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/RootTypeReference.cs to Implab.ServiceHost/src/Unity/RootTypeReference.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/Schema.cs to Implab.ServiceHost/src/Unity/Schema.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/Schema.cs to Implab.ServiceHost/src/Unity/Schema.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/SerializedElement.cs to Implab.ServiceHost/src/Unity/SerializedElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/SerializedElement.cs to Implab.ServiceHost/src/Unity/SerializedElement.cs
@@ -12,9 +12,9 namespace Implab.ServiceHost.Unity
12 [XmlAnyElement]
12 [XmlAnyElement]
13 public XmlElement[] Content { get; set; }
13 public XmlElement[] Content { get; set; }
14
14
15 public XmlReader GetReader() {
15 public XmlReader GetReader(InjectionParameterBuilder builder) {
16 if (!string.IsNullOrEmpty(Location))
16 if (!string.IsNullOrEmpty(Location))
17 return XmlReader.Create(Location);
17 return XmlReader.Create(builder.Root.MakeLocationUri(Location).ToString());
18 if (Content != null && Content.Length > 0)
18 if (Content != null && Content.Length > 0)
19 return Content[0].CreateNavigator().ReadSubtree();
19 return Content[0].CreateNavigator().ReadSubtree();
20
20
@@ -25,7 +25,7 namespace Implab.ServiceHost.Unity
25 var type = builder.ResolveInjectedValueType(TypeName);
25 var type = builder.ResolveInjectedValueType(TypeName);
26
26
27 var serializer = new XmlSerializer(type);
27 var serializer = new XmlSerializer(type);
28 using(var reader = GetReader())
28 using(var reader = GetReader(builder))
29 builder.SetValue(type, serializer.Deserialize(reader));
29 builder.SetValue(type, serializer.Deserialize(reader));
30
30
31 }
31 }
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/SingletonLifetimeElement.cs to Implab.ServiceHost/src/Unity/SingletonLifetimeElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/SingletonLifetimeElement.cs to Implab.ServiceHost/src/Unity/SingletonLifetimeElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/SpecializedTypeReference.cs to Implab.ServiceHost/src/Unity/SpecializedTypeReference.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/SpecializedTypeReference.cs to Implab.ServiceHost/src/Unity/SpecializedTypeReference.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReference.cs to Implab.ServiceHost/src/Unity/TypeReference.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReference.cs to Implab.ServiceHost/src/Unity/TypeReference.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReferenceParser.cs to Implab.ServiceHost/src/Unity/TypeReferenceParser.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReferenceParser.cs to Implab.ServiceHost/src/Unity/TypeReferenceParser.cs
@@ -18,7 +18,7 namespace Implab.ServiceHost.Unity {
18 private set;
18 private set;
19 }
19 }
20
20
21 internal TypeRegistrationBuilder(TypeResolver resolver, Type registrationType, Type implementationType) : base(registrationType) {
21 internal TypeRegistrationBuilder(TypeResolver resolver, Type registrationType, Type implementationType, ContainerBuilder root) : base(registrationType, root) {
22 ImplementationType = implementationType;
22 ImplementationType = implementationType;
23
23
24 // when registering a generic mapping, register all generic parameter names as local types
24 // when registering a generic mapping, register all generic parameter names as local types
@@ -37,7 +37,7 namespace Implab.ServiceHost.Unity {
37
37
38 var parameters = constructorInjection.Parameters?
38 var parameters = constructorInjection.Parameters?
39 .Select(x => {
39 .Select(x => {
40 var valueBuilder = new InjectionParameterBuilder(m_resolver, null);
40 var valueBuilder = new InjectionParameterBuilder(m_resolver, null, Root);
41 x.Visit(valueBuilder);
41 x.Visit(valueBuilder);
42 return valueBuilder.Injection;
42 return valueBuilder.Injection;
43 })
43 })
@@ -50,7 +50,7 namespace Implab.ServiceHost.Unity {
50 internal void Visit(MethodInjectionElement methodInjection) {
50 internal void Visit(MethodInjectionElement methodInjection) {
51 var parameters = methodInjection.Parameters?
51 var parameters = methodInjection.Parameters?
52 .Select(x => {
52 .Select(x => {
53 var valueBuilder = new InjectionParameterBuilder(m_resolver, null);
53 var valueBuilder = new InjectionParameterBuilder(m_resolver, null, Root);
54 x.Visit(valueBuilder);
54 x.Visit(valueBuilder);
55 return valueBuilder.Injection;
55 return valueBuilder.Injection;
56 })
56 })
@@ -65,7 +65,7 namespace Implab.ServiceHost.Unity {
65 throw new Exception($"A value value must be specified for the property '{propertyInjection.Name}'");
65 throw new Exception($"A value value must be specified for the property '{propertyInjection.Name}'");
66
66
67 var propertyType = ImplementationType.GetProperty(propertyInjection.Name)?.PropertyType;
67 var propertyType = ImplementationType.GetProperty(propertyInjection.Name)?.PropertyType;
68 var valueContext = new InjectionParameterBuilder(m_resolver, propertyType);
68 var valueContext = new InjectionParameterBuilder(m_resolver, propertyType, Root);
69
69
70 propertyInjection.Value.Visit(valueContext);
70 propertyInjection.Value.Visit(valueContext);
71 var injection = new InjectionProperty(propertyInjection.Name, valueContext.Injection);
71 var injection = new InjectionProperty(propertyInjection.Name, valueContext.Injection);
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolutionContext.cs to Implab.ServiceHost/src/Unity/TypeResolutionContext.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolutionContext.cs to Implab.ServiceHost/src/Unity/TypeResolutionContext.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolver.cs to Implab.ServiceHost/src/Unity/TypeResolver.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolver.cs to Implab.ServiceHost/src/Unity/TypeResolver.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/UnityContainerExtensions.cs to Implab.ServiceHost/src/Unity/UnityContainerExtensions.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/UnityContainerExtensions.cs to Implab.ServiceHost/src/Unity/UnityContainerExtensions.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueElement.cs to Implab.ServiceHost/src/Unity/ValueElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueElement.cs to Implab.ServiceHost/src/Unity/ValueElement.cs
1 NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueParameterElement.cs to Implab.ServiceHost/src/Unity/ValueParameterElement.cs
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueParameterElement.cs to Implab.ServiceHost/src/Unity/ValueParameterElement.cs
1 NO CONTENT: file renamed from Implab.Test/DiagnosticsTest.cs to Implab.Test/src/DiagnosticsTest.cs
NO CONTENT: file renamed from Implab.Test/DiagnosticsTest.cs to Implab.Test/src/DiagnosticsTest.cs
1 NO CONTENT: file renamed from Implab.Test/JsonTests.cs to Implab.Test/src/JsonTests.cs
NO CONTENT: file renamed from Implab.Test/JsonTests.cs to Implab.Test/src/JsonTests.cs
1 NO CONTENT: file renamed from Implab.Test/MockPollComponent.cs to Implab.Test/src/MockPollComponent.cs
NO CONTENT: file renamed from Implab.Test/MockPollComponent.cs to Implab.Test/src/MockPollComponent.cs
1 NO CONTENT: file renamed from Implab.Test/Model/Person.cs to Implab.Test/src/Model/Person.cs
NO CONTENT: file renamed from Implab.Test/Model/Person.cs to Implab.Test/src/Model/Person.cs
1 NO CONTENT: file renamed from Implab.Test/PromiseHelper.cs to Implab.Test/src/PromiseHelper.cs
NO CONTENT: file renamed from Implab.Test/PromiseHelper.cs to Implab.Test/src/PromiseHelper.cs
1 NO CONTENT: file renamed from Implab.Test/RunnableComponentTests.cs to Implab.Test/src/RunnableComponentTests.cs
NO CONTENT: file renamed from Implab.Test/RunnableComponentTests.cs to Implab.Test/src/RunnableComponentTests.cs
@@ -11,6 +11,8 Project("{FAE04EC0-301F-11D3-BF4B-00C04F
11 EndProject
11 EndProject
12 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.ServiceHost", "Implab.ServiceHost\Implab.ServiceHost.csproj", "{8B79FCBE-50DD-40A0-9B5E-E572072E4868}"
12 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.ServiceHost", "Implab.ServiceHost\Implab.ServiceHost.csproj", "{8B79FCBE-50DD-40A0-9B5E-E572072E4868}"
13 EndProject
13 EndProject
14 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.ServiceHost.Test", "Implab.ServiceHost.Test\Implab.ServiceHost.Test.csproj", "{CB844F94-E555-4F25-A932-7CB85C98CF86}"
15 EndProject
14 Global
16 Global
15 GlobalSection(SolutionConfigurationPlatforms) = preSolution
17 GlobalSection(SolutionConfigurationPlatforms) = preSolution
16 Debug|Any CPU = Debug|Any CPU
18 Debug|Any CPU = Debug|Any CPU
@@ -45,6 +47,18 Global
45 {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x64.Build.0 = Release|x64
47 {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x64.Build.0 = Release|x64
46 {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.ActiveCfg = Release|x86
48 {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.ActiveCfg = Release|x86
47 {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.Build.0 = Release|x86
49 {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.Build.0 = Release|x86
50 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
51 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|Any CPU.Build.0 = Debug|Any CPU
52 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x64.ActiveCfg = Debug|x64
53 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x64.Build.0 = Debug|x64
54 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x86.ActiveCfg = Debug|x86
55 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x86.Build.0 = Debug|x86
56 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|Any CPU.ActiveCfg = Release|Any CPU
57 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|Any CPU.Build.0 = Release|Any CPU
58 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x64.ActiveCfg = Release|x64
59 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x64.Build.0 = Release|x64
60 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x86.ActiveCfg = Release|x86
61 {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x86.Build.0 = Release|x86
48 EndGlobalSection
62 EndGlobalSection
49 GlobalSection(SolutionProperties) = preSolution
63 GlobalSection(SolutionProperties) = preSolution
50 HideSolutionNode = FALSE
64 HideSolutionNode = FALSE
@@ -20,7 +20,7
20 </PropertyGroup>
20 </PropertyGroup>
21
21
22 <ItemGroup>
22 <ItemGroup>
23 <EmbeddedResource Include="Xml\json.xsl"/>
23 <EmbeddedResource Include="src\Xml\json.xsl"/>
24 </ItemGroup>
24 </ItemGroup>
25
25
26 </Project>
26 </Project>
1 NO CONTENT: file renamed from Implab/AbstractEvent.cs to Implab/src/AbstractEvent.cs
NO CONTENT: file renamed from Implab/AbstractEvent.cs to Implab/src/AbstractEvent.cs
1 NO CONTENT: file renamed from Implab/Automaton/AutomatonConst.cs to Implab/src/Automaton/AutomatonConst.cs
NO CONTENT: file renamed from Implab/Automaton/AutomatonConst.cs to Implab/src/Automaton/AutomatonConst.cs
1 NO CONTENT: file renamed from Implab/Automaton/AutomatonTransition.cs to Implab/src/Automaton/AutomatonTransition.cs
NO CONTENT: file renamed from Implab/Automaton/AutomatonTransition.cs to Implab/src/Automaton/AutomatonTransition.cs
1 NO CONTENT: file renamed from Implab/Automaton/DFATable.cs to Implab/src/Automaton/DFATable.cs
NO CONTENT: file renamed from Implab/Automaton/DFATable.cs to Implab/src/Automaton/DFATable.cs
1 NO CONTENT: file renamed from Implab/Automaton/IAlphabet.cs to Implab/src/Automaton/IAlphabet.cs
NO CONTENT: file renamed from Implab/Automaton/IAlphabet.cs to Implab/src/Automaton/IAlphabet.cs
1 NO CONTENT: file renamed from Implab/Automaton/IAlphabetBuilder.cs to Implab/src/Automaton/IAlphabetBuilder.cs
NO CONTENT: file renamed from Implab/Automaton/IAlphabetBuilder.cs to Implab/src/Automaton/IAlphabetBuilder.cs
1 NO CONTENT: file renamed from Implab/Automaton/IDFATable.cs to Implab/src/Automaton/IDFATable.cs
NO CONTENT: file renamed from Implab/Automaton/IDFATable.cs to Implab/src/Automaton/IDFATable.cs
1 NO CONTENT: file renamed from Implab/Automaton/IDFATableBuilder.cs to Implab/src/Automaton/IDFATableBuilder.cs
NO CONTENT: file renamed from Implab/Automaton/IDFATableBuilder.cs to Implab/src/Automaton/IDFATableBuilder.cs
1 NO CONTENT: file renamed from Implab/Automaton/IndexedAlphabetBase.cs to Implab/src/Automaton/IndexedAlphabetBase.cs
NO CONTENT: file renamed from Implab/Automaton/IndexedAlphabetBase.cs to Implab/src/Automaton/IndexedAlphabetBase.cs
1 NO CONTENT: file renamed from Implab/Automaton/MapAlphabet.cs to Implab/src/Automaton/MapAlphabet.cs
NO CONTENT: file renamed from Implab/Automaton/MapAlphabet.cs to Implab/src/Automaton/MapAlphabet.cs
1 NO CONTENT: file renamed from Implab/Automaton/ParserException.cs to Implab/src/Automaton/ParserException.cs
NO CONTENT: file renamed from Implab/Automaton/ParserException.cs to Implab/src/Automaton/ParserException.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/AltToken.cs to Implab/src/Automaton/RegularExpressions/AltToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/AltToken.cs to Implab/src/Automaton/RegularExpressions/AltToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/BinaryToken.cs to Implab/src/Automaton/RegularExpressions/BinaryToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/BinaryToken.cs to Implab/src/Automaton/RegularExpressions/BinaryToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/CatToken.cs to Implab/src/Automaton/RegularExpressions/CatToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/CatToken.cs to Implab/src/Automaton/RegularExpressions/CatToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EmptyToken.cs to Implab/src/Automaton/RegularExpressions/EmptyToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EmptyToken.cs to Implab/src/Automaton/RegularExpressions/EmptyToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndToken.cs to Implab/src/Automaton/RegularExpressions/EndToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndToken.cs to Implab/src/Automaton/RegularExpressions/EndToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndTokenT.cs to Implab/src/Automaton/RegularExpressions/EndTokenT.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndTokenT.cs to Implab/src/Automaton/RegularExpressions/EndTokenT.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/ITaggedDFABuilder.cs to Implab/src/Automaton/RegularExpressions/ITaggedDFABuilder.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/ITaggedDFABuilder.cs to Implab/src/Automaton/RegularExpressions/ITaggedDFABuilder.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/IVisitor.cs to Implab/src/Automaton/RegularExpressions/IVisitor.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/IVisitor.cs to Implab/src/Automaton/RegularExpressions/IVisitor.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularDFA.cs to Implab/src/Automaton/RegularExpressions/RegularDFA.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularDFA.cs to Implab/src/Automaton/RegularExpressions/RegularDFA.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitor.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitor.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitor.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitor.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitorT.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitorT.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitorT.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitorT.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/StarToken.cs to Implab/src/Automaton/RegularExpressions/StarToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/StarToken.cs to Implab/src/Automaton/RegularExpressions/StarToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/SymbolToken.cs to Implab/src/Automaton/RegularExpressions/SymbolToken.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/SymbolToken.cs to Implab/src/Automaton/RegularExpressions/SymbolToken.cs
1 NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/Token.cs to Implab/src/Automaton/RegularExpressions/Token.cs
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/Token.cs to Implab/src/Automaton/RegularExpressions/Token.cs
1 NO CONTENT: file renamed from Implab/Components/Disposable.cs to Implab/src/Components/Disposable.cs
NO CONTENT: file renamed from Implab/Components/Disposable.cs to Implab/src/Components/Disposable.cs
1 NO CONTENT: file renamed from Implab/Components/DisposablePool.cs to Implab/src/Components/DisposablePool.cs
NO CONTENT: file renamed from Implab/Components/DisposablePool.cs to Implab/src/Components/DisposablePool.cs
1 NO CONTENT: file renamed from Implab/Components/ExecutionState.cs to Implab/src/Components/ExecutionState.cs
NO CONTENT: file renamed from Implab/Components/ExecutionState.cs to Implab/src/Components/ExecutionState.cs
1 NO CONTENT: file renamed from Implab/Components/IAsyncComponent.cs to Implab/src/Components/IAsyncComponent.cs
NO CONTENT: file renamed from Implab/Components/IAsyncComponent.cs to Implab/src/Components/IAsyncComponent.cs
1 NO CONTENT: file renamed from Implab/Components/IFactory.cs to Implab/src/Components/IFactory.cs
NO CONTENT: file renamed from Implab/Components/IFactory.cs to Implab/src/Components/IFactory.cs
1 NO CONTENT: file renamed from Implab/Components/IInitializable.cs to Implab/src/Components/IInitializable.cs
NO CONTENT: file renamed from Implab/Components/IInitializable.cs to Implab/src/Components/IInitializable.cs
1 NO CONTENT: file renamed from Implab/Components/IRunnable.cs to Implab/src/Components/IRunnable.cs
NO CONTENT: file renamed from Implab/Components/IRunnable.cs to Implab/src/Components/IRunnable.cs
1 NO CONTENT: file renamed from Implab/Components/IServiceLocator.cs to Implab/src/Components/IServiceLocator.cs
NO CONTENT: file renamed from Implab/Components/IServiceLocator.cs to Implab/src/Components/IServiceLocator.cs
1 NO CONTENT: file renamed from Implab/Components/LazyAndWeak.cs to Implab/src/Components/LazyAndWeak.cs
NO CONTENT: file renamed from Implab/Components/LazyAndWeak.cs to Implab/src/Components/LazyAndWeak.cs
1 NO CONTENT: file renamed from Implab/Components/ObjectPool.cs to Implab/src/Components/ObjectPool.cs
NO CONTENT: file renamed from Implab/Components/ObjectPool.cs to Implab/src/Components/ObjectPool.cs
1 NO CONTENT: file renamed from Implab/Components/PollingComponent.cs to Implab/src/Components/PollingComponent.cs
NO CONTENT: file renamed from Implab/Components/PollingComponent.cs to Implab/src/Components/PollingComponent.cs
1 NO CONTENT: file renamed from Implab/Components/RunnableComponent.cs to Implab/src/Components/RunnableComponent.cs
NO CONTENT: file renamed from Implab/Components/RunnableComponent.cs to Implab/src/Components/RunnableComponent.cs
1 NO CONTENT: file renamed from Implab/Components/ServiceLocator.cs to Implab/src/Components/ServiceLocator.cs
NO CONTENT: file renamed from Implab/Components/ServiceLocator.cs to Implab/src/Components/ServiceLocator.cs
1 NO CONTENT: file renamed from Implab/Components/StateChangeEventArgs.cs to Implab/src/Components/StateChangeEventArgs.cs
NO CONTENT: file renamed from Implab/Components/StateChangeEventArgs.cs to Implab/src/Components/StateChangeEventArgs.cs
1 NO CONTENT: file renamed from Implab/CustomEqualityComparer.cs to Implab/src/CustomEqualityComparer.cs
NO CONTENT: file renamed from Implab/CustomEqualityComparer.cs to Implab/src/CustomEqualityComparer.cs
1 NO CONTENT: file renamed from Implab/Deferred.cs to Implab/src/Deferred.cs
NO CONTENT: file renamed from Implab/Deferred.cs to Implab/src/Deferred.cs
1 NO CONTENT: file renamed from Implab/Deferred`1.cs to Implab/src/Deferred`1.cs
NO CONTENT: file renamed from Implab/Deferred`1.cs to Implab/src/Deferred`1.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/ActivityScope.cs to Implab/src/Diagnostics/ActivityScope.cs
NO CONTENT: file renamed from Implab/Diagnostics/ActivityScope.cs to Implab/src/Diagnostics/ActivityScope.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperation.cs to Implab/src/Diagnostics/LogicalOperation.cs
NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperation.cs to Implab/src/Diagnostics/LogicalOperation.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperationScope.cs to Implab/src/Diagnostics/LogicalOperationScope.cs
NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperationScope.cs to Implab/src/Diagnostics/LogicalOperationScope.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/SimpleTraceListener.cs to Implab/src/Diagnostics/SimpleTraceListener.cs
NO CONTENT: file renamed from Implab/Diagnostics/SimpleTraceListener.cs to Implab/src/Diagnostics/SimpleTraceListener.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/Trace.cs to Implab/src/Diagnostics/Trace.cs
NO CONTENT: file renamed from Implab/Diagnostics/Trace.cs to Implab/src/Diagnostics/Trace.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/TraceChannel.cs to Implab/src/Diagnostics/TraceChannel.cs
NO CONTENT: file renamed from Implab/Diagnostics/TraceChannel.cs to Implab/src/Diagnostics/TraceChannel.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/TraceEventCodes.cs to Implab/src/Diagnostics/TraceEventCodes.cs
NO CONTENT: file renamed from Implab/Diagnostics/TraceEventCodes.cs to Implab/src/Diagnostics/TraceEventCodes.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/TraceRegistry.cs to Implab/src/Diagnostics/TraceRegistry.cs
NO CONTENT: file renamed from Implab/Diagnostics/TraceRegistry.cs to Implab/src/Diagnostics/TraceRegistry.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceAttribute.cs to Implab/src/Diagnostics/TraceSourceAttribute.cs
NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceAttribute.cs to Implab/src/Diagnostics/TraceSourceAttribute.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel.cs to Implab/src/Diagnostics/TraceSourceChannel.cs
NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel.cs to Implab/src/Diagnostics/TraceSourceChannel.cs
1 NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel`1.cs to Implab/src/Diagnostics/TraceSourceChannel`1.cs
NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel`1.cs to Implab/src/Diagnostics/TraceSourceChannel`1.cs
1 NO CONTENT: file renamed from Implab/ExceptionHelpers.cs to Implab/src/ExceptionHelpers.cs
NO CONTENT: file renamed from Implab/ExceptionHelpers.cs to Implab/src/ExceptionHelpers.cs
1 NO CONTENT: file renamed from Implab/Formats/ByteAlphabet.cs to Implab/src/Formats/ByteAlphabet.cs
NO CONTENT: file renamed from Implab/Formats/ByteAlphabet.cs to Implab/src/Formats/ByteAlphabet.cs
1 NO CONTENT: file renamed from Implab/Formats/CharAlphabet.cs to Implab/src/Formats/CharAlphabet.cs
NO CONTENT: file renamed from Implab/Formats/CharAlphabet.cs to Implab/src/Formats/CharAlphabet.cs
1 NO CONTENT: file renamed from Implab/Formats/CharMap.cs to Implab/src/Formats/CharMap.cs
NO CONTENT: file renamed from Implab/Formats/CharMap.cs to Implab/src/Formats/CharMap.cs
1 NO CONTENT: file renamed from Implab/Formats/FastInpurScanner.cs to Implab/src/Formats/FastInpurScanner.cs
NO CONTENT: file renamed from Implab/Formats/FastInpurScanner.cs to Implab/src/Formats/FastInpurScanner.cs
1 NO CONTENT: file renamed from Implab/Formats/Grammar.cs to Implab/src/Formats/Grammar.cs
NO CONTENT: file renamed from Implab/Formats/Grammar.cs to Implab/src/Formats/Grammar.cs
1 NO CONTENT: file renamed from Implab/Formats/InputScanner.cs to Implab/src/Formats/InputScanner.cs
NO CONTENT: file renamed from Implab/Formats/InputScanner.cs to Implab/src/Formats/InputScanner.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonElementContext.cs to Implab/src/Formats/Json/JsonElementContext.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonElementContext.cs to Implab/src/Formats/Json/JsonElementContext.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonElementType.cs to Implab/src/Formats/Json/JsonElementType.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonElementType.cs to Implab/src/Formats/Json/JsonElementType.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonGrammar.cs to Implab/src/Formats/Json/JsonGrammar.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonGrammar.cs to Implab/src/Formats/Json/JsonGrammar.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonReader.cs to Implab/src/Formats/Json/JsonReader.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonReader.cs to Implab/src/Formats/Json/JsonReader.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonScanner.cs to Implab/src/Formats/Json/JsonScanner.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonScanner.cs to Implab/src/Formats/Json/JsonScanner.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonStringScanner.cs to Implab/src/Formats/Json/JsonStringScanner.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonStringScanner.cs to Implab/src/Formats/Json/JsonStringScanner.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonTextScanner.cs to Implab/src/Formats/Json/JsonTextScanner.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonTextScanner.cs to Implab/src/Formats/Json/JsonTextScanner.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonTokenType.cs to Implab/src/Formats/Json/JsonTokenType.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonTokenType.cs to Implab/src/Formats/Json/JsonTokenType.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/JsonWriter.cs to Implab/src/Formats/Json/JsonWriter.cs
NO CONTENT: file renamed from Implab/Formats/Json/JsonWriter.cs to Implab/src/Formats/Json/JsonWriter.cs
1 NO CONTENT: file renamed from Implab/Formats/Json/StringTranslator.cs to Implab/src/Formats/Json/StringTranslator.cs
NO CONTENT: file renamed from Implab/Formats/Json/StringTranslator.cs to Implab/src/Formats/Json/StringTranslator.cs
1 NO CONTENT: file renamed from Implab/IDispatcher.cs to Implab/src/IDispatcher.cs
NO CONTENT: file renamed from Implab/IDispatcher.cs to Implab/src/IDispatcher.cs
1 NO CONTENT: file renamed from Implab/IPromise.cs to Implab/src/IPromise.cs
NO CONTENT: file renamed from Implab/IPromise.cs to Implab/src/IPromise.cs
1 NO CONTENT: file renamed from Implab/IPromiseT.cs to Implab/src/IPromiseT.cs
NO CONTENT: file renamed from Implab/IPromiseT.cs to Implab/src/IPromiseT.cs
1 NO CONTENT: file renamed from Implab/IResolvable.cs to Implab/src/IResolvable.cs
NO CONTENT: file renamed from Implab/IResolvable.cs to Implab/src/IResolvable.cs
1 NO CONTENT: file renamed from Implab/IResolvable`1.cs to Implab/src/IResolvable`1.cs
NO CONTENT: file renamed from Implab/IResolvable`1.cs to Implab/src/IResolvable`1.cs
1 NO CONTENT: file renamed from Implab/Messaging/IConsumer.cs to Implab/src/Messaging/IConsumer.cs
NO CONTENT: file renamed from Implab/Messaging/IConsumer.cs to Implab/src/Messaging/IConsumer.cs
1 NO CONTENT: file renamed from Implab/Messaging/IProducer.cs to Implab/src/Messaging/IProducer.cs
NO CONTENT: file renamed from Implab/Messaging/IProducer.cs to Implab/src/Messaging/IProducer.cs
1 NO CONTENT: file renamed from Implab/Parallels/AsyncQueue.cs to Implab/src/Parallels/AsyncQueue.cs
NO CONTENT: file renamed from Implab/Parallels/AsyncQueue.cs to Implab/src/Parallels/AsyncQueue.cs
1 NO CONTENT: file renamed from Implab/Parallels/BlockingQueue.cs to Implab/src/Parallels/BlockingQueue.cs
NO CONTENT: file renamed from Implab/Parallels/BlockingQueue.cs to Implab/src/Parallels/BlockingQueue.cs
1 NO CONTENT: file renamed from Implab/Parallels/DispatchPool.cs to Implab/src/Parallels/DispatchPool.cs
NO CONTENT: file renamed from Implab/Parallels/DispatchPool.cs to Implab/src/Parallels/DispatchPool.cs
1 NO CONTENT: file renamed from Implab/Parallels/SharedLock.cs to Implab/src/Parallels/SharedLock.cs
NO CONTENT: file renamed from Implab/Parallels/SharedLock.cs to Implab/src/Parallels/SharedLock.cs
1 NO CONTENT: file renamed from Implab/Parallels/Signal.cs to Implab/src/Parallels/Signal.cs
NO CONTENT: file renamed from Implab/Parallels/Signal.cs to Implab/src/Parallels/Signal.cs
1 NO CONTENT: file renamed from Implab/Parallels/SimpleAsyncQueue.cs to Implab/src/Parallels/SimpleAsyncQueue.cs
NO CONTENT: file renamed from Implab/Parallels/SimpleAsyncQueue.cs to Implab/src/Parallels/SimpleAsyncQueue.cs
1 NO CONTENT: file renamed from Implab/Parallels/SyncContextDispatcher.cs to Implab/src/Parallels/SyncContextDispatcher.cs
NO CONTENT: file renamed from Implab/Parallels/SyncContextDispatcher.cs to Implab/src/Parallels/SyncContextDispatcher.cs
1 NO CONTENT: file renamed from Implab/Parallels/ThreadPoolDispatcher.cs to Implab/src/Parallels/ThreadPoolDispatcher.cs
NO CONTENT: file renamed from Implab/Parallels/ThreadPoolDispatcher.cs to Implab/src/Parallels/ThreadPoolDispatcher.cs
1 NO CONTENT: file renamed from Implab/Promise.cs to Implab/src/Promise.cs
NO CONTENT: file renamed from Implab/Promise.cs to Implab/src/Promise.cs
1 NO CONTENT: file renamed from Implab/PromiseActionReaction.cs to Implab/src/PromiseActionReaction.cs
NO CONTENT: file renamed from Implab/PromiseActionReaction.cs to Implab/src/PromiseActionReaction.cs
1 NO CONTENT: file renamed from Implab/PromiseActionReaction`1.cs to Implab/src/PromiseActionReaction`1.cs
NO CONTENT: file renamed from Implab/PromiseActionReaction`1.cs to Implab/src/PromiseActionReaction`1.cs
1 NO CONTENT: file renamed from Implab/PromiseAll.cs to Implab/src/PromiseAll.cs
NO CONTENT: file renamed from Implab/PromiseAll.cs to Implab/src/PromiseAll.cs
1 NO CONTENT: file renamed from Implab/PromiseAll`1.cs to Implab/src/PromiseAll`1.cs
NO CONTENT: file renamed from Implab/PromiseAll`1.cs to Implab/src/PromiseAll`1.cs
1 NO CONTENT: file renamed from Implab/PromiseAwaiter.cs to Implab/src/PromiseAwaiter.cs
NO CONTENT: file renamed from Implab/PromiseAwaiter.cs to Implab/src/PromiseAwaiter.cs
1 NO CONTENT: file renamed from Implab/PromiseAwaiter`1.cs to Implab/src/PromiseAwaiter`1.cs
NO CONTENT: file renamed from Implab/PromiseAwaiter`1.cs to Implab/src/PromiseAwaiter`1.cs
1 NO CONTENT: file renamed from Implab/PromiseExecutor.cs to Implab/src/PromiseExecutor.cs
NO CONTENT: file renamed from Implab/PromiseExecutor.cs to Implab/src/PromiseExecutor.cs
1 NO CONTENT: file renamed from Implab/PromiseExecutor`1.cs to Implab/src/PromiseExecutor`1.cs
NO CONTENT: file renamed from Implab/PromiseExecutor`1.cs to Implab/src/PromiseExecutor`1.cs
1 NO CONTENT: file renamed from Implab/PromiseExtensions.cs to Implab/src/PromiseExtensions.cs
NO CONTENT: file renamed from Implab/PromiseExtensions.cs to Implab/src/PromiseExtensions.cs
1 NO CONTENT: file renamed from Implab/PromiseFuncReaction`1.cs to Implab/src/PromiseFuncReaction`1.cs
NO CONTENT: file renamed from Implab/PromiseFuncReaction`1.cs to Implab/src/PromiseFuncReaction`1.cs
1 NO CONTENT: file renamed from Implab/PromiseFuncReaction`2.cs to Implab/src/PromiseFuncReaction`2.cs
NO CONTENT: file renamed from Implab/PromiseFuncReaction`2.cs to Implab/src/PromiseFuncReaction`2.cs
1 NO CONTENT: file renamed from Implab/PromiseHandler.cs to Implab/src/PromiseHandler.cs
NO CONTENT: file renamed from Implab/PromiseHandler.cs to Implab/src/PromiseHandler.cs
1 NO CONTENT: file renamed from Implab/PromiseState.cs to Implab/src/PromiseState.cs
NO CONTENT: file renamed from Implab/PromiseState.cs to Implab/src/PromiseState.cs
1 NO CONTENT: file renamed from Implab/PromiseTransientException.cs to Implab/src/PromiseTransientException.cs
NO CONTENT: file renamed from Implab/PromiseTransientException.cs to Implab/src/PromiseTransientException.cs
1 NO CONTENT: file renamed from Implab/Promise`1.cs to Implab/src/Promise`1.cs
NO CONTENT: file renamed from Implab/Promise`1.cs to Implab/src/Promise`1.cs
1 NO CONTENT: file renamed from Implab/RejectedPromise.cs to Implab/src/RejectedPromise.cs
NO CONTENT: file renamed from Implab/RejectedPromise.cs to Implab/src/RejectedPromise.cs
1 NO CONTENT: file renamed from Implab/RejectedPromise`1.cs to Implab/src/RejectedPromise`1.cs
NO CONTENT: file renamed from Implab/RejectedPromise`1.cs to Implab/src/RejectedPromise`1.cs
1 NO CONTENT: file renamed from Implab/ResolvedPromise.cs to Implab/src/ResolvedPromise.cs
NO CONTENT: file renamed from Implab/ResolvedPromise.cs to Implab/src/ResolvedPromise.cs
1 NO CONTENT: file renamed from Implab/ResolvedPromise`1.cs to Implab/src/ResolvedPromise`1.cs
NO CONTENT: file renamed from Implab/ResolvedPromise`1.cs to Implab/src/ResolvedPromise`1.cs
1 NO CONTENT: file renamed from Implab/Safe.cs to Implab/src/Safe.cs
NO CONTENT: file renamed from Implab/Safe.cs to Implab/src/Safe.cs
1 NO CONTENT: file renamed from Implab/TaskHelpers.cs to Implab/src/TaskHelpers.cs
NO CONTENT: file renamed from Implab/TaskHelpers.cs to Implab/src/TaskHelpers.cs
1 NO CONTENT: file renamed from Implab/Xml/JsonXmlCaseTransform.cs to Implab/src/Xml/JsonXmlCaseTransform.cs
NO CONTENT: file renamed from Implab/Xml/JsonXmlCaseTransform.cs to Implab/src/Xml/JsonXmlCaseTransform.cs
1 NO CONTENT: file renamed from Implab/Xml/JsonXmlReader.cs to Implab/src/Xml/JsonXmlReader.cs
NO CONTENT: file renamed from Implab/Xml/JsonXmlReader.cs to Implab/src/Xml/JsonXmlReader.cs
1 NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderOptions.cs to Implab/src/Xml/JsonXmlReaderOptions.cs
NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderOptions.cs to Implab/src/Xml/JsonXmlReaderOptions.cs
1 NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderPosition.cs to Implab/src/Xml/JsonXmlReaderPosition.cs
NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderPosition.cs to Implab/src/Xml/JsonXmlReaderPosition.cs
1 NO CONTENT: file renamed from Implab/Xml/SerializationHelpers.cs to Implab/src/Xml/SerializationHelpers.cs
NO CONTENT: file renamed from Implab/Xml/SerializationHelpers.cs to Implab/src/Xml/SerializationHelpers.cs
1 NO CONTENT: file renamed from Implab/Xml/SerializersPool.cs to Implab/src/Xml/SerializersPool.cs
NO CONTENT: file renamed from Implab/Xml/SerializersPool.cs to Implab/src/Xml/SerializersPool.cs
1 NO CONTENT: file renamed from Implab/Xml/XmlDefaultSerializer.cs to Implab/src/Xml/XmlDefaultSerializer.cs
NO CONTENT: file renamed from Implab/Xml/XmlDefaultSerializer.cs to Implab/src/Xml/XmlDefaultSerializer.cs
1 NO CONTENT: file renamed from Implab/Xml/XmlNameContext.cs to Implab/src/Xml/XmlNameContext.cs
NO CONTENT: file renamed from Implab/Xml/XmlNameContext.cs to Implab/src/Xml/XmlNameContext.cs
1 NO CONTENT: file renamed from Implab/Xml/XmlSerializerExtensions.cs to Implab/src/Xml/XmlSerializerExtensions.cs
NO CONTENT: file renamed from Implab/Xml/XmlSerializerExtensions.cs to Implab/src/Xml/XmlSerializerExtensions.cs
1 NO CONTENT: file renamed from Implab/Xml/XmlSimpleAttribute.cs to Implab/src/Xml/XmlSimpleAttribute.cs
NO CONTENT: file renamed from Implab/Xml/XmlSimpleAttribute.cs to Implab/src/Xml/XmlSimpleAttribute.cs
1 NO CONTENT: file renamed from Implab/Xml/XmlToJson.cs to Implab/src/Xml/XmlToJson.cs
NO CONTENT: file renamed from Implab/Xml/XmlToJson.cs to Implab/src/Xml/XmlToJson.cs
1 NO CONTENT: file renamed from Implab/Xml/json.xsl to Implab/src/Xml/json.xsl
NO CONTENT: file renamed from Implab/Xml/json.xsl to Implab/src/Xml/json.xsl
1 NO CONTENT: file renamed from Implab/Xml/readme.txt to Implab/src/Xml/readme.txt
NO CONTENT: file renamed from Implab/Xml/readme.txt to Implab/src/Xml/readme.txt
General Comments 3
Under Review
author

Auto status change to "Under Review"

Approved
author

ok, latest stable version should be in default

You need to be logged in to leave comments. Login now