Apply .gitignore

This commit is contained in:
2026-08-01 21:44:11 +05:30
parent 8449578424
commit 213f560c4a
49 changed files with 185 additions and 617 deletions

1
.gitignore vendored
View File

@@ -34,3 +34,4 @@
/cygnus-cloud-service/target /cygnus-cloud-service/target
/cygnus-installer/src/target /cygnus-installer/src/target
/cygnus-installer/target /cygnus-installer/target
/cygnus-onprem-db/target

View File

@@ -1,206 +0,0 @@
package com.cygnus.installer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
class DeploymentWriterTest {
@TempDir
Path temporaryDirectory;
@Test
void writesPortableProductDeploymentAndKeepsSecretsLocal() throws Exception {
UUID tenantId = UUID.randomUUID();
UUID installationId = UUID.randomUUID();
UUID installationUuid = UUID.randomUUID();
var validation = new ActivationDtos.ValidationResponse(
"activation-token",
OffsetDateTime.now().plusMinutes(5),
tenantId,
"matrix-client",
"FULL",
2);
var registration = new ActivationDtos.RegistrationResponse(
installationId,
installationUuid,
tenantId,
null,
"primary",
1,
"ACTIVE");
var profile = new ProductProfile(
"matrix",
"Matrix",
"matrix-onprem",
"MATRIX_IMAGE",
"matrix",
"installation.yml",
"MATRIX_INSTALLATION_CONFIG",
"/srv/matrix/config/installation.yml",
"8080:8080",
"/matrix/",
"/oauth2/token",
temporaryDirectory.resolve("unused.pem"),
temporaryDirectory.resolve("login-public.pem"),
"cygnus-login-2026-01",
List.of("region"));
Files.writeString(profile.loginEncryptionPublicKey(), "login-public-key");
var settings = new InstallerSettings(
"matrix",
URI.create("https://cloud.example.com"),
URI.create("http://host.docker.internal:8090"),
"/api/v1/installations",
"production",
temporaryDirectory,
temporaryDirectory,
"1",
new IniDocument(Map.of()));
Path output = new DeploymentWriter().write(
temporaryDirectory.resolve("output"),
installationUuid,
"primary",
"matrix-client",
validation,
registration,
new InstallationKeyService().generate(),
"encrypted.assertion.value",
settings,
profile,
"registry.example.com/matrix:1.0.0",
Map.of("region", "north"),
new RuntimeConfiguration(
"http://host.docker.internal:8090",
"jdbc:postgresql://db:5432/matrix",
"postgres",
"db-secret",
"redis",
"7901",
"redis-secret",
false,
"PT10S",
"PT30S"));
String config = Files.readString(output.resolve("config/installation.yml"));
String compose = Files.readString(output.resolve("compose.yml"));
assertThat(config)
.contains("client-id: \"matrix-client\"")
.contains("installation-id: \"" + installationId + "\"")
.contains("cloud-url: \"http://host.docker.internal:8090\"")
.contains("token-url: \"http://host.docker.internal:8090/oauth2/token\"")
.contains("region: \"north\"")
.doesNotContain("activation-token");
assertThat(compose)
.contains("matrix-onprem:")
.contains("- \"8080:8080\"")
.contains("./config:/srv/matrix/config:ro")
.contains("MATRIX_INSTALLATION_CONFIG");
assertThat(Files.readString(output.resolve(".env")))
.contains("MATRIX_IMAGE=\"registry.example.com/matrix:1.0.0\"")
.contains("MATRIX_DB_URL=\"jdbc:postgresql://db:5432/matrix\"")
.contains("REDIS_HOST=\"redis\"")
.contains("REDIS_DATABASE=\"1\"")
.contains("CYGNUS_CLOUD_BASE_URL=\"http://host.docker.internal:8090\"")
.contains("CYGNUS_TOKEN_URL=\"http://host.docker.internal:8090/oauth2/token\"")
.contains("CYGNUS_CLIENT_ID=\"matrix-client\"")
.contains("CYGNUS_INSTALLATION_ID=\"primary\"")
.contains("CYGNUS_CLIENT_ASSERTION=\"file:/srv/matrix/config/machine-assertion.jwt\"")
.contains("CYGNUS_LOGIN_PUBLIC_KEY=\"file:/srv/matrix/config/keys/login-public.pem\"");
assertThat(output.resolve("config/keys/login-public.pem"))
.hasContent("login-public-key");
assertThat(output.resolve("config/machine-assertion.jwt")).hasContent(
"encrypted.assertion.value");
assertThat(output.resolve("config/keys/client-signing-private.pem"))
.isRegularFile();
}
@Test
void refusesToOverwriteCloudServiceConfiguration() throws Exception {
Path cloudConfig = temporaryDirectory.resolve("config");
Path cloudKeys = cloudConfig.resolve("keys");
Files.createDirectories(cloudKeys);
Path assertionPublic = cloudKeys.resolve("assertion-decryption-public.pem");
Path loginPublic = cloudKeys.resolve("login-public.pem");
Files.writeString(assertionPublic, "assertion-public-key");
Files.writeString(loginPublic, "login-public-key");
var profile = new ProductProfile(
"matrix",
"Matrix",
"matrix-onprem",
"MATRIX_IMAGE",
"matrix",
"installation.yml",
"MATRIX_INSTALLATION_CONFIG",
"/srv/matrix/config/installation.yml",
"8080:8080",
"/matrix/",
"/oauth2/token",
assertionPublic,
loginPublic,
"cygnus-login-2026-01",
List.of());
assertThatThrownBy(() -> new DeploymentWriter().write(
temporaryDirectory,
UUID.randomUUID(),
"primary",
"matrix-client",
new ActivationDtos.ValidationResponse(
"activation-token",
OffsetDateTime.now().plusMinutes(5),
UUID.randomUUID(),
"matrix-client",
"FULL",
2),
new ActivationDtos.RegistrationResponse(
UUID.randomUUID(),
UUID.randomUUID(),
UUID.randomUUID(),
null,
"primary",
1,
"ACTIVE"),
new InstallationKeyService().generate(),
"assertion",
new InstallerSettings(
"matrix",
URI.create("https://cloud.example.com"),
URI.create("https://cloud.example.com"),
"/api/v1/installations",
"production",
temporaryDirectory,
temporaryDirectory,
"1",
new IniDocument(Map.of())),
profile,
"registry.example.com/matrix:1.0.0",
Map.of(),
new RuntimeConfiguration(
"https://cloud.example.com",
"jdbc:postgresql://db/matrix",
"postgres",
"secret",
"redis",
"7901",
"secret",
false,
"PT10S",
"PT30S")))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("cloud-service configuration");
assertThat(assertionPublic).hasContent("assertion-public-key");
assertThat(loginPublic).hasContent("login-public-key");
}
}

View File

@@ -1,34 +0,0 @@
package com.cygnus.installer;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.time.Duration;
import java.util.List;
import org.junit.jupiter.api.Test;
class DockerPrerequisiteCheckerTest {
@Test
void blocksInstallationWhenDockerIsUnavailable() {
CommandExecutor executor = executorReturning(new CommandResult(127, "not found"));
DockerPrerequisiteChecker checker = new DockerPrerequisiteChecker(executor);
assertThrows(PrerequisiteException.class, checker::verify);
}
@Test
void acceptsDockerEngineAndComposeV2() {
CommandExecutor executor = executorReturning(new CommandResult(0, "ok"));
DockerPrerequisiteChecker checker = new DockerPrerequisiteChecker(executor);
assertDoesNotThrow(checker::verify);
}
private CommandExecutor executorReturning(CommandResult result) {
return new CommandExecutor() {
@Override
public CommandResult execute(List<String> command, Duration timeout) {
return result;
}
};
}
}

View File

@@ -1,103 +0,0 @@
package com.cygnus.installer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.nio.file.Files;
import java.nio.file.Path;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
class IniConfigurationLoaderTest {
@TempDir
Path temporaryDirectory;
private final IniConfigurationLoader loader = new IniConfigurationLoader();
@Test
void loadsAndNormalizesInstallerSettings() throws Exception {
Path ini = write("""
[installer]
product=matrix
cloud_service_url=https://cloud.example.com/
container_cloud_service_url=http://host.docker.internal:8090/
installer_api_base_path=/api/v1/installations/
environment=production
""");
InstallerSettings settings = loader.load(ini, "1.2.3");
assertThat(settings.product()).isEqualTo("matrix");
assertThat(settings.cloudServiceUrl().toString())
.isEqualTo("https://cloud.example.com");
assertThat(settings.containerCloudServiceUrl().toString())
.isEqualTo("http://host.docker.internal:8090");
assertThat(settings.validationPath())
.isEqualTo("/api/v1/installations/activation/validate");
assertThat(settings.registrationPath())
.isEqualTo("/api/v1/installations/register");
assertThat(settings.defaultOutputDirectory())
.isEqualTo(Path.of("./matrix-installation"));
}
@Test
void defaultsContainerCloudUrlToCanonicalCloudUrl() throws Exception {
Path ini = write("""
[installer]
product=matrix
cloud_service_url=https://cloud.example.com/
installer_api_base_path=/api/v1/installations
environment=production
""");
InstallerSettings settings = loader.load(ini, "1.2.3");
assertThat(settings.containerCloudServiceUrl())
.isEqualTo(settings.cloudServiceUrl());
}
@Test
void rejectsUnknownProduct() throws Exception {
Path ini = write("""
[installer]
product=unknown
cloud_service_url=https://cloud.example.com
installer_api_base_path=/api/v1/installations
environment=production
""");
assertThatThrownBy(() -> loader.load(ini, "1"))
.isInstanceOf(InstallerConfigurationException.class)
.hasMessageContaining("Unsupported product");
}
@Test
void rejectsInvalidCloudUrlAndApiPath() throws Exception {
Path invalidUrl = write("""
[installer]
product=cygnus
cloud_service_url=cloud.example.com
installer_api_base_path=/api/v1/installations
environment=production
""");
assertThatThrownBy(() -> loader.load(invalidUrl, "1"))
.hasMessageContaining("absolute http(s) URL");
Path invalidPath = write("""
[installer]
product=cygnus
cloud_service_url=https://cloud.example.com
installer_api_base_path=api/v1/installations
environment=production
""");
assertThatThrownBy(() -> loader.load(invalidPath, "1"))
.hasMessageContaining("absolute safe URL path");
}
private Path write(String content) throws Exception {
Path path = temporaryDirectory.resolve("installer-" + System.nanoTime() + ".ini");
Files.writeString(path, content);
return path;
}
}

View File

@@ -1,35 +0,0 @@
package com.cygnus.installer;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.nio.file.Path;
import java.util.Map;
import org.junit.jupiter.api.Test;
class InstallationServiceTest {
@Test
void rejectsIncompleteRequestBeforeCallingInfrastructure() {
InstallationService service =
new InstallationService(
null, null, null, null, null, null, null, null, null);
assertThatThrownBy(() -> service.install(
new InstallationRequest(
"",
"",
"",
"",
"",
"",
"",
"",
"",
Path.of("."),
Map.of(),
null),
(percentage, message) -> {}))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("Client code is required");
}
}

View File

@@ -1,60 +0,0 @@
package com.cygnus.installer;
import static org.assertj.core.api.Assertions.assertThat;
import java.nio.file.Files;
import java.nio.file.Path;
import java.security.KeyPairGenerator;
import java.util.Base64;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
class MachineAssertionServiceTest {
@TempDir
Path temporaryDirectory;
@Test
void generatesEncryptedAssertionUsingOnlyCloudPublicKey() throws Exception {
var generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048);
var cloudKeys = generator.generateKeyPair();
Path cloudPublicKey = temporaryDirectory.resolve("cloud-public.pem");
Files.writeString(cloudPublicKey, pem(
"PUBLIC KEY", cloudKeys.getPublic().getEncoded()));
ProductProfile profile = new ProductProfile(
"matrix",
"Matrix",
"matrix-onprem",
"MATRIX_IMAGE",
"matrix",
"installation.yml",
"MATRIX_INSTALLATION_CONFIG",
"/opt/matrix/config/installation.yml",
"8080:8080",
"/matrix/",
"/oauth2/token",
cloudPublicKey,
cloudPublicKey,
"cygnus-login-2026-01",
List.of());
String assertion = new MachineAssertionService().generate(
"matrix-client",
"primary",
"https://cloud.example.com/oauth2/token",
new InstallationKeyService().generate(),
profile);
assertThat(assertion.split("\\.")).hasSize(5);
assertThat(assertion).doesNotContain("matrix-client");
}
private String pem(String type, byte[] encoded) {
return "-----BEGIN " + type + "-----\n"
+ Base64.getMimeEncoder(64, new byte[] {'\n'})
.encodeToString(encoded)
+ "\n-----END " + type + "-----\n";
}
}

View File

@@ -1,56 +0,0 @@
package com.cygnus.installer;
import static org.assertj.core.api.Assertions.assertThat;
import java.nio.file.Files;
import java.nio.file.Path;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
class ProductProfileRegistryTest {
@TempDir
Path temporaryDirectory;
@Test
void appliesProductProfileOverridesWithoutInstallerBranching() throws Exception {
Path publicKey = temporaryDirectory.resolve("cloud.pem");
Files.writeString(publicKey, "test");
Path loginPublicKey = temporaryDirectory.resolve("login.pem");
Files.writeString(loginPublicKey, "test-login");
Path ini = temporaryDirectory.resolve("installer.ini");
Files.writeString(ini, """
[installer]
product=cygnus
cloud_service_url=https://cloud.example.com
installer_api_base_path=/api/v1/installations
environment=production
[profile.cygnus]
display_name=Cygnus
assertion_encryption_public_key=cloud.pem
login_encryption_public_key=login.pem
login_key_id=cygnus-login-2026-01
service_name=custom-cygnus
image_environment_variable=CYGNUS_IMAGE
configuration_root=cygnus
configuration_file_name=installation.yml
installation_config_environment_variable=CYGNUS_INSTALLATION_CONFIG
container_configuration_path=/opt/cygnus/config/installation.yml
port_mapping=8080:8080
service_path=/matrix/
token_path=/oauth2/token
optional_fields=region,site_code
""");
InstallerSettings settings = new IniConfigurationLoader().load(ini, "1");
ProductProfile profile = new ProductProfileRegistry().resolve(settings);
assertThat(profile.displayName()).isEqualTo("Cygnus");
assertThat(profile.serviceName()).isEqualTo("custom-cygnus");
assertThat(profile.optionalInstallationFields())
.containsExactly("region", "site_code");
assertThat(profile.assertionEncryptionPublicKey()).isEqualTo(publicKey);
assertThat(profile.loginEncryptionPublicKey()).isEqualTo(loginPublicKey);
}
}

View File

@@ -8,5 +8,6 @@ import lombok.Setter;
public class Option { public class Option {
private Object value; private Object value;
private String label; private String label;
private String description;
private String group; private String group;
} }

View File

@@ -37,3 +37,25 @@ List<Operation> rows = dbFunctions.query(
Large reports can use `stream(...)` so rows are consumed without retaining the Large reports can use `stream(...)` so rows are consumed without retaining the
whole result in memory. PostgreSQL cursor fetching is enabled by running reads with whole result in memory. PostgreSQL cursor fetching is enabled by running reads with
auto-commit disabled and the configured fetch size. auto-commit disabled and the configured fetch size.
## Dynamic multi-value parameters
Use a typed array parameter with PostgreSQL `ANY` when the number of values is
not known in advance. The cached query remains parameterized:
```sql
select ... where op.description = any(?)
```
```java
dbExecutor.query(
queryId,
new Object[] { portfolioId, SqlArrayParameter.text(descriptions) },
Option.class);
```
Factories are available for text, integer, smallint, bigint, numeric, boolean,
UUID, date, timestamp and timestamp-with-time-zone arrays. Use
`SqlArrayParameter.of(postgresType, values)` for another PostgreSQL scalar or
enum type. An empty collection is valid and causes `= ANY(empty_array)` to
match no rows.

View File

@@ -1,5 +1,6 @@
package com.cygnus.db; package com.cygnus.db;
import java.sql.Array;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
@@ -18,7 +19,11 @@ final class ParameterBinder {
} }
private void bind(PreparedStatement statement, int index, Object value) throws SQLException { private void bind(PreparedStatement statement, int index, Object value) throws SQLException {
if (value instanceof SqlParameter parameter) { if (value instanceof SqlArrayParameter parameter) {
Array array = statement.getConnection().createArrayOf(
parameter.elementType(), parameter.values());
statement.setArray(index, array);
} else if (value instanceof SqlParameter parameter) {
if (parameter.value() == null) statement.setNull(index, parameter.sqlType()); if (parameter.value() == null) statement.setNull(index, parameter.sqlType());
else statement.setObject(index, parameter.value(), parameter.sqlType()); else statement.setObject(index, parameter.value(), parameter.sqlType());
} else if (value == null) { } else if (value == null) {

View File

@@ -0,0 +1,57 @@
package com.cygnus.db;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collection;
import java.util.Objects;
import java.util.UUID;
import java.util.regex.Pattern;
/**
* A typed SQL array parameter for PostgreSQL expressions such as
* {@code column_name = ANY(?)}.
*/
public record SqlArrayParameter(String elementType, Object[] values) {
private static final Pattern TYPE_NAME = Pattern.compile(
"[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)?");
public SqlArrayParameter {
elementType = Objects.requireNonNull(elementType, "elementType").trim();
if (!TYPE_NAME.matcher(elementType).matches()) {
throw new IllegalArgumentException("Invalid SQL array element type: " + elementType);
}
values = Objects.requireNonNull(values, "values").clone();
}
@Override
public Object[] values() {
return values.clone();
}
public static SqlArrayParameter of(String elementType, Object... values) {
return new SqlArrayParameter(elementType, values);
}
public static SqlArrayParameter of(String elementType, Collection<?> values) {
Objects.requireNonNull(values, "values");
return new SqlArrayParameter(elementType, values.toArray());
}
public static SqlArrayParameter text(String... values) { return of("text", (Object[]) values); }
public static SqlArrayParameter text(Collection<String> values) { return of("text", values); }
public static SqlArrayParameter integer(Integer... values) { return of("integer", (Object[]) values); }
public static SqlArrayParameter smallint(Short... values) { return of("smallint", (Object[]) values); }
public static SqlArrayParameter bigint(Long... values) { return of("bigint", (Object[]) values); }
public static SqlArrayParameter numeric(BigDecimal... values) { return of("numeric", (Object[]) values); }
public static SqlArrayParameter bool(Boolean... values) { return of("boolean", (Object[]) values); }
public static SqlArrayParameter uuid(UUID... values) { return of("uuid", (Object[]) values); }
public static SqlArrayParameter date(LocalDate... values) { return of("date", (Object[]) values); }
public static SqlArrayParameter timestamp(LocalDateTime... values) {
return of("timestamp", (Object[]) values);
}
public static SqlArrayParameter timestampWithTimeZone(OffsetDateTime... values) {
return of("timestamptz", (Object[]) values);
}
}

View File

@@ -0,0 +1,98 @@
package com.cygnus.db;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertSame;
import java.lang.reflect.Proxy;
import java.sql.Array;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import org.junit.jupiter.api.Test;
class ParameterBinderTest {
@Test
void bindsDynamicTextCollectionAsOneTypedSqlArray() throws Exception {
BindingCapture capture = new BindingCapture();
new ParameterBinder().bind(capture.statement(), new Object[] {
SqlArrayParameter.text(List.of("CATEGORY", "PRODUCT"))
});
assertEquals("text", capture.elementType.get());
assertArrayEquals(new Object[] {"CATEGORY", "PRODUCT"}, capture.values.get());
assertEquals(1, capture.parameterIndex.get());
}
@Test
void supportsUuidAndEmptyArrays() throws Exception {
UUID id = UUID.randomUUID();
BindingCapture uuidCapture = new BindingCapture();
new ParameterBinder().bind(uuidCapture.statement(),
new Object[] {SqlArrayParameter.uuid(id)});
assertEquals("uuid", uuidCapture.elementType.get());
assertArrayEquals(new Object[] {id}, uuidCapture.values.get());
BindingCapture emptyCapture = new BindingCapture();
new ParameterBinder().bind(emptyCapture.statement(),
new Object[] {SqlArrayParameter.integer()});
assertEquals("integer", emptyCapture.elementType.get());
assertArrayEquals(new Object[0], emptyCapture.values.get());
}
private static final class BindingCapture {
private final AtomicReference<String> elementType = new AtomicReference<>();
private final AtomicReference<Object[]> values = new AtomicReference<>();
private final AtomicInteger parameterIndex = new AtomicInteger();
private final Array sqlArray = proxy(Array.class, (method, args) -> defaultValue(method.getReturnType()));
PreparedStatement statement() {
Connection connection = proxy(Connection.class, (method, args) -> {
if (method.getName().equals("createArrayOf")) {
elementType.set((String) args[0]);
values.set(((Object[]) args[1]).clone());
return sqlArray;
}
return defaultValue(method.getReturnType());
});
return proxy(PreparedStatement.class, (method, args) -> {
if (method.getName().equals("getConnection")) return connection;
if (method.getName().equals("setArray")) {
parameterIndex.set((Integer) args[0]);
assertSame(sqlArray, args[1]);
return null;
}
return defaultValue(method.getReturnType());
});
}
}
@SuppressWarnings("unchecked")
private static <T> T proxy(Class<T> type, Handler handler) {
return (T) Proxy.newProxyInstance(type.getClassLoader(), new Class<?>[] {type},
(proxy, method, args) -> handler.invoke(method, args));
}
private static Object defaultValue(Class<?> type) {
if (!type.isPrimitive()) return null;
if (type == boolean.class) return false;
if (type == byte.class) return (byte) 0;
if (type == short.class) return (short) 0;
if (type == int.class) return 0;
if (type == long.class) return 0L;
if (type == float.class) return 0F;
if (type == double.class) return 0D;
if (type == char.class) return '\0';
return null;
}
@FunctionalInterface
private interface Handler {
Object invoke(java.lang.reflect.Method method, Object[] args) throws Throwable;
}
}

View File

@@ -1,3 +0,0 @@
artifactId=cygnus-onprem-db
groupId=com.cygnus
version=1.0.0-SNAPSHOT

View File

@@ -1,25 +0,0 @@
com/cygnus/db/RowConsumer.class
com/cygnus/db/RowView.class
com/cygnus/db/QueryDefinitionException.class
com/cygnus/db/QueryDefinitionProvider.class
com/cygnus/db/CygnusDbExecutor.class
com/cygnus/db/SqlParameter.class
com/cygnus/db/ObjectRowMapperFactory$RecordMetadata.class
com/cygnus/db/JdbcCygnusDbExecutor.class
com/cygnus/db/JdbcCygnusDbExecutor$SqlWork.class
com/cygnus/db/QueryDefinition.class
com/cygnus/db/QueryType.class
com/cygnus/db/ObjectRowMapperFactory$TypeMetadata.class
com/cygnus/db/TransactionCallback.class
com/cygnus/db/RowMapper.class
com/cygnus/db/ObjectRowMapperFactory.class
com/cygnus/db/DatabaseExecutionException.class
com/cygnus/db/ObjectRowMapperFactory$FieldBinding.class
com/cygnus/db/TransactionOperations.class
com/cygnus/db/ValueConverter.class
com/cygnus/db/ExecutorOptions.class
com/cygnus/db/DbResult.class
com/cygnus/db/ParameterBinder.class
com/cygnus/db/ObjectRowMapperFactory$BeanMetadata.class
com/cygnus/db/JdbcCygnusDbExecutor$TransactionOperationsImpl.class
com/cygnus/db/ImmutableRowView.class

View File

@@ -1,19 +0,0 @@
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/CygnusDbExecutor.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/DatabaseExecutionException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/DbResult.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/ExecutorOptions.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/ImmutableRowView.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/JdbcCygnusDbExecutor.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/ObjectRowMapperFactory.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/ParameterBinder.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/QueryDefinition.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/QueryDefinitionException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/QueryDefinitionProvider.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/QueryType.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/RowConsumer.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/RowMapper.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/RowView.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/SqlParameter.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/TransactionCallback.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/TransactionOperations.java
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/main/java/com/cygnus/db/ValueConverter.java

View File

@@ -1,2 +0,0 @@
com/cygnus/db/JdbcCygnusDbExecutorTest.class
com/cygnus/db/JdbcCygnusDbExecutorTest$Person.class

View File

@@ -1 +0,0 @@
/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/src/test/java/com/cygnus/db/JdbcCygnusDbExecutorTest.java

View File

@@ -1,68 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" version="3.0.2" name="com.cygnus.db.JdbcCygnusDbExecutorTest" time="0.124" tests="5" errors="0" skipped="0" failures="0">
<properties>
<property name="java.specification.version" value="25"/>
<property name="sun.jnu.encoding" value="UTF-8"/>
<property name="java.class.path" value="/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/test-classes:/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/classes:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter/5.12.2/junit-jupiter-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.12.2/junit-jupiter-api-5.12.2.jar:/Users/maddy/.m2/repository/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-commons/1.12.2/junit-platform-commons-1.12.2.jar:/Users/maddy/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.12.2/junit-jupiter-params-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.12.2/junit-jupiter-engine-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-engine/1.12.2/junit-platform-engine-1.12.2.jar:/Users/maddy/.m2/repository/com/h2database/h2/2.3.232/h2-2.3.232.jar:"/>
<property name="java.vm.vendor" value="Homebrew"/>
<property name="sun.arch.data.model" value="64"/>
<property name="java.vendor.url" value="https://github.com/Homebrew/homebrew-core/issues"/>
<property name="user.timezone" value="Asia/Kolkata"/>
<property name="os.name" value="Mac OS X"/>
<property name="java.vm.specification.version" value="25"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="user.country" value="US"/>
<property name="sun.boot.library.path" value="/opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home/lib"/>
<property name="sun.java.command" value="/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/surefire/surefirebooter-20260801204254090_6.jar /Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/surefire 2026-08-01T20-42-53_787-jvmRun1 surefire-20260801204254090_4tmp surefire_1-20260801204254090_5tmp"/>
<property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="jdk.debug" value="release"/>
<property name="surefire.test.class.path" value="/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/test-classes:/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/classes:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter/5.12.2/junit-jupiter-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.12.2/junit-jupiter-api-5.12.2.jar:/Users/maddy/.m2/repository/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-commons/1.12.2/junit-platform-commons-1.12.2.jar:/Users/maddy/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.12.2/junit-jupiter-params-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.12.2/junit-jupiter-engine-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-engine/1.12.2/junit-platform-engine-1.12.2.jar:/Users/maddy/.m2/repository/com/h2database/h2/2.3.232/h2-2.3.232.jar:"/>
<property name="sun.cpu.endian" value="little"/>
<property name="user.home" value="/Users/maddy"/>
<property name="user.language" value="en"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="java.version.date" value="2026-01-20"/>
<property name="java.home" value="/opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home"/>
<property name="file.separator" value="/"/>
<property name="basedir" value="/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db"/>
<property name="java.vm.compressedOopsMode" value="Zero based"/>
<property name="line.separator" value="&#10;"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="apple.awt.application.name" value="ForkedBooter"/>
<property name="surefire.real.class.path" value="/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db/target/surefire/surefirebooter-20260801204254090_6.jar"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="java.runtime.version" value="25.0.2"/>
<property name="user.name" value="maddy"/>
<property name="stdout.encoding" value="UTF-8"/>
<property name="path.separator" value=":"/>
<property name="os.version" value="26.5.2"/>
<property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
<property name="file.encoding" value="UTF-8"/>
<property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
<property name="java.vendor.version" value="Homebrew"/>
<property name="localRepository" value="/Users/maddy/.m2/repository"/>
<property name="java.vendor.url.bug" value="https://github.com/Homebrew/homebrew-core/issues"/>
<property name="java.io.tmpdir" value="/var/folders/1l/36214rdn79755j30lcnmgsqh0000gn/T/"/>
<property name="java.version" value="25.0.2"/>
<property name="user.dir" value="/Users/maddy/Projects/cygnus/matrix/cygnus-onprem-db"/>
<property name="os.arch" value="aarch64"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="native.encoding" value="UTF-8"/>
<property name="java.library.path" value="/Users/maddy/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/>
<property name="java.vm.info" value="mixed mode, sharing"/>
<property name="stderr.encoding" value="UTF-8"/>
<property name="java.vendor" value="Homebrew"/>
<property name="java.vm.version" value="25.0.2"/>
<property name="stdin.encoding" value="UTF-8"/>
<property name="sun.io.unicode.encoding" value="UnicodeBig"/>
<property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="java.class.version" value="69.0"/>
</properties>
<testcase name="executesProcedureAndStreamsWithoutMaterializingRows" classname="com.cygnus.db.JdbcCygnusDbExecutorTest" time="0.095"/>
<testcase name="executesInsertUpdateDeleteAndGeneratedKeys" classname="com.cygnus.db.JdbcCygnusDbExecutorTest" time="0.004"/>
<testcase name="mapsSelectDirectlyToRecordsAndDynamicRows" classname="com.cygnus.db.JdbcCygnusDbExecutorTest" time="0.009"/>
<testcase name="rollsBackFailedTransactions" classname="com.cygnus.db.JdbcCygnusDbExecutorTest" time="0.003"/>
<testcase name="rejectsLegacyStringReplacementQueries" classname="com.cygnus.db.JdbcCygnusDbExecutorTest" time="0.002"/>
</testsuite>

View File

@@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: com.cygnus.db.JdbcCygnusDbExecutorTest
-------------------------------------------------------------------------------
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.124 s -- in com.cygnus.db.JdbcCygnusDbExecutorTest