Skip to content

Commit

Permalink
Add reflection metadata for Flyway 10.17.1
Browse files Browse the repository at this point in the history
  • Loading branch information
mhalbritter committed Sep 4, 2024
1 parent 8f5234a commit 1caa323
Show file tree
Hide file tree
Showing 18 changed files with 378 additions and 1 deletion.
4 changes: 4 additions & 0 deletions metadata/org.flywaydb/flyway-core/10.17.1/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[
"reflect-config.json",
"resource-config.json"
]
136 changes: 136 additions & 0 deletions metadata/org.flywaydb/flyway-core/10.17.1/reflect-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
[
{
"name": "org.flywaydb.core.api.migration.baseline.BaselineMigrationConfigurationExtension",
"condition": {
"typeReachable": "org.flywaydb.core.api.configuration.ClassicConfiguration"
},
"allDeclaredFields": true
},
{
"name": "org.flywaydb.core.api.migration.baseline.BaselineMigrationConfigurationExtension",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
},
"allDeclaredFields": true,
"queryAllDeclaredConstructors": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
]
},
{
"name": "getBaselineMigrationPrefix",
"parameterTypes": [
]
},
{
"name": "setBaselineMigrationPrefix",
"parameterTypes": [
"java.lang.String"
]
}
]
},
{
"name": "org.flywaydb.core.extensibility.ConfigurationExtension",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
}
},
{
"name": "org.flywaydb.core.extensibility.Plugin",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
}
},
{
"name": "org.flywaydb.core.internal.command.clean.CleanModeConfigurationExtension",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
},
"allDeclaredFields": true,
"queryAllDeclaredConstructors": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
]
},
{
"name": "getClean",
"parameterTypes": [
]
},
{
"name": "setClean",
"parameterTypes": [
"org.flywaydb.core.internal.command.clean.CleanModel"
]
}
]
},
{
"name": "org.flywaydb.core.internal.command.clean.CleanModel",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
},
"allDeclaredFields": true,
"queryAllDeclaredConstructors": true
},
{
"name": "org.flywaydb.core.internal.command.clean.SchemaModel",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
},
"allDeclaredFields": true,
"queryAllDeclaredConstructors": true
},
{
"name": "org.flywaydb.core.internal.proprietaryStubs.LicensingConfigurationExtensionStub",
"condition": {
"typeReachable": "org.flywaydb.core.api.configuration.ClassicConfiguration"
},
"allDeclaredFields": true
},
{
"name": "org.flywaydb.core.internal.publishing.PublishingConfigurationExtension",
"condition": {
"typeReachable": "org.flywaydb.core.api.configuration.ClassicConfiguration"
},
"allDeclaredFields": true
},
{
"name": "org.flywaydb.core.internal.publishing.PublishingConfigurationExtension",
"queryAllDeclaredMethods": true,
"condition": {
"typeReachable": "org.flywaydb.core.extensibility.ConfigurationExtension"
},
"allDeclaredFields": true,
"queryAllDeclaredConstructors": true,
"methods": [
{
"name": "<init>",
"parameterTypes": [
]
},
{
"name": "isPublishResult",
"parameterTypes": [
]
},
{
"name": "setPublishResult",
"parameterTypes": [
"boolean"
]
}
]
}
]
14 changes: 14 additions & 0 deletions metadata/org.flywaydb/flyway-core/10.17.1/resource-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"resources": {
"includes": [
{
"pattern": "\\Qorg/flywaydb/core/internal/version.txt\\E",
"condition": {
"typeReachable": "org.flywaydb.core.internal.license.VersionPrinter"
}
}
]
},
"bundles": [
]
}
7 changes: 7 additions & 0 deletions metadata/org.flywaydb/flyway-core/index.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
[
{
"latest": true,
"metadata-version": "10.17.1",
"module": "org.flywaydb:flyway-core",
"tested-versions": [
"10.17.1"
]
},
{
"metadata-version": "10.10.0",
"module": "org.flywaydb:flyway-core",
"tested-versions": [
Expand Down
14 changes: 13 additions & 1 deletion tests/src/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,19 @@
"name" : "org.example:library",
"versions" : [ "0.0.1" ]
} ]
}, {
},
{
"test-project-path": "org.flywaydb/flyway-core/10.17.1",
"libraries": [
{
"name": "org.flywaydb:flyway-core",
"versions": [
"10.17.1"
]
}
]
},
{
"test-project-path" : "org.flywaydb/flyway-core/10.10.0",
"libraries" : [ {
"name" : "org.flywaydb:flyway-core",
Expand Down
4 changes: 4 additions & 0 deletions tests/src/org.flywaydb/flyway-core/10.17.1/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
gradlew.bat
gradlew
gradle/
build/
12 changes: 12 additions & 0 deletions tests/src/org.flywaydb/flyway-core/10.17.1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
The metadata has been generated by executing the following script:

```bash
./generate-metadata.sh
```

The generated metadata can be found in the `build/native/agent-output/test` directory.

Afterwards, the generated metadata has been cleaned:
- Remove path to test resources
- Remove `META-INF/services` entries
- Remove H2 references
10 changes: 10 additions & 0 deletions tests/src/org.flywaydb/flyway-core/10.17.1/access-filter.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"rules": [
{
"excludeClasses": ".**"
},
{
"includeClasses": "org.flywaydb.core.**"
}
]
}
35 changes: 35 additions & 0 deletions tests/src/org.flywaydb/flyway-core/10.17.1/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright and related rights waived via CC0
*
* You should have received a copy of the CC0 legalcode along with this
* work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
plugins {
id "org.graalvm.internal.tck"
}

String libraryVersion = tck.testedLibraryVersion.get()

dependencies {
testImplementation "org.flywaydb:flyway-core:$libraryVersion"
testImplementation 'com.h2database:h2:2.1.210'
testImplementation 'org.assertj:assertj-core:3.22.0'
testImplementation 'org.awaitility:awaitility:4.2.0'
}

graalvmNative {
binaries {
test {
buildArgs.add('--no-fallback')
}
}
agent {
defaultMode = "conditional"
modes {
conditional {
userCodeFilterPath = "user-code-filter.json"
}
}
accessFilterFiles.from("access-filter.json")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env bash

./gradlew clean
./gradlew test --tests "flyway.FlywayTests" -Pagent
2 changes: 2 additions & 0 deletions tests/src/org.flywaydb/flyway-core/10.17.1/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
library.version=10.17.1
metadata.dir=org.flywaydb/flyway-core/10.17.1/
13 changes: 13 additions & 0 deletions tests/src/org.flywaydb/flyway-core/10.17.1/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
pluginManagement {
def tckPath = Objects.requireNonNullElse(
System.getenv("GVM_TCK_TCKDIR"),
"../../../../tck-build-logic"
)
includeBuild(tckPath)
}

plugins {
id "org.graalvm.internal.tck-settings" version "1.0.0-SNAPSHOT"
}

rootProject.name = 'flyway-core-tests'
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* Copyright and related rights waived via CC0
*
* You should have received a copy of the CC0 legalcode along with this
* work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
package flyway;

import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

import org.flywaydb.core.api.ResourceProvider;
import org.flywaydb.core.api.resource.LoadableResource;
import org.flywaydb.core.internal.resource.classpath.ClassPathResource;

/**
* This is needed as GraalVM doesn't support enumerating resources. It uses a hardcoded list of migrations.
*/
class FixedResourceProvider implements ResourceProvider {
private static final Set<String> MIGRATIONS;

static {
Set<String> migrations = new HashSet<>();
migrations.add("db/migration/V1__create_table.sql");
migrations.add("db/migration/V2__alter_table.sql");
MIGRATIONS = Collections.unmodifiableSet(migrations);
}

@Override
public LoadableResource getResource(String name) {
if (!MIGRATIONS.contains(name)) {
return null;
}
return new ClassPathResource(null, name, getClass().getClassLoader(), StandardCharsets.UTF_8);
}

@Override
public Collection<LoadableResource> getResources(String prefix, String[] suffixes) {
return MIGRATIONS.stream()
.map(file -> new ClassPathResource(null, file, getClass().getClassLoader(), StandardCharsets.UTF_8))
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* Copyright and related rights waived via CC0
*
* You should have received a copy of the CC0 legalcode along with this
* work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
package flyway;

import java.nio.charset.StandardCharsets;

import javax.sql.DataSource;

import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.output.MigrateResult;
import org.h2.jdbcx.JdbcDataSource;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

public class FlywayTests {

@Test
void migrate() {
DataSource dataSource = getDataSource();

Configuration configuration = new FluentConfiguration()
.dataSource(dataSource)
.encoding(StandardCharsets.UTF_8)
.resourceProvider(new FixedResourceProvider());

Flyway flyway = new Flyway(configuration);
MigrateResult migration = flyway.migrate();

assertThat(migration.success).isTrue();
assertThat(migration.migrationsExecuted).isEqualTo(2);
}

private DataSource getDataSource() {
JdbcDataSource dataSource = new JdbcDataSource();
dataSource.setUrl("jdbc:h2:mem:test");
dataSource.setUser("user");
dataSource.setPassword("password");
return dataSource;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"bundles": [],
"resources": {
"includes": [
{
"pattern": "\\Qdb/migration/V1__create_table.sql\\E"
},
{
"pattern": "\\Qdb/migration/V2__alter_table.sql\\E"
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CREATE TABLE test
(
id INT PRIMARY KEY,
title VARCHAR NOT NULL
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE test
ADD COLUMN name INT NOT NULL DEFAULT 1;
Loading

0 comments on commit 1caa323

Please sign in to comment.