Neo4j GraphQL graphql.idl интерфейс не создан - PullRequest
0 голосов
/ 24 апреля 2018

Я тестирую плагин Neo4j GraphQL.У меня есть схема IDL, которую я передаю Neo4j:

CALL graphql.idl(
'type Address {
  id: ID!
  display_name: String
  adress_spec: AddrSpec!
  adress_from: Originator! @relation(name: "From")
  adress_sender: Originator @relation(name: "Sender")
  adress_reply_to: Originator @relation(name: "ReplyTo")
  destination_to: [Destination] @relation(name: "To")
  destination_cc: [Destination] @relation(name: "Cc")
  destination_bcc: [Destination] @relation(name: "Bcc")
}

type Originator {
  id: ID!
  origin_date: Datetime!
  originator_role: originator_role!
  message: [Message!] @relation(name: "Originator")
  address_from: Address! @relation(name: "From")
  address_sender: Address @relation(name: "Sender")
  address_reply_to: Address @relation(name: "ReplyTo")
}

type Destination {
  id: ID!
  destination_role: destination_role!
  received_date: Datetime!
  message: Message! @relation(name: "Destination")
  address_to: [Address]! @relation(name: "To")
  address_cc: [Address] @relation(name: "Cc")
  address_bcc: [Address] @relation(name: "Bcc")
}

type Message {
  id: ID!
  subject: String
  comments: String
  originator: Originator! @relation(name: "Originator")
  destinations: [Destination]! @relation(name: "HasDestination")
  referencing: [Message] @relation(name: "Referencing")
  in_reply_to: [Message] @relation(name: "InReplyTo")
  keywords: [Keyword] @relation(name: "Tags")
}

type Keyword {
  id: ID!
  keyword: String!
  messages: [Message] @relation(name: "Tags")
}
');

И я получаю описание интерфейса:

"{Address=MetaData{type='Address', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), display_name=PropertyInfo(fieldName=display_name, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={adress_spec=RelationshipInfo(fieldName=adress_spec, type=adress_spec, label=AddrSpec, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), adress_from=RelationshipInfo(fieldName=adress_from, type=From, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), adress_sender=RelationshipInfo(fieldName=adress_sender, type=Sender, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), adress_reply_to=RelationshipInfo(fieldName=adress_reply_to, type=ReplyTo, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), destination_to=RelationshipInfo(fieldName=destination_to, type=To, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), destination_cc=RelationshipInfo(fieldName=destination_cc, type=Cc, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), destination_bcc=RelationshipInfo(fieldName=destination_bcc, type=Bcc, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Originator=MetaData{type='Originator', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={origin_date=RelationshipInfo(fieldName=origin_date, type=origin_date, label=Datetime, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), originator_role=RelationshipInfo(fieldName=originator_role, type=originator_role, label=originator_role, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), message=RelationshipInfo(fieldName=message, type=Originator, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), address_from=RelationshipInfo(fieldName=address_from, type=From, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), address_sender=RelationshipInfo(fieldName=address_sender, type=Sender, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), address_reply_to=RelationshipInfo(fieldName=address_reply_to, type=ReplyTo, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Destination=MetaData{type='Destination', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={destination_role=RelationshipInfo(fieldName=destination_role, type=destination_role, label=destination_role, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), received_date=RelationshipInfo(fieldName=received_date, type=received_date, label=Datetime, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), message=RelationshipInfo(fieldName=message, type=Destination, label=Message, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), address_to=RelationshipInfo(fieldName=address_to, type=To, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), address_cc=RelationshipInfo(fieldName=address_cc, type=Cc, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), address_bcc=RelationshipInfo(fieldName=address_bcc, type=Bcc, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Message=MetaData{type='Message', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), subject=PropertyInfo(fieldName=subject, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), comments=PropertyInfo(fieldName=comments, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={originator=RelationshipInfo(fieldName=originator, type=Originator, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), destinations=RelationshipInfo(fieldName=destinations, type=HasDestination, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), referencing=RelationshipInfo(fieldName=referencing, type=Referencing, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), in_reply_to=RelationshipInfo(fieldName=in_reply_to, type=InReplyTo, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), keywords=RelationshipInfo(fieldName=keywords, type=Tags, label=Keyword, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Keyword=MetaData{type='Keyword', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), keyword=PropertyInfo(fieldName=keyword, type=String!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={messages=RelationshipInfo(fieldName=messages, type=Tags, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}}"

Однако в GraphiQL нет описания схемы и вNeo4j Я получаю сообщение об ошибке:

call graphql.schema()

Результат:

Neo.ClientError.Procedure.ProcedureCallFailed: не удалось вызвать процедуру graphql.schema: вызвано: kotlin.KotlinNullPointerException

Есть предложения?

/ Томас

Вот выдержка из журнала:

2018-04-24 18: 58: 01.395 + 0000 WARN/ graphql / kotlin.KotlinNullPointerException по адресу org.neo4j.graphql.GraphQLSchemaBuilder.newReferenceField (GraphQLSchemaBuilder.kt: 262) по адресу org.neo4j.graphql.GraphQLSchemaBuilder.addReraph(GraphQLSchemaBuilder.kt: 180) в org.neo4j.graphql.GraphQLSchemaBuilder.graphQlTypes (GraphQLSchemaBuilder.kt: 662) в org.neo4j.graphql.GraphQLSchemaBuilder.buildSchema (GraphQLSchemaBur.kt: 387) в org.neo4j.graphql.GraphQLSchemaBuilder $ Companion.buildSchema (GraphQLSchemaBuilder.kt: 338) в org.neo4j.graphql.GraphSchema.getGraphQL (GraphSchema.kt: 19) в org.neg.j4.executeQuery (GraphQLResource.kt: 80) в org.neo4j.graphql.GraphQLResource.executeOperation (GraphQLResource.kt: 47) в sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.NativeMmp.Amp.ImpOl_Amp_Amp_Amp_Amp_Amp_Amp: 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в com.sun.jersey.spi.container.JavainFactory $(JavaMethodInvokerFactory.java:60) по адресу com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider $ ResponseOutInvoker._dispatch (AbstractResourceMethodDispatchProvider.ermo.er.server.erun.server: 205)..dispatch.ResourceJavaMethodDispatcher.dispatch (ResourceJavaMethodDispatcher.java:75) вorg.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch (TransactionalRequestDispatcher.java:147) по адресу com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept (HttpMethodun.sun.ju.juj.jj).jersey.server.impl.uri.rules.ResourceClassRule.accept (ResourceClassRule.java:108) в com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept (RightHandPathRule.java:147) в com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept (RootResourceClassesRule.java:84) в com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest (WebApplicationImpl.java:1542er) в com.sun.server.impl.application.WebApplicationImpl._handleRequest (WebApplicationImpl.java:1473) в com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest (WebApplicationImpl.java:1419) в com.sun.jimpsey.ver.application.WebApplicationImpl.handleRequest (WebApplicationImpl.java:1409) в com.sun.jersey.spi.container.servlet.WebComponent.service (WebComponent.java:409)на com.sun.jersey.spi.container.servlet.ServletContainer.service (ServletContainer.java:558) на com.sun.jersey.spi.container.servlet.ServletContainer.service (ServletContainer.java:733) на javax.servlet.http.HttpServlet.service (HttpServlet.java:790) в org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:812) в org.eclipse.jetty.servlet.ServletHandlerjf: 1669) в org.neo4j.server.rest.dbms.AuthorizationEnabledFilter.doFilter (AuthorizationEnabledFilter.java:123) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (Servlet:16.o).server.rest.web.CollectUserAgentFilter.doFilter (CollectUserAgentFilter.java:69) вorg.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1652) в org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:585) в org.session.serp.SessionHandler.doHandle (SessionHandler.java:221) в org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1127) в org.eclipse.jetty.servlet.ServletHandler.doSlet:let): Servв org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:185) в org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1061) в org.eclipse.jetty.ser.handler.ScopedHandler.handle (ScopedHandler.java:141) в org.eclipse.jetty.server.handler.HandlerList.handle (HandlerList.java:52) в org.eclipse.jetty.server.handler.HandlerWrapper.handle (обработчик.java: 97) в org.eclipse.jetty.server.Server.handle (Server.java:499) в org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:311) в org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:258) в org.eclipse.jetty.io.AbstractConnection $ 2.run (AbstractConnection.java:544) в org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.j)org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run (QueuedThreadPool.java:555) на java.lang.Thread.run (Thread.java:748) 2018-04-24 19: 11: 54.733 + 0000 INFO Neo4jЗавершение работы сервера по запросу 2018-04-24 19: 11: 54.784 + 0000 INFO Остановка ... 2018-04-24 19: 11: 54.871 + 0000 INFO Остановка.

1 Ответ

0 голосов
/ 25 апреля 2018

Это работает для меня:

Я изменил

  • DateTime на String
  • роль * _ на String
  • AddressSpec to String
  • Добавлены направления

, затем

CALL graphql.idl(
'type Address {
  id: ID!
  display_name: String
  adress_spec: String!
  adress_from: Originator! @relation(name: "From")
  adress_sender: Originator @relation(name: "Sender")
  adress_reply_to: Originator @relation(name: "ReplyTo")
  destination_to: [Destination] @relation(name: "To")
  destination_cc: [Destination] @relation(name: "Cc")
  destination_bcc: [Destination] @relation(name: "Bcc")
}

type Originator {
  id: ID!
  origin_date: String!
  originator_role: String!
  message: [Message!] @relation(name: "Originator", direction:"IN")
  address_from: Address! @relation(name: "From", direction:"IN")
  address_sender: Address @relation(name: "Sender", direction:"IN")
  address_reply_to: Address @relation(name: "ReplyTo", direction:"IN")
}

type Destination {
  id: ID!
  destination_role: String!
  received_date: String!
  message: Message! @relation(name: "Destination", direction:"IN")
  address_to: [Address]! @relation(name: "To", direction:"IN")
  address_cc: [Address] @relation(name: "Cc", direction:"IN")
  address_bcc: [Address] @relation(name: "Bcc", direction:"IN")
}

type Message {
  id: ID!
  subject: String
  comments: String
  originator: Originator! @relation(name: "Originator")
  destinations: [Destination]! @relation(name: "HasDestination")
  referencing: [Message] @relation(name: "Referencing")
  in_reply_to: [Message] @relation(name: "InReplyTo")
  keywords: [Keyword] @relation(name: "Tags")
}

type Keyword {
  id: ID!
  keyword: String!
  messages: [Message] @relation(name: "Tags", direction:"IN")
}
');

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...