コード例 #1
0
        private static async Task <IHydraResource> GatherLinks(
            ITypedEntity resource,
            Statement statement,
            ProcessingState processingState,
            IHydraResource hydraResource,
            CancellationToken cancellationToken)
        {
            var relationResource = await resource.Context.Load <IDereferencableLink>(statement.Predicate, cancellationToken);

            var @object = await resource.Context.Load <IResource>(statement.Object, cancellationToken);

            var linkType = relationResource.GetLinkType() ?? @object.GetLinkType(processingState.LinksPolicy, processingState.Root);

            if (linkType != null)
            {
                hydraResource = hydraResource ?? resource.ActLike <IHydraResource>();
                var owner = hydraResource;
                processingState.MarkAsOwned(relationResource.Iri);
                processingState.MarkAsOwned(@object.Iri);
                processingState.ProcessingCompleted +=
                    (sender, e) => CreateRelationHandler((ProcessingState)sender, owner, relationResource, @object, linkType);
            }

            return(hydraResource);
        }
コード例 #2
0
 static public void Set <T0, T1, T2, T3>
     (this ComponentDataFromEntity <T3> componentDataFromEntity, ITypedEntity <T0, T1, T2, T3> entity, T3 componentData)
     where T0 : struct, IComponentData
     where T1 : struct, IComponentData
     where T2 : struct, IComponentData
     where T3 : struct, IComponentData
 => componentDataFromEntity[entity.Entity] = componentData;
コード例 #3
0
 static public T2 Get <T0, T1, T2, T3>
     (this ComponentDataFromEntity <T2> componentDataFromEntity, ITypedEntity <T0, T1, T2, T3> entity)
     where T0 : struct, IComponentData
     where T1 : struct, IComponentData
     where T2 : struct, IComponentData
     where T3 : struct, IComponentData
 => componentDataFromEntity[entity.Entity];
コード例 #4
0
        public ReferenceExpression CreateTypedReference(string name, ITypedEntity entity)
        {
            ReferenceExpression expression = new ReferenceExpression(name);

            expression.Entity         = entity;
            expression.ExpressionType = entity.Type;
            return(expression);
        }
 private static Task <IResource> PointingResourceInitializer(
     ITypedEntity resource,
     IHydraClient client,
     ProcessingState processingState,
     CancellationToken cancellationToken)
 {
     resource.Unwrap().SetProperty(ResourceExtensions.BaseUrlPropertyInfo, (Uri)processingState.BaseUrl);
     return(ResourceInitializer(resource.ActLike <IHydraResource>(), client, processingState, cancellationToken));
 }
 private static Task <IResource> ClientInitializer(
     ITypedEntity resource,
     IHydraClient client,
     ProcessingState processingState,
     CancellationToken cancellationToken)
 {
     resource.Unwrap().SetProperty(ClientPropertyInfo, client);
     return(ResourceInitializer(
                resource.Is(hydra.ApiDocumentation) ? (ITypedEntity)resource.ActLike <IApiDocumentation>() : resource.ActLike <ICollection>(),
                client,
                processingState,
                cancellationToken));
 }
コード例 #7
0
        private static async Task <IResource> ResourceInitializer(
            ITypedEntity resource,
            IHydraClient client,
            ProcessingState processingState,
            CancellationToken cancellationToken)
        {
            IHydraResource hydraResource = resource as IHydraResource
                                           ?? (resource.Is(hydra.Resource) ? resource.ActLike <IHydraResource>() : null);

            bool hasView = false;

            foreach (var statement in processingState.StatementsOf(resource.Iri))
            {
                hydraResource = await GatherLinks(resource, statement, processingState, hydraResource, cancellationToken);

                if (statement.Predicate == hydra.view)
                {
                    hasView = true;
                }
            }

            if (hydraResource != null && processingState.NumberOfStatementsOf(resource.Iri) > 0)
            {
                GatherOperationTargets(hydraResource, processingState);
                if (hasView)
                {
                    hydraResource = hydraResource.ActLike <IResourceView>();
                }

                var addToHypermedia = !processingState.ForbiddenHypermeda.Contains(hydraResource.Iri) &&
                                      (!hydraResource.Iri.IsBlank || IsHydraDependent(hydraResource));
                if (addToHypermedia)
                {
                    processingState.AllHypermedia.Add(hydraResource.Iri);
                }
            }

            return(hydraResource);
        }
コード例 #8
0
ファイル: BooCodeBuilder.cs プロジェクト: 0xb1dd1e/boo
 public ReferenceExpression CreateTypedReference(string name, ITypedEntity entity)
 {
     ReferenceExpression expression = new ReferenceExpression(name);
     expression.Entity = entity;
     expression.ExpressionType = entity.Type;
     return expression;
 }
コード例 #9
0
 internal DynamicTypedEntity(ITypedEntity entity)
     : base(entity)
 {
     Contract.Requires(entity != null);
     _entity = entity;
 }
コード例 #10
0
ファイル: ProcessMethodBodies.cs プロジェクト: stuman08/boo
 bool AssertDelegateArgument(Node sourceNode, ITypedEntity delegateMember, ITypedEntity argumentInfo)
 {
     if (!IsAssignableFrom(delegateMember.Type, argumentInfo.Type))
     {
         Error(CompilerErrorFactory.EventArgumentMustBeAMethod(sourceNode, delegateMember));
         return false;
     }
     return true;
 }
コード例 #11
0
ファイル: CompilerErrorFactory.cs プロジェクト: watsug/boo
 public static CompilerError EventArgumentMustBeAMethod(Node node, ITypedEntity eventMember)
 {
     return(Instantiate("BCE0032", node, eventMember, eventMember.Type, LanguageAmbiance.CallableKeyword));
 }
コード例 #12
0
 static public void Set <T0, T1>
     (this ComponentDataFromEntity <T1> componentDataFromEntity, ITypedEntity <T0, T1> entity, T1 componentData)
     where T0 : struct, IComponentData
     where T1 : struct, IComponentData
 => componentDataFromEntity[entity.Entity] = componentData;
コード例 #13
0
 static public T1 Get <T0, T1>
     (this ComponentDataFromEntity <T1> componentDataFromEntity, ITypedEntity <T0, T1> entity)
     where T0 : struct, IComponentData
     where T1 : struct, IComponentData
 => componentDataFromEntity[entity.Entity];
コード例 #14
0
 static public void Set <T>
     (this ComponentDataFromEntity <T> componentDataFromEntity, ITypedEntity <T> entity, T componentData)
     where T : struct, IComponentData
 => componentDataFromEntity[entity.Entity] = componentData;
コード例 #15
0
 static public T Get <T>
     (this ComponentDataFromEntity <T> componentDataFromEntity, ITypedEntity <T> entity)
     where T : struct, IComponentData
 => componentDataFromEntity[entity.Entity];
コード例 #16
0
 private static bool IsHydraDependent(ITypedEntity resource)
 {
     return(resource.Type.Any(_ => _.ToString().StartsWith(hydra.Namespace) && !HydraIndependentTypes.Contains(_)));
 }
コード例 #17
0
 public void Setup()
 {
     _entity       = new TypedEntity();
     _rdfTypeCache = new RdfTypeCache();
 }
コード例 #18
0
 internal DynamicTypedEntity(ITypedEntity entity)
     : base(entity)
 {
     Contract.Requires(entity != null);
     _entity = entity;
 }
コード例 #19
0
 /// <summary>
 /// Converts an instance of <see cref="ITypedEntity"/> to a dynamic object
 /// </summary>
 /// <param name="entity">The entity to convert.</param>
 /// <returns>An instance of <see cref="DynamicTypedEntity"/> which is a dynamic object</returns>
 public static dynamic AsDynamic(this ITypedEntity entity)
 {
     Contract.Requires(entity != null);
     return(new DynamicTypedEntity(entity));
 }
コード例 #20
0
ファイル: CompilerErrorFactory.cs プロジェクト: 0xb1dd1e/boo
 public static CompilerError EventArgumentMustBeAMethod(Node node, ITypedEntity eventMember)
 {
     return Instantiate("BCE0032", node, eventMember, eventMember.Type, LanguageAmbiance.CallableKeyword);
 }