Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions core/pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
<!--
Copyright 2025 Google LLC

Expand All @@ -16,19 +16,15 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>0.4.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>0.4.1-SNAPSHOT</version>
<!-- {x-version-update:google-adk:current} -->
</parent>

<artifactId>google-adk</artifactId>
<name>Agent Development Kit</name>
<description>Agent Development Kit: an open-source, code-first toolkit designed to simplify building, evaluating, and deploying advanced AI agents anywhere.</description>



<dependencies>
<dependency>
<groupId>com.anthropic</groupId>
Expand Down Expand Up @@ -201,6 +197,15 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>0.0.40</version>
<!--Plugin added by RoostGPT-->
</plugin>
</plugins>
<pluginManagement>
<plugins/>
</pluginManagement>
</build>
</project>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
// ********RoostGPT********
/*
Test generated by RoostGPT for test unit-java-adk using AI Type Azure Open AI and AI Model gpt-5

ROOST_METHOD_HASH=groundingMetadata_a0a2aa3d33
ROOST_METHOD_SIG_HASH=groundingMetadata_a669e0aed0

Scenario 1: Returns Optional.empty() when grounding metadata is not set

Details:
TestName: returnsEmptyWhenNotSetByDefault
Description: Verify that groundingMetadata() returns Optional.empty() when the AutoValue_LlmResponse instance is created without setting any grounding metadata.

Execution:
Arrange: Create an AutoValue_LlmResponse instance using the available builder without setting groundingMetadata.
Act: Invoke groundingMetadata() on the instance.
Assert: Assert that the returned Optional is empty.

Validation:
Confirm that the absence of grounding metadata in the builder results in Optional.empty(). This ensures the method faithfully reflects the default state of the field and avoids unexpected non-empty values.

*/

// ********RoostGPT********
package com.google.adk.models;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;

import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.GroundingMetadata;
import java.util.Optional;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

public class AutoValueLlmResponseGroundingMetadataTest {

@Test
@Tag("boundary")
public void testReturnsEmptyWhenNotSetByDefault() {
GenerateContentResponse response = GenerateContentResponse.builder().build();
LlmResponse llmResponse = LlmResponse.builder().response(response).build();
Optional<GroundingMetadata> actual = llmResponse.groundingMetadata();
Optional<GroundingMetadata> expected = Optional.empty();
assertEquals(expected, actual);
}

@Test
@Tag("valid")
public void testGroundingMetadataPresentWhenSet() {
GroundingMetadata gm = Mockito.mock(GroundingMetadata.class);
GenerateContentResponse response = GenerateContentResponse.builder().build();
LlmResponse base = LlmResponse.builder().response(response).build();
LlmResponse withGm = base.toBuilder().groundingMetadata(Optional.of(gm)).build();
Optional<GroundingMetadata> actual = withGm.groundingMetadata();
Optional<GroundingMetadata> expected = Optional.of(gm);
assertTrue(actual.isPresent());
assertSame(gm, actual.get());
assertEquals(expected, actual);
}

@Test
@Tag("boundary")
public void testExplicitEmptyOverridesPreviousValue() {
GroundingMetadata gm = Mockito.mock(GroundingMetadata.class);
GenerateContentResponse response = GenerateContentResponse.builder().build();
LlmResponse withGm =
LlmResponse.builder().response(response).build().toBuilder()
.groundingMetadata(Optional.of(gm))
.build();
LlmResponse overridden = withGm.toBuilder().groundingMetadata(Optional.empty()).build();
Optional<GroundingMetadata> expected = Optional.empty();
Optional<GroundingMetadata> actual = overridden.groundingMetadata();
assertEquals(expected, actual);
}

@Test
@Tag("integration")
public void testCreateWithResponseReturnsEmptyGroundingMetadata() {
GenerateContentResponse response = GenerateContentResponse.builder().build();
LlmResponse llmResponse = LlmResponse.create(response);
Optional<GroundingMetadata> actual = llmResponse.groundingMetadata();
Optional<GroundingMetadata> expected = Optional.empty();
assertEquals(expected, actual);
}

@Test
@Tag("boundary")
public void testGetterIsNonNull() {
GenerateContentResponse response = GenerateContentResponse.builder().build();
LlmResponse llmResponse = LlmResponse.builder().response(response).build();
Optional<GroundingMetadata> actual = llmResponse.groundingMetadata();
assertNotNull(actual);
}

@Test
@Tag("valid")
public void testToBuilderPreservesGroundingMetadataIfNotModified() {
GroundingMetadata gm = Mockito.mock(GroundingMetadata.class);
GenerateContentResponse response = GenerateContentResponse.builder().build();
LlmResponse original =
LlmResponse.builder().response(response).build().toBuilder()
.groundingMetadata(Optional.of(gm))
.build();
LlmResponse copy = original.toBuilder().build();
Optional<GroundingMetadata> expected = Optional.of(gm);
Optional<GroundingMetadata> actual = copy.groundingMetadata();
assertTrue(actual.isPresent());
assertSame(gm, actual.get());
assertEquals(expected, actual);
}
}
79 changes: 63 additions & 16 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
<!-- Copyright 2025 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
Expand All @@ -12,20 +12,16 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>0.4.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>0.4.1-SNAPSHOT</version>
<!-- {x-version-update:google-adk:current} -->
<packaging>pom</packaging>

<name>Google Agent Development Kit Maven Parent POM</name>
<url>https://github.com/google/adk-java</url>
<description>Google Agent Development Kit (ADK) for Java</description>

<modules>
<module>core</module>
<module>dev</module>
Expand All @@ -39,12 +35,10 @@
<module>a2a</module>
<module>a2a/webservice</module>
</modules>

<properties>
<java.version>17</java.version>
<maven.compiler.release>${java.version}</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<auto-value.version>1.11.0</auto-value.version>
<spring-boot.version>3.4.1</spring-boot.version>
<otel.version>1.49.0</otel.version>
Expand Down Expand Up @@ -73,7 +67,6 @@
<maven-plugin-tools.version>3.9.0</maven-plugin-tools.version>
<httpclient5.version>5.4.3</httpclient5.version>
</properties>

<dependencyManagement>
<dependencies>
<!-- BOMs for dependency management -->
Expand Down Expand Up @@ -112,7 +105,6 @@
<type>pom</type>
<scope>import</scope>
</dependency>

<!-- Direct dependencies -->
<dependency>
<groupId>com.anthropic</groupId>
Expand Down Expand Up @@ -274,9 +266,21 @@
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.23.4</version>
<scope>test</scope>
<!--Dependency added by RoostGPT-->
</dependency>
<dependency>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-formatter</artifactId>
<version>0.0.40</version>
<!--Dependency added by RoostGPT-->
</dependency>
</dependencies>
</dependencyManagement>

<build>
<extensions>
<extension>
Expand Down Expand Up @@ -324,8 +328,7 @@
</dependencies>
<configuration>
<reportFormat>plain</reportFormat>
<statelessTestsetInfoReporter
implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter" />
<statelessTestsetInfoReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter"/>
<includes>
<include>**/*Test.java</include>
</includes>
Expand Down Expand Up @@ -469,6 +472,36 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<!--Plugin added by RoostGPT-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<outputDirectory>testReport</outputDirectory>
</configuration>
<!--Plugin added by RoostGPT-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.1</version>
<configuration>
<outputDirectory>testReport</outputDirectory>
</configuration>
<!--Plugin added by RoostGPT-->
</plugin>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>0.0.40</version>
<!--Plugin added by RoostGPT-->
</plugin>
</plugins>
</build>
<profiles>
Expand Down Expand Up @@ -528,7 +561,6 @@
</build>
</profile>
</profiles>

<licenses>
<license>
<name>The Apache License, Version 2.0</name>
Expand Down Expand Up @@ -558,4 +590,19 @@
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.23.4</version>
<scope>test</scope>
<!--Dependency added by RoostGPT-->
</dependency>
<dependency>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-formatter</artifactId>
<version>0.0.40</version>
<!--Dependency added by RoostGPT-->
</dependency>
</dependencies>
</project>