public SubItemFieldWriterTests()
        {
            var artistsStem = new ArtistsStem();

            artistsStem.SetParent(new TestStartAxis());

            var tools = new SubWriterTools <Album, Artist, Artist>(a => a.Artist, null, null);

            _writer = new SubItemFieldWriter <Album, Artist>(tools, new StemsEngineSubContext <Artist>(artistsStem));
        }
예제 #2
0
        public SubCollectionFieldWriterTests()
        {
            var subStem = new ArtistAlbumsStem();

            subStem.SetParent(new TestStartAxis());

            StemsEngineSubContext <Album> stemsEngineSubContext = new StemsEngineSubContext <Album>(subStem);
            var tools = new SubWriterTools <Artist, IEnumerable <Album>, Album>(a => a.Albums, null, null);

            NameFieldWriter = new SubCollectionFieldWriter <Artist, IEnumerable <Album>, Album>(tools, stemsEngineSubContext);
        }
        public IFieldWriter <TItem> Get(Stem <TItem> stem)
        {
            var substemCreator = new SubstemEngineSubContextCreator <TItem, TNav, TSubstem>(stem);
            StemDataChangeEvents <TNav>  stemEvents = substemCreator.GetDataChangeEvents();
            StemsEngineSubContext <TNav> subContext = substemCreator.GetEngineContext();

            MethodSetter <TItem, TNav> setter = MethodSetter <TItem, TNav> .FromDefinition(_definition, stem);

            var tools = new SubWriterTools <TItem, TNav, TNav>(_navigationExpression, stemEvents, setter);

            return(new SubItemFieldWriter <TItem, TNav>(tools, subContext));
        }
예제 #4
0
        public IApiItemBuilder <TNavItem> IsItem <TNavItem>()
            where TNavItem : class, TField, new()
        {
            var itemModel = new ApiItemModel <TNavItem>(null); // can be null because GetRootCollection never called for navigation properties
            IEngineSubContext <TNavItem> subContext = new FluentEngineSubContext <TNavItem>(itemModel);

            var castedExpression = _expression as Expression <Func <TItem, TNavItem> >; // should cast fine due to generic constraint

            var navTools = new SubWriterTools <TItem, TNavItem, TNavItem>(castedExpression, itemModel.Events, _setter);

            _fieldModel.Reader         = new SubItemFieldReader <TItem, TNavItem>(castedExpression, subContext);
            _fieldModel.Collator       = new NotSupportedFieldCollator <TItem>("sub items");
            _fieldModel.ResourceGetter = new SubItemResourceGetter <TItem, TNavItem>(navTools, subContext);
            _fieldModel.Writer         = new SubItemFieldWriter <TItem, TNavItem>(navTools, subContext);

            var itemBuilder = new EngineItemBuilder <TNavItem>(itemModel);

            return(itemBuilder);
        }
예제 #5
0
 public SubItemFieldWriter(SubWriterTools <TItem, TNav, TNav> navTools, IEngineSubContext <TNav> subContext)
 {
     _navTools   = navTools;
     _subContext = subContext;
 }
예제 #6
0
 public SubItemResourceGetter(SubWriterTools <TItem, TNav, TNav> navTools, IEngineSubContext <TNav> engineSubContext)
 {
     _navTools         = navTools;
     _engineSubContext = engineSubContext;
 }
 public SubCollectionResourceGetter(SubWriterTools <TItem, TCollection, TNav> navTools, IEngineSubContext <TNav> subContext)
 {
     _navTools   = navTools;
     _subContext = subContext;
 }