profile
viewpoint
Michael Simons michael-simons @neo4j Aachen, Germany http://michael-simons.eu 👨‍👩‍👦‍👦👨🏻‍💻🚴🏻 – Father, Husband, Programmer, Biker. Java Champion, @NetBeans DreamTeam member, founder of @dailyfratze and @EuregJUG-Maas-Rhine.

michael-simons/biking2 149

This is the source code of http://biking.michael-simons.eu

michael-simons/blockchain-playground 23

Some naive blockchain implementations used for demonstrating Webflux and Micrometer

faucet-pipeline/faucet-pipeline-spring-boot-starter 12

faucet-pipeline for Spring Boot

michael-simons/DOAG2016 8

Slides and demo code for my talk at DOAG2016

michael-simons/dfx-mosaic 7

A java based mosaic generator, mostly useful for dailyfratze.de

michael-simons/datamongotest-autoconfigure-spring-boot-DEPRECATED- 6

Provides a `@DataMongoTest` for the automatic configuration of tests with Spring Boot 1.4+.

michael-simons/configurable-single-user-spring-boot-starter 4

A super simple Spring Boot Starter for Spring Boot 2.0 that brings back the configurable, single user.

PR opened neo4j/sdn-rx

Reviewers
Add FAQ entries for parameters in queries and SpEL.
+71 -2

0 comment

14 changed files

pr created time in 5 hours

create barnchneo4j/sdn-rx

branch : issue/docs-polishing

created branch time in 5 hours

issue commentneo4j/neo4j-ogm

Inconsistent serialization of Java 8 time classes between OGM and query(cypher, parameters)

I tried a couple of things to work my way into Jackson, but I found this to be the most consistent way. The way things are converted on way or the other is sadly enough super brittle and I'm sorry for that. Right now we are doing exactly what was stated in the docs before.

If you explicitly look for OffsetDateTime, not ootb.

https://neo4j.com/docs/driver-manual/current/cypher-workflow/#driver-type-mapping

If we would add support for that as well, it would internally be converted to a ZonedDateTime beforehand anyway.

Regarding the trailing 0s themselves: I understand your concerncs that the format is changed. However, both parse methods on concrete temporals as well as the explicit iso format accept both ways in the Java world and I would expect other parses doing the same.

TWiStErRob

comment created time in 5 hours

pull request commentneo4j/neo4j-ogm

Explicitly use ISO based date- and timeformatters.

I'll add a warning. 👍

michael-simons

comment created time in 5 hours

delete branch neo4j/sdn-rx

delete branch : docs

delete time in 17 hours

PR merged neo4j/sdn-rx

Docs
+4234 -738

1 comment

74 changed files

michael-simons

pr closed time in 17 hours

push eventneo4j/sdn-rx

Michael Simons

commit sha 7c35fe8db2e19b84ce1ec2996157deffa6a8cba9

GH-151 - Add documentation. Co-authored-by: Gerrit Meier <meistermeier@gmail.com>

view details

push time in 17 hours

push eventneo4j/sdn-rx

Michael Simons

commit sha 3a22de071b1d41fa4aa3f3831781416f4a0b2b19

Add docs example to build.

view details

Michael Simons

commit sha 9acd59b72c00b68ded849161165fa21e473f712b

Replace gradle with Maven build.

view details

push time in 20 hours

GollumEvent

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 97e521c2ad4d72f97eb9e3185c6dfd31975d1d1c

DATAGRAPH-1295 - Upgrade to Neo4j OGM 3.2.9.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha a6f147b87533d74b046a1dc978de29f5045859d8

DATAGRAPH-1295 - Upgrade to Neo4j OGM 3.2.9.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 3e2ed1a9714e6f233f8b3b1a3ff5ed211d76b308

DATAGRAPH-1294 - Improve Docs in regards of OpenSessionInViewFilter.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 366309dcb48b9a8a6305be40ff0025f222bc0246

DATAGRAPH-1294 - Improve Docs in regards of OpenSessionInViewFilter.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha e8e8ffda604783c7de912c234cc8e4141f68aa95

DATAGRAPH-1294 - Improve Docs in regards of OpenSessionInViewFilter.

view details

push time in a day

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 553c86519d2b74b02a9cffbeaf288e573fbb99fd

Prepare version 3.2.9.

view details

push time in a day

release neo4j/neo4j-ogm

v3.2.9

released time in a day

created tagneo4j/neo4j-ogm

tagv3.2.9

Java Object-Graph Mapping Library for Neo4j

created time in a day

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 1da7040d13e9722536bdd4499cbfed1ca80a3251

Set next development version to 3.2.10.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 9958891b88c688af6bf4d78f546144533c9ec0f6

DATAGRAPH-1296 - Fix checkstyle setup. Due to a change in Spring Data Build (#46e2b2056a52dd581801d55f8d287c04379f9212), we need to upgrade Maven Checkstyle plugin and checkstyle. Omitting the management leads to different failures with the nohttp plugin.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 8a6c0510d5a754a6b273fda0d14b9253deb30455

DATAGRAPH-1296 - Fix checkstyle setup. Due to a change in Spring Data Build (#46e2b2056a52dd581801d55f8d287c04379f9212), we cannot longer manage Maven Checkstyle plugin and checkstyle in a child project.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 5a7c25d71e3d93656d2fe8e57983bc7381687f2a

DATAGRAPH-1293 - Upgrade to Neo4j OGM 3.1.17.

view details

push time in a day

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 69e9149735f432ac3b132a92de2dc18d0e17b621

After release cleanup.

view details

push time in a day

release neo4j/neo4j-ogm

v3.1.17

released time in a day

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 273de4e8e76e719beeafc8167679e47d7e300af3

After release cleanup.

view details

push time in a day

created tagneo4j/neo4j-ogm

tagv3.1.17

Java Object-Graph Mapping Library for Neo4j

created time in a day

push eventneo4j/neo4j-ogm

Michael Simons

commit sha fd92bcbc96af4a01eb22fd11485b1a7727de54f3

After release cleanup.

view details

push time in a day

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha fb6e8b3e420a11de195cc8c10c4811bbf1b12da5

DATAGRAPH-1292 - Verify bolt connection before unwrapping the driver.

view details

push time in 2 days

push eventspring-projects/spring-data-neo4j

Michael Simons

commit sha 99d2242b757e1f9ed6df3100921c7aa186528a4b

DATAGRAPH-1292 - Verify bolt connection before unwrapping the driver.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha f1ea2763a78a8da701d28dfb34b6d0c716fa7749

Prepare version 3.2.9.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 3c3823134e229e601155150200c6a105c576a040

GH-768 - Fix test against 4.0.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha f65c8bb6b7fdaaadd240fdc64a17a15f850b0e43

GH-768 - Fix test against 4.0.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 5d01711125721346ebfb164f6aee1ac434f76e40

GH-768 - Explicitly use ISO based date- and timeformatters. Use - analogue to Jackson - explicit ISO based date- and timeformatters and not the default toString and parse methods of various temporals. Backport with tests adapted to pass in the string values as the Jackson-Setup in 3.1.x doesn’t have the JavaTimeModule ready.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 75a27acce2c9226c996c19863603366c9e175f86

GH-767 - Fix inconsistent behaviour of Driver.unwrap().

view details

Róbert Papp

commit sha 2690f98a7752798252c0855f380d9603adcc1aea

GH-765 - Return correct nullable references from Kotlin extension methods. * Add failing tests for load/quaryForObject returning null * Fix wrong signature (see called function's JavaDoc) * Fix compilation errors after changing signature (this is expected for every user) * Fix warnings in KotlinInteropTest.kt Co-authored-by: Michael Simons <michael.simons@neo4j.com>

view details

Michael Simons

commit sha cbda8e1db12a9839c9f7d2730540c0e09294318a

GH-768 - Explicitly use ISO based date- and timeformatters. Use - analogue to Jackson - explicit ISO based date- and timeformatters and not the default toString and parse methods of various temporals. This fixes #766.

view details

push time in 2 days

delete branch neo4j/neo4j-ogm

delete branch : issue/766

delete time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 2e3470417a1ae6b6625d69a7a6b5669dc264ed6e

GH-768 - Explicitly use ISO based date- and timeformatters. Use - analogue to Jackson - explicit ISO based date- and timeformatters and not the default toString and parse methods of various temporals. This fixes #766.

view details

push time in 2 days

PR merged neo4j/neo4j-ogm

Reviewers
Explicitly use ISO based date- and timeformatters.

Use - analogue to Jackson - explicit ISO based date- and timeformatters and not the default toString and parse methods of various temporals.

This fixes #766.

+259 -10

0 comment

7 changed files

michael-simons

pr closed time in 2 days

issue closedneo4j/neo4j-ogm

Inconsistent serialization of Java 8 time classes between OGM and query(cypher, parameters)

Consider the following mapped class and the two ways of creating a node. Notes:

  • Creating is the easiest example, same applies to complex custom queries that update the data.
  • Full example below, only relevant parts here.
class Data {
	@Property(name = "someTime")
	lateinit var someTime: OffsetDateTime
}

session.save(Data().apply { someTime = OffsetDateTime.parse("2024-05-01T21:18:15.650+07:00") })

session.queryForObject<Data>(
	"""CREATE (d:Data {someTime: {some_time}}) RETURN d""",
	mapOf("some_time" to OffsetDateTime.parse("2024-05-01T21:18:15.650+07:00"))
)

Expected Behavior

The actual data in the Neo4j database is (d:Data { someTime: "2024-05-01T21:18:15.650+07:00" })

Current Behavior

The actual data in the Neo4j database is (d:Data { someTime: "2024-05-01T21:18:15.65+07:00" }) Notice the missing 0 at the end of 650 milliseconds.

Possible Solution

I narrowed the problem down to how org.neo4j.ogm.config.ObjectMapperFactory#objectMapper is built to serialize the parameters passed in to Session.query* in org.neo4j.ogm.driver.ParameterConversion.DefaultParameterConversion. I think what's missing here is replacing JavaTimeModule with serializers based on org.neo4j.ogm.typeconversion.ConvertibleTypes#REGISTRY to match the behavior of full mapping.

Steps to Reproduce (for bugs)

Below are 3 tests:

  • one using full OGM mapping features
  • one doing the same query (based on logs) but passing in the parameters manually
  • a simplified example which reproduces the same issue The expectation is that they behave in exactly the same way, hence the shared verify. See AssertionFailedError comment for what goes wrong unexpectedly.
import org.junit.jupiter.api.*
import org.neo4j.harness.*
import org.neo4j.ogm.annotation.*
import org.neo4j.ogm.config.Configuration
import org.neo4j.ogm.session.*
import java.time.OffsetDateTime

class TimestampTest {

	private lateinit var testServer: ServerControls
	private lateinit var sessions: SessionFactory

	@BeforeEach fun setUp() {
		testServer = TestServerBuilders.newInProcessBuilder().newServer()
		val config = Configuration.Builder()
			.uri(testServer.boltURI().toString())
			.build()
		sessions = SessionFactory(config, TimestampTest::class.java.`package`.name)
	}

	@AfterEach fun tearDown() {
		sessions.close()
		testServer.graph().shutdown()
	}

	@NodeEntity(label = "Data")
	class Data {

		@Id
		@GeneratedValue
		var graphId: Long? = null
			private set

		@Property(name = "someTime")
		lateinit var someTime: OffsetDateTime

		override fun toString() =
			"Data[$graphId](someTime=$someTime)"
	}

	@Test fun `saved timestamp as mapping is read back as is`() {
		val someTime = OffsetDateTime.parse("2024-05-01T21:18:15.650+07:00")
		val saved = Data().apply { this.someTime = someTime }

		sessions.openSession().save(saved)

		verify(someTime, saved.graphId!!)
	}

	@Test fun `saved timestamp as parameter to batched create is read back as is`() {
		val someTime = OffsetDateTime.parse("2024-05-01T21:18:15.650+07:00")

		val result = sessions.openSession().query(
			// same query as ouput by org.neo4j.ogm.drivers.bolt.request.BoltRequest(BoltRequest.java:178)
			"""
			UNWIND {rows} AS row
			CREATE (n:`Data`)
			SET n=row.props
			RETURN row.nodeRef AS ref, id(n) AS id, {type} AS type
			""",
			mapOf(
				"type" to "node",
				"rows" to listOf(mapOf("nodeRef" to -1, "props" to mapOf("someTime" to someTime)))
			)
		)

		verify(someTime, result.queryResults().single()["id"] as Long)
	}

	// simplified repro
	@Test fun `saved timestamp as parameter to simple create is read back as is`() {
		val someTime = OffsetDateTime.parse("2024-05-01T21:18:15.650+07:00")

		val saved: Data = sessions.openSession().queryForObject(
			"""
			CREATE (d:Data {someTime: {some_time}})
			RETURN d
			""",
			mapOf(
				"some_time" to someTime
			)
		)

		verify(someTime, saved.graphId!!)
	}

	private fun verify(expected: OffsetDateTime, graphId: Long) {
		// opening a new Session to prevent shared data
		val reloaded: Data = sessions.openSession().load(graphId)
		Assertions.assertEquals(expected, reloaded.someTime)

		testServer.graph().beginTx().use {
			val dataNode = testServer.graph().getNodeById(graphId)
			// This line fails for the tests with session.query*()
			// org.opentest4j.AssertionFailedError: expected: <2024-05-01T21:18:15.650+07:00> but was: <2024-05-01T21:18:15.65+07:00>
			Assertions.assertEquals(expected.toString(), dataNode.getProperty("someTime"))
		}
	}
}

Context

How I discovered this: I wrote an integration test that verifies that the shape of the saved data is correct. So given some random data, when it is saved, then the data is the same as the generated random data. "saved" here is currently implemented with a custom query. I wrote my expectations as if it was full mapping of a NodeEntity, because I'll probably migrate the query to OGM fully later, right now I'm migrating and want feature parity quick with another system. The test was passing many times before, but I suddenly got a failure, because of the random data (yay flaky tests). It happened to generate a timestamp with milliseconds ending in 0. It was a valid failure, because it didn't match my expectation of having a fully formed ISO date with .SSS (as naturally done by OGM).

The problem described here is a problem if the database is shared between systems and they operate on the same data. I would include a developer as "system" writing manual queries expecting a well-defined format.

Your Environment

<!--- Include as many relevant details about the environment you experienced the bug in -->

  • OGM Version used: 3.2.8
  • Java Version used: 1.8.121
  • Neo4J Version used: 3.4.9
  • Bolt Driver Version used (if applicable): same as OGM
  • Operating System and Version: Windows 10
  • Link to your project: N/A, see repro for full JUnit test case

closed time in 2 days

TWiStErRob

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 92685dad707ac409bb969ca9056d50d9195f6f71

GH-754 - Use latest versions of HttpClient and Core.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 7bc5aefbf6f09ef9b287ba56d8cbb83119ec4f18

Just be extra cautious.

view details

push time in 2 days

PR opened neo4j/neo4j-ogm

Reviewers
Explicitly use ISO based date- and timeformatters.

Use - analogue to Jackson - explicit ISO based date- and timeformatters and not the default toString and parse methods of various temporals.

This fixes #766.

+254 -10

0 comment

7 changed files

pr created time in 2 days

create barnchneo4j/neo4j-ogm

branch : issue/766

created branch time in 2 days

issue commentneo4j/neo4j-ogm

Inconsistent serialization of Java 8 time classes between OGM and query(cypher, parameters)

Unrelated: In your simplified test, you're using old parameter syntax. Neo4j 4.0 doesn't support {foobar} anymore, you'll have to use $foobar.

TWiStErRob

comment created time in 2 days

issue commentneo4j/neo4j-ogm

Inconsistent serialization of Java 8 time classes between OGM and query(cypher, parameters)

Actually, that goes hand in hand with my changes in #761.

TWiStErRob

comment created time in 2 days

issue commentneo4j/neo4j-ogm

Inconsistent serialization of Java 8 time classes between OGM and query(cypher, parameters)

AFAIK the correct solution is to actually use DateTimeFormatter#ISO_LOCAL_DATE on the OGM converters as stated in the JavaDoc.

TWiStErRob

comment created time in 2 days

delete branch neo4j/neo4j-ogm

delete branch : issue/kotlin_interop

delete time in 2 days

push eventneo4j/neo4j-ogm

Róbert Papp

commit sha 1697956f0610fd6798e03eac3c89ea142a6bc725

GH-765 - Return correct nullable references from Kotlin extension methods. * Add failing tests for load/quaryForObject returning null * Fix wrong signature (see called function's JavaDoc) * Fix compilation errors after changing signature (this is expected for every user) * Fix warnings in KotlinInteropTest.kt Co-authored-by: Michael Simons <michael.simons@neo4j.com>

view details

push time in 2 days

PR merged neo4j/neo4j-ogm

Reviewers
Fix Session.load/queryForObject nullability bug kotlin

Description

Add tests and fix nullability for these methods that can and will return null.

Related Issue

See first commit for failing tests for repro.

Motivation and Context

The mentioned method explicitly declare nullability, but they're restricted in the Kotlin extension functions.

https://github.com/neo4j/neo4j-ogm/blob/0fafd9b0da25fb1571ed84b80083e0bdd8acae19/core/src/main/java/org/neo4j/ogm/session/Session.java#L489-L494

https://github.com/neo4j/neo4j-ogm/blob/0fafd9b0da25fb1571ed84b80083e0bdd8acae19/core/src/main/java/org/neo4j/ogm/session/Session.java#L496-L501

https://github.com/neo4j/neo4j-ogm/blob/0fafd9b0da25fb1571ed84b80083e0bdd8acae19/core/src/main/java/org/neo4j/ogm/session/Session.java#L609-L613

This causes a problem when used like this:

import org.neo4j.ogm.session.queryForObject

class UserService(
	private val session: Session
) {

	fun find(id: String): User =
		session.queryForObject(
			"""
			MATCH (u:User{id:{id}})
			RETURN u AS user
			""",
			mapOf(
				"id" to id
			)
		)
}

Notice that because queryForObject declared a non-null return type, I can too. But when I call find with a wrong ID, it'll blow up with:

java.lang.IllegalStateException: queryForObject(T::class.java, cypher, parameters) must not be null

This means that a simple inline utility function changes behavior of the method on the interface.

Note that T is restricted to non-null (: Any) in generics. Adding T? as return value is explicitly making this nullable, which it should be. Alternatively changing to <T: Any?> would work too, but it's not safe as seen here: image notice how specifying the type argument for the function (explicit or inferred doesn't matter), we're telling Kotlin one thing, but receiving another. See how a non-null inferred result is actually passing an assertNull test?! 😨 If it was actually using that variable, it would blow up with NPE.

The big problem here is that in Kotlin a change like this is like changing from an interface to a concrete type in Java. It's going to break practically everyone who used this method. The fix is easy though: either !! if they're sure the value they're querying is there, or add a null check (if/?./?: fallback/?: return/?: error()) to signal appropriately for their project.

How Has This Been Tested?

Added unit tests. TODO: should I add an integration test too for not found value being null?

Types of changes

<!--- What types of changes does your code introduce? Put an x in all the boxes that apply: -->

  • [ ] Bug fix (non-breaking change which fixes an issue)
  • [ ] New feature (non-breaking change which adds functionality)
  • [x] Breaking change (fix or feature that would cause existing functionality to change) It is a breaking change because every time someone used this function they assumed non-null, see context above.

Checklist:

<!--- Go over all the following points, and put an x in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->

  • [x] My code follows the code style of this project.
  • [x] My change requires a change to the documentation. As in: a big warning in Changelog and release notes.
  • [ ] I have updated the documentation accordingly.
  • [ ] I have read the CONTRIBUTING document.
  • [x] I have added tests to cover my changes.
  • [x] All new and existing tests passed.
+49 -17

3 comments

5 changed files

TWiStErRob

pr closed time in 2 days

push eventTWiStErRob/neo4j-ogm

Michael Simons

commit sha 202f1d162c82bf97f8d1916654225f86402e35d5

Fix wrong signature.

view details

Michael Simons

commit sha 1de33264fa81ea6695a10444e320e7f1bb69fc6c

Polishing.

view details

push time in 2 days

delete branch neo4j/neo4j-ogm

delete branch : issue/inconsistent-behaviour-of-unwrap

delete time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 77008f3cb70d1ce53f3ae448692bd49496baa64f

GH-767 - Fix inconsistent behaviour of Driver.unwrap().

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 1de33264fa81ea6695a10444e320e7f1bb69fc6c

Polishing.

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Michael Simons

commit sha 8f5576fa35b902c243fd569f569b161f1fa6f7b3

Fix inconsistent behaviour compared with the embedded driver.

view details

push time in 2 days

create barnchneo4j/neo4j-ogm

branch : issue/inconsistent-behaviour-of-unwrap

created branch time in 2 days

create barnchneo4j/neo4j-ogm

branch : issue/kotlin_interop

created branch time in 2 days

pull request commentneo4j/neo4j-ogm

Fix Session.load/queryForObject nullability

I think it's ok to change the unwrap extension to return possible null as well. I'll do this.

I'd rather see bolt and embedded driver behave the same I think: So either return null on the bolt driver when it's not initialised instead of initialising from that call. Gonna think about it…

TWiStErRob

comment created time in 2 days

issue commentneo4j/neo4j-ogm

Inconsistent serialization of Java 8 time classes between OGM and query(cypher, parameters)

Hi.

Do you think you would be able to use native types? I'm quite sure that will fix your problem. Also: You will have the correct type (temporal) in your database. The way stuff is done with the Jackson serialiser is awful and I will investigate nevertheless.

Btw: I'm super glad you're verifying the database with other means than OGM, this is what I would do, too.

TWiStErRob

comment created time in 2 days

push eventneo4j/neo4j-ogm

Róbert Papp

commit sha 2b6b50d455a2375de886d6fd999f6d01e02c21a8

GH-764 - Fix compilation error on Windows. * Remove Java stream() to use `Iterable<T>.map` instead * Format Java and Kotlin assertions in a similar way (using local too) * Remove unnecessary inferred generics

view details

push time in 2 days

push eventneo4j/neo4j-ogm

Róbert Papp

commit sha edb11e29afcf541b98e14176d397de4c9995f755

GH-764 - Fix compilation error on Windows. * Remove Java stream() to use `Iterable<T>.map` instead * Format Java and Kotlin assertions in a similar way (using local too) * Remove unnecessary inferred generics

view details

push time in 2 days

PR merged neo4j/neo4j-ogm

Fix compilation error on Windows improvement kotlin

Description

<details><summary>Fix this compilation error on Windows:

java.io.FileNotFoundException: P:\projects\contrib\github-neo4j-ogm\neo4j-ogm-tests\neo4j-ogm-integration-tests\target\test-classes\org\neo4j\ogm\kotlin\KotlinMetaDataTest$Kotlin's "implementation by delegation" should yield same result as Java equivalent$1.class (The filename, directory name, or volume label syntax is incorrect)

[click to expand]</summary>

[ERROR] Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:1.3.61:test-compile (test-compile) on project neo4j-ogm-integration-tests: Compilation failure
[ERROR] java.lang.IllegalStateException: Backend Internal error: Exception during code generation
[ERROR] File being compiled at position: file://P:/projects/contrib/github-neo4j-ogm/neo4j-ogm-tests/neo4j-ogm-integration-tests/src/test/kotlin/org/neo4j/ogm/kotlin/KotlinMetaDataTest.kt
[ERROR] The root cause java.io.FileNotFoundException was thrown at: java.io.FileOutputStream.open0(Native Method)
[ERROR]         at org.jetbrains.kotlin.codegen.CompilationErrorHandler.lambda$static$0(CompilationErrorHandler.java:35)
[ERROR]         at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:76)
[ERROR]         at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generatePackage(CodegenFactory.kt:96)
[ERROR]         at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generateModule(CodegenFactory.kt:67)
[ERROR]         at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.doGenerateFiles(KotlinCodegenFacade.java:47)
[ERROR]         at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:39)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:637)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:195)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:165)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:55)
[ERROR]         at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:84)
[ERROR]         at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:42)
[ERROR]         at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:104)
[ERROR]         at org.jetbrains.kotlin.maven.KotlinCompileMojoBase.execCompiler(KotlinCompileMojoBase.java:228)
[ERROR]         at org.jetbrains.kotlin.maven.K2JVMCompileMojo.execCompiler(K2JVMCompileMojo.java:237)
[ERROR]         at org.jetbrains.kotlin.maven.K2JVMCompileMojo.execCompiler(K2JVMCompileMojo.java:55)
[ERROR]         at org.jetbrains.kotlin.maven.KotlinCompileMojoBase.execute(KotlinCompileMojoBase.java:209)
[ERROR]         at org.jetbrains.kotlin.maven.K2JVMCompileMojo.execute(K2JVMCompileMojo.java:222)
[ERROR]         at org.jetbrains.kotlin.maven.KotlinTestCompileMojo.execute(KotlinTestCompileMojo.java:84)
[ERROR]         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
[ERROR]         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
[ERROR]         at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]         at org.apache.maven.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:39)
[ERROR]         at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:122)
[ERROR]         at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:61)
[ERROR] Caused by: java.io.FileNotFoundException: P:\projects\contrib\github-neo4j-ogm\neo4j-ogm-tests\neo4j-ogm-integration-tests\target\test-classes\org\neo4j\ogm\kotlin\KotlinMetaDataTest$Kotlin's "implementation by delegation" should yield same result as Java equivalent$1.class (The filename, directory name, or volume label syntax is incorrect)
[ERROR]         at java.io.FileOutputStream.open0(Native Method)
[ERROR]         at java.io.FileOutputStream.open(FileOutputStream.java:270)
[ERROR]         at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
[ERROR]         at com.intellij.openapi.util.io.FileUtil.writeToFile(FileUtil.java:1057)
[ERROR]         at com.intellij.openapi.util.io.FileUtil.writeToFile(FileUtil.java:1051)
[ERROR]         at com.intellij.openapi.util.io.FileUtil.writeToFile(FileUtil.java:1036)
[ERROR]         at org.jetbrains.kotlin.cli.common.output.OutputUtilsKt.writeAll(outputUtils.kt:32)
[ERROR]         at org.jetbrains.kotlin.cli.common.output.OutputUtilsKt.writeAllTo(outputUtils.kt:37)
[ERROR]         at org.jetbrains.kotlin.cli.common.output.OutputUtilsKt.writeAll(outputUtils.kt:41)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.writeOutput(KotlinToJVMBytecodeCompiler.kt:102)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.access$writeOutput(KotlinToJVMBytecodeCompiler.kt:82)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$createOutputFilesFlushingCallbackIfPossible$1.invoke(KotlinToJVMBytecodeCompiler.kt:111)
[ERROR]         at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$createOutputFilesFlushingCallbackIfPossible$1.invoke(KotlinToJVMBytecodeCompiler.kt:82)
[ERROR]         at org.jetbrains.kotlin.codegen.state.GenerationStateKt$GenerationStateEventCallback$1.invoke(GenerationState.kt:354)
[ERROR]         at org.jetbrains.kotlin.codegen.state.GenerationStateKt$GenerationStateEventCallback$1.invoke(GenerationState.kt:353)
[ERROR]         at org.jetbrains.kotlin.codegen.state.GenerationState.afterIndependentPart(GenerationState.kt:310)
[ERROR]         at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:69)
[ERROR]         ... 46 more

</details>

I'm guessing it only applies to Windows, otherwise CI would be failing left and right.

Related Issue

See https://discuss.kotlinlang.org/t/more-characters-allowed-for-identifiers-than-grammar-specifies-what-is-supported/2359/4. An alternative fix would've been to change " to ', but I like the method name, so I opted to fix the root cause. For some (probably historical) reason .stream() was used to generate a list of fields to be verified. This is ok, but Stream.map is a Java function and there's a Kotlin SAM conversion taking place when it is passed a { it.name } which means that an anonymous local inner class is being created. Local classes have the quirk of including not only the outer class name, but also the method name. Which means that the full .class file name includes the quotes. To alleviate this simply removing the .stream() call forces Kotlin to compile against Iterable<T>.map which is a Kotlin extension function and is inline so there's no extra class created for the lambda, just a for loop.

Motivation and Context

I tried to run mvnw verify on my computer and got a compilation error in KotlinMetaDataTest.kt.

How Has This Been Tested?

The test compiles and runs green after this change.

Types of changes

<!--- What types of changes does your code introduce? Put an x in all the boxes that apply: -->

  • [x] Bug fix (non-breaking change which fixes an issue)
  • [ ] New feature (non-breaking change which adds functionality)
  • [ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

<!--- Go over all the following points, and put an x in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->

  • [x] My code follows the code style of this project.
  • [ ] My change requires a change to the documentation.
  • [ ] I have updated the documentation accordingly.
  • [ ] I have read the CONTRIBUTING document.
  • [ ] I have added tests to cover my changes.
  • [x] All new and existing tests passed.
+5 -6

2 comments

1 changed file

TWiStErRob

pr closed time in 2 days

pull request commentmichael-simons/neo4j-migrations

Bump mockito.version from 3.2.4 to 3.3.0

@dependabot squash and merge

dependabot-preview[bot]

comment created time in 2 days

pull request commentmichael-simons/neo4j-migrations

Bump classgraph from 4.8.62 to 4.8.65

@dependabot squash and merge

dependabot-preview[bot]

comment created time in 2 days

pull request commentmichael-simons/neo4j-migrations

Bump maven-checkstyle-plugin from 3.1.0 to 3.1.1

@dependabot squash and merge

dependabot-preview[bot]

comment created time in 2 days

push eventmichael-simons/aoc

Michael J. Simons

commit sha 1611ed8477e480f980979b30d543e4845746eb0d

Remove half ready 2018/23

view details

push time in 3 days

push eventmichael-simons/aoc

Michael J. Simons

commit sha 2a26f0c1027d1d96f12a5542e6d9cc4b401ca8fe

Add 2018 day 23, pt1 in Groovy.

view details

push time in 3 days

push eventmichael-simons/aoc

Michael J. Simons

commit sha dba2ed5bda4638e6e7c542a96b0f76d8cd43241a

Polishing.

view details

push time in 4 days

push eventmichael-simons/aoc

Michael J. Simons

commit sha 9250e7ca5cee481fe814452ceb65532ab074df3d

Create solution for 2018 day 2 in Typescript.

view details

push time in 4 days

pull request commentjhipster/generator-jhipster

Add support for Neo4j based server entities.

Awesome and so for, thank's to everyone involved. Again, hat-tip to @atomfrede for working his way through our new Spring Data integration! Your feedback and test was super valuable.

We are currently writing the manual, should be finished by the end of the month, early March: https://github.com/neo4j/sdn-rx

michael-simons

comment created time in 4 days

push eventmichael-simons/die13gezeichneten

Michael J. Simons

commit sha 31672ccd3dd0156e353662294aceae373dd919ea

Update Gradle wrapper.

view details

Michael J. Simons

commit sha ae8f746accb9a6a349ac65eeeab2cdd37557487b

Update to Boot 2.2.4, use Kotlin build script.

view details

Michael J. Simons

commit sha d3d5dec9ccc75af9b29aa398d12e6ea44437927a

Polishing.

view details

Michael J. Simons

commit sha 58d2f25d5973a36b90d8b93f1285705161287e47

Add random image to one of the books.

view details

push time in 5 days

PR opened neo4j/sdn-rx

Reviewers
Docs
+4466 -684

0 comment

75 changed files

pr created time in 5 days

push eventneo4j/sdn-rx

Michael Simons

commit sha f0fea995d9474b9499ef8187be079b642bacabfc

Work on docs.

view details

push time in 5 days

push eventneo4j/neo4j-java-driver-spring-boot-starter

Michael Simons

commit sha 898d74ec6484d9fbd785c91c1850f81962210f3c

Fix README. The readme contained wrong information (title as well as versions).

view details

push time in 5 days

pull request commentneo4j/neo4j-ogm

Fix Session.load/queryForObject nullability

Good catch and bummer on my side :/ I'm gonna deal with the warning in the readme and changelog.

But I think it's much better to annoy people with a breaking change in the API in a patch release than having issues around nullability in Kotlin. WDYT, @meistermeier ?

TWiStErRob

comment created time in 5 days

pull request commentneo4j/neo4j-ogm

Fix compilation error on Windows

Thank you so much for this. This is a no-brainer to merge, but I need to ask you to sign our CLA.

https://neo4j.com/developer/cla/

Thank you!

TWiStErRob

comment created time in 5 days

push eventneo4j/sdn-rx

Gerrit Meier

commit sha 692e6c3168b99c49244aaf31d2e733128685e4fe

GH-79 - Prevent null values from getting into the parameter lists. According to https://neo4j.com/docs/cypher-manual/current/syntax/working-with-null/#cypher-null-intro the result will always be empty since null != null. Warn the user that the parameter value is not suitable for the query but don't suppress its execution. It might get called via user's input values or similar.

view details

Michael J. Simons

commit sha 5ece0e1248da816e252cf2f70914bb1e30b06d6c

GH-94 - Add support for custom Neo4j docker repository for tests. This closes #94.

view details

Michael J. Simons

commit sha de906a78a70c1c14114205b6c4a2ffa131ad7191

GH-95 - Build master and PRs via GitHub actions. This closes #95.

view details

Michael Simons

commit sha d247c391ceb4d40593e26c4f902e2dae26183367

GH-97 - Upgrade to Driver 4.0.0-beta03. This closes #97.

view details

Michael Simons

commit sha 2cb245db78d5e5255a4f0a083a22eab7e2a17987

GH-93 - Fix conversion of Enums and general collection handling. While there have been conversions ins place for enum, they didn’t work for either arrays of enums nor collections thereof. While fixing the later, it became appearent that neither converting collections of anything else than String worked. This has been fixed by moving the creation of collections into the `Neo4jConverter` itself and not as an afterthought registering in the conversion service. The additional converters are triggered to late in the process and don’t get hold of the original type descriptor anymore it seems. The type descriptor they receive doesn’t know about the element type anymore, as we cannot easily convert Spring Datas type information into Spring Frameworks type descriptor. Therefor, we stay in Spring Data land. This closes #93.

view details

Michael Simons

commit sha 19c191991b2b266c03309acdfed9f7795fc0c860

GH-100 - Upgrade to Driver 4.0.0-rc1.

view details

Gerrit Meier

commit sha 2964eb53d8f55a00258243e42573b4c62d7f6c7c

Fix some typos.

view details

Gerrit Meier

commit sha 9ca0f29c20fc2aad1005530fd7dfa828becee218

Update Java driver and driver starter. Use the GA version of the 4.0 driver and the Neo4j Java Driver Spring Boot starter.

view details

Gerrit Meier

commit sha ff1e13bded646ad29701214153d182318fd80cef

Fix failing tests due to regression.

view details

Gerrit Meier

commit sha 9dcbe2b50130d61ed6a890aae07563cc91c25759

Fix isNew strategy. Previous version assumed that id 0 is a new entity, which it is not.

view details

Gerrit Meier

commit sha ee655f8befd08130d3740425894ee63bbe43c35e

Add relationship properties mapping. Provides the functionality of defining relationship with additional property classes represented as a map structure. Also the mapping and binder functions for loading or saving data were condensed into central anonymous functions and shifted their mapping logic to the Neo4jConverter. Required behaviour changes in the existing code base: For setting the Driver bean the Neo4jMappingContext must not be an implementation of a BeanDefinitionRegistryPostProcessor because this would require setting up the driver bean very early in the start process that e.g. configuration parameters that also rely on PostProcessor logic cannot be processed before setting up the driver.

view details

Gerrit Meier

commit sha 0002289c31c3ac88be1d0e5464a0880b7b52e522

Update readme with current versions.

view details

Gerrit Meier

commit sha be3dab8d745739a03042794f80e1e30c5acc61be

GH-102 - Eagerly create related entities first. This will change the mapping behaviour to map related entities before creating the "owning" entity. As a side-effect the logic for creating the related entities got extracted to avoid code duplication.

view details

Gerrit Meier

commit sha 045542f327811ef6f56bcd7ee8c36d1571cc3ac6

Update GitHub actions.

view details

Gerrit Meier

commit sha cb5b83908795060da9baae3ce270c4e2890550fe

GH-109 - Set generated id after isNew check. An id generator in IdGeneratingBeforeBindCallback is now ordered after the AuditingBeforeBindCallback to ensure that entities with generated ids will get picked up as new.

view details

Michael Simons

commit sha 7c17b64936772a43d6158d2eabbd321b4abb4cbc

GH-112 - Add support for derived countBy and pageable methods. This add support for derived countBy and pageable methods. It removes the need for having the result processor in concrete classes (part and string based version) and allows the imperative version to execute an additional count query for building the page. This also addresses the fact that the indexes of bindable parameters are not necessarly dense, that is: They can contain special, non bindable parameters before and in between. This has been fixed with an index supplier. This fixes #112.

view details

Frederik Hahne

commit sha 66b0ece79e2373d451b5a7ecba510c78c1473323

correct string template parameter type

view details

Philipp Tölle

commit sha 0124b4e1f70a921c8c48d8153dad2bb5a5a54fc9

GH-105 - Persist relationships with properties. Refactored templates so that reactive and imperative template share code. Test extended to also include empty relationship without any inverse. Refactored tests to ensure only the relevant functionality is tested.

view details

Michael Simons

commit sha 83ac228cab016bb5f2be994276b2f025f6ed5f9f

GH-121 - Extract the PartValidator and share it between imperative and reactive.

view details

Michael Simons

commit sha e17e7fd337ba321893fef31fc2132db8b1c8b715

GH-120 - Delegate configuration of Test Harness to Driver starter. This closes #92.

view details

push time in 6 days

push eventmichael-simons/aoc

Michael Simons

commit sha 7bffd75400cf7f7a1a69ce56b5075add7f174a0d

Create solution for 2016 day 20 in Go.

view details

push time in 6 days

startedchrisvest/xxv

started time in 7 days

issue commentmichael-simons/homebrew-seabolt

Question

Thanks Heinrich for your feedback! I wasn't fast enough (Diner time). I'm gonna share this however at the company. If this formula is helpful, we should move it to our contrib or driver org.

klobuczek

comment created time in 7 days

Pull request review commentneo4j/sdn-rx

Add template methods to allow String based Cypher queries

 	 */ 	long count(Class<?> domainType); +	/**

👍

meistermeier

comment created time in 7 days

Pull request review commentneo4j/sdn-rx

Add template methods to allow String based Cypher queries

 public void deleteAll(Class<?> domainType) { 			summary.counters().relationshipsDeleted())); 	} -	private <T> ExecutableQuery createExecutableQuery(Class<T> domainType, Statement statement) {+	private <T> ExecutableQuery<T> createExecutableQuery(Class<T> domainType, Statement statement) {

👍

meistermeier

comment created time in 7 days

PR closed neo4j-drivers/seabolt

fix MacOS 10.15.2 Xcode Version 11.3 (11C29) make_release.sh failed

When :MacOS 10.15.2 Xcode Version 11.3 (11C29) ,use make_release.sh will failed:

jason@mac:~/githubcode/seabolt|1.7⚡
⇒  ./make_release.sh
-- The C compiler identification is AppleClang 11.0.0.11000033
-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building seabolt: 1.7.4-dev
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Building seabolt with TLS support
-- Using OPENSSL for TLS
-- Looking for timespec_get
-- Looking for timespec_get - found
-- Found OpenSSL: /usr/local/opt/openssl/lib/libcrypto.dylib (found version "1.1.1d")
-- Discovered OpenSSL shared libraries: /usr/local/opt/openssl/lib/libssl.dylib;/usr/local/opt/openssl/lib/libcrypto.dylib
-- Found OpenSSL: /usr/local/opt/openssl/lib/libcrypto.a (found version "1.1.1d")
-- Discovered OpenSSL static libraries: /usr/local/opt/openssl/lib/libssl.a;/usr/local/opt/openssl/lib/libcrypto.a
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- CPack generators: TGZ
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/xuyong/githubcode/seabolt/build
Scanning dependencies of target write_version_info
-- Using Git hash from git command: 875643c
[  0%] Built target write_version_info
Scanning dependencies of target seabolt-static
[  1%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/address-resolver.c.o
[  2%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/address-set.c.o
[  3%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/address.c.o
[  4%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/auth.c.o
[  5%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/buffering.c.o
[  6%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/config.c.o
[  7%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/connection.c.o
[  8%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/connector.c.o
[ 10%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/communication.c.o
[ 11%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/communication-plain.c.o
[ 12%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/communication-mock.c.o
[ 13%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/direct-pool.c.o
[ 14%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/error.c.o
[ 15%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/lifecycle.c.o
[ 16%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/log.c.o
[ 17%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/mem.c.o
[ 18%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/name.c.o
[ 20%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/no-pool.c.o
[ 21%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/packstream.c.o
[ 22%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/protocol.c.o
[ 23%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/routing-pool.c.o
[ 24%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/routing-table.c.o
[ 25%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/stats.c.o
[ 26%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/status.c.o
[ 27%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/string-builder.c.o
[ 28%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/time.c.o
[ 30%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/v1.c.o
[ 31%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/v2.c.o
[ 32%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/v3.c.o
[ 33%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/values.c.o
[ 34%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/sync-pthread.c.o
[ 35%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/communication-plain-posix.c.o
[ 36%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/time-timespec.c.o
[ 37%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/atomic-macos.c.o
[ 38%] Building C object CMakeFiles/seabolt-static.dir/src/seabolt/src/bolt/communication-secure-openssl.c.o
[ 40%] Linking C static library lib/libseabolt17.a
-- Passed /usr/local/opt/openssl/lib/libssl.a;/usr/local/opt/openssl/lib/libcrypto.a
-- Processed /usr/local/opt/openssl/lib/libssl.a /usr/local/opt/openssl/lib/libcrypto.a
[ 40%] Built target seabolt-static
Scanning dependencies of target seabolt-test
[ 41%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/main.cpp.o
[ 42%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/seabolt.cpp.o
[ 43%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-address-set.cpp.o
[ 44%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-addressing.cpp.o
[ 45%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-chunking-v1.cpp.o
[ 46%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-communication.cpp.o
[ 47%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-connection.cpp.o
[ 48%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-direct.cpp.o
[ 50%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-pooling.cpp.o
[ 51%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-values.cpp.o
[ 52%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-warden.cpp.o
[ 53%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-string-builder.cpp.o
[ 54%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-direct-pool.cpp.o
[ 55%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/test-v3.cpp.o
[ 56%] Building CXX object CMakeFiles/seabolt-test.dir/src/seabolt/tests/utils/test-context.cpp.o
[ 57%] Linking CXX executable bin/seabolt-test
[ 57%] Built target seabolt-test
Scanning dependencies of target seabolt-shared
[ 58%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/address-resolver.c.o
[ 60%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/address-set.c.o
[ 61%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/address.c.o
[ 62%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/auth.c.o
[ 63%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/buffering.c.o
[ 64%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/config.c.o
[ 65%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/connection.c.o
[ 66%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/connector.c.o
[ 67%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/communication.c.o
[ 68%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/communication-plain.c.o
[ 70%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/communication-mock.c.o
[ 71%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/direct-pool.c.o
[ 72%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/error.c.o
[ 73%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/lifecycle.c.o
[ 74%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/log.c.o
[ 75%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/mem.c.o
[ 76%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/name.c.o
[ 77%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/no-pool.c.o
[ 78%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/packstream.c.o
[ 80%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/protocol.c.o
[ 81%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/routing-pool.c.o
[ 82%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/routing-table.c.o
[ 83%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/stats.c.o
[ 84%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/status.c.o
[ 85%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/string-builder.c.o
[ 86%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/time.c.o
[ 87%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/v1.c.o
[ 88%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/v2.c.o
[ 90%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/v3.c.o
[ 91%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/values.c.o
[ 92%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/sync-pthread.c.o
[ 93%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/communication-plain-posix.c.o
[ 94%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/time-timespec.c.o
[ 95%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/atomic-macos.c.o
[ 96%] Building C object CMakeFiles/seabolt-shared.dir/src/seabolt/src/bolt/communication-secure-openssl.c.o
[ 97%] Linking C shared library lib/libseabolt17.dylib
-- Passed
-- Processed
[ 97%] Built target seabolt-shared
Scanning dependencies of target seabolt-cli
[ 98%] Building C object CMakeFiles/seabolt-cli.dir/src/seabolt-cli/src/main.c.o
/Users/xuyong/githubcode/seabolt/src/seabolt-cli/src/main.c:46:9: error: 'TIME_UTC' macro redefined [-Werror,-Wmacro-redefined]
#define TIME_UTC 0
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/time.h:197:9: note: previous definition is here
#define TIME_UTC        1       /* time elapsed since epoch */
        ^
/Users/xuyong/githubcode/seabolt/src/seabolt-cli/src/main.c:48:6: error: conflicting types for 'timespec_get'
void timespec_get(struct timespec *ts, int type)
     ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/time.h:199:5: note: previous declaration is here
int timespec_get(struct timespec *ts, int base);
    ^
2 errors generated.
make[2]: *** [CMakeFiles/seabolt-cli.dir/src/seabolt-cli/src/main.c.o] Error 1
make[1]: *** [CMakeFiles/seabolt-cli.dir/all] Error 2
make: *** [all] Error 2

The macro already define in sdk file : /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h

#define TIME_UTC	1	/* time elapsed since epoch */
__API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0), watchos(6.0))
int timespec_get(struct timespec *ts, int base);
#endif

so, remove it will fine.

+145 -106

2 comments

1 changed file

gaxuhongyu

pr closed time in 7 days

pull request commentneo4j-drivers/seabolt

fix MacOS 10.15.2 Xcode Version 11.3 (11C29) make_release.sh failed

Please have a look at our dev branch https://github.com/neo4j-drivers/seabolt/tree/1.7-dev at 9a3068f666b39f849da00aec027fe2859fbb6ba9. Thanks again for bringing this up!

gaxuhongyu

comment created time in 7 days

delete branch neo4j-drivers/seabolt

delete branch : issue/macOS10153compatv2

delete time in 7 days

push eventneo4j-drivers/seabolt

Michael Simons

commit sha 5d7bfdc07950790ea769d3fcb8bf13cda6ae6622

Define TIME_UTC and timespec_get only for macOS < 10.15.3.

view details

push time in 7 days

delete branch neo4j-drivers/seabolt

delete branch : issue/macOS10153compat

delete time in 7 days

delete branch neo4j-drivers/seabolt

delete branch : issue/linux-ci

delete time in 7 days

push eventneo4j-drivers/seabolt

Michael Simons

commit sha 9a3068f666b39f849da00aec027fe2859fbb6ba9

Install AdoptOpenJDK and don't rely on the OpenJDK 8 package to be present.

view details

push time in 7 days

PR merged neo4j-drivers/seabolt

Install AdoptOpenJDK and don't rely on the OpenJDK 8 package to be present.

The openjdk:11-jdk image has moved on and is based on Debian "buster" now, which doesn't contain OpenJDK 8. This change installs the AdoptOpenJDK version.

+10 -6

0 comment

1 changed file

michael-simons

pr closed time in 7 days

push eventneo4j-drivers/seabolt

Michael Simons

commit sha 7350464d448cdf35d7e121f0524896acbe98e82e

Add additional apt-update to get software-properties-common.

view details

push time in 7 days

PR opened neo4j-drivers/seabolt

Install AdoptOpenJDK and don't rely on the OpenJDK 8 package to be present.

The openjdk:11-jdk image has moved on and is based on Debian "buster" now, which doesn't contain OpenJDK 8. This change installs the AdoptOpenJDK version.

+9 -6

0 comment

1 changed file

pr created time in 7 days

push eventneo4j-drivers/seabolt

Mantas Vidutis

commit sha f1a36745d00534081892ff8b2093eb43b9373e52

Use consistent versions in README.

view details

push time in 7 days

create barnchneo4j-drivers/seabolt

branch : issue/linux-ci

created branch time in 7 days

pull request commentneo4j-drivers/seabolt

Inconsistent version in README

@mvid Would you please kindly sign this https://neo4j.com/developer/cla/ CLA following the instructions. Thanks.

mvid

comment created time in 7 days

issue commentmichael-simons/homebrew-seabolt

Installation not working on Mac OS X 10.15.3

Thank you! We will bring this into the official seabolt repo as well, but I'm still fighting our CI. The PR builds a currently red for reasons unrelated to the patch.

mhenrixon

comment created time in 7 days

issue commentmichael-simons/homebrew-seabolt

Installation not working on Mac OS X 10.15.3

Hey. Thanks for letting me know. I have updated my formula. Would you mind testing? Thanks.

mhenrixon

comment created time in 7 days

pull request commentneo4j-drivers/seabolt

fix MacOS 10.15.2 Xcode Version 11.3 (11C29) make_release.sh failed

Thanks for bringing this to our attention, much appreciated.

I would like to close it nevertheless in favour of #82 for two reasons: There's an Availability.h available that allows to check for specific macOS versions, which I would prefer. The other reason being that the PR changes a lot of places actually unrelated to the fix.

Could you please try out the linked PR?

gaxuhongyu

comment created time in 7 days

more