Java OSDK 앱 시작
Java 앱을 만들기 전에 Developer Console 앱과 SDK를 구성합니다. 앱이 쓸 객체와 액션을 선택하고 생성 Maven 패키지를 확인합니다. Java OSDK는 Java 17부터 21을 지원합니다.
java --version
접근 토큰과 Maven 저장소
FOUNDRY_TOKEN은 패키지를 다운로드하거나 사용자 토큰 인증에 사용할 비밀값입니다. 현재 실행 환경에 제공하고 저장소에 커밋하지 않습니다.
Developer Console Overview에서 애플리케이션 Maven URL, 생성기 Maven URL과 패키지 좌표를 확인합니다. 다음 build.gradle 예제는 실제 값을 환경으로 받아 기존 저장소 및 의존성 설정에 병합합니다.
def requiredEnvironment = { String name ->
def value = System.getenv(name)
if (value == null || value.isEmpty()) {
throw new GradleException("Required environment variable: " + name)
}
value
}
repositories {
maven {
url = uri(requiredEnvironment('APPLICATION_MAVEN_URL'))
credentials {
username = ''
password = requiredEnvironment('FOUNDRY_TOKEN')
}
}
maven {
url = uri(requiredEnvironment('GENERATOR_MAVEN_URL'))
credentials {
username = ''
password = requiredEnvironment('FOUNDRY_TOKEN')
}
}
}
dependencies {
implementation requiredEnvironment('OSDK_MAVEN_COORDINATE')
}
URL은 실제 HTTPS 주소 전체, OSDK_MAVEN_COORDINATE는 생성 패키지의 group:artifact:version 좌표입니다. 다른 빌드 도구는 같은 저장소와 의존성 및 인증을 해당 형식으로 설정합니다.
사용자 토큰 인증
아래 com.example.sdk는 가상의 생성 Java 패키지이며 실제 패키지로 바꿉니다. FOUNDRY_URL과 FOUNDRY_TOKEN은 실행 환경에 설정합니다.
import com.example.sdk.FoundryClient;
import com.palantir.osdk.api.Auth;
import com.palantir.osdk.api.UserTokenAuth;
import com.palantir.osdk.internal.api.FoundryConnectionConfig;
public final class UserClientFactory {
private UserClientFactory() {}
private static String required(String name) {
String value = System.getenv(name);
if (value == null || value.isBlank()) throw new IllegalStateException("Missing environment variable: " + name);
return value;
}
public static FoundryClient create() {
Auth auth = UserTokenAuth.builder().token(required("FOUNDRY_TOKEN")).build();
return FoundryClient.builder().auth(auth)
.connectionConfig(FoundryConnectionConfig.builder().foundryUri(required("FOUNDRY_URL")).build())
.build();
}
}
생성 SDK의 객체 메서드로 조회합니다. 예를 들어 Restaurant이 포함되었다면 client.ontology().objects().Restaurant().fetch(primaryKey)를 호출하고 Optional의 부재를 처리합니다.
서비스 사용자 OAuth
서버 서비스는 기밀 OAuth를 사용할 수 있습니다. 먼저 Backend service 앱과 서비스 사용자 권한을 구성하고 client ID 및 secret을 서버 비밀정보로 제공합니다.
import com.example.sdk.FoundryClient;
import com.palantir.osdk.api.Auth;
import com.palantir.osdk.api.auth.ConfidentialClientAuth;
import com.palantir.osdk.internal.api.FoundryConnectionConfig;
public final class ServiceClientFactory {
private ServiceClientFactory() {}
private static String required(String name) {
String value = System.getenv(name);
if (value == null || value.isBlank()) throw new IllegalStateException("Missing environment variable: " + name);
return value;
}
public static FoundryClient create() {
Auth auth = ConfidentialClientAuth.builder()
.clientId(required("CLIENT_ID")).clientSecret(required("CLIENT_SECRET")).build();
return FoundryClient.builder().auth(auth)
.connectionConfig(FoundryConnectionConfig.builder().foundryUri(required("FOUNDRY_URL")).build())
.build();
}
}
두 클래스는 각각 이름과 같은 .java 파일에 둡니다. 서비스 권한은 접속한 최종 사용자의 권한을 자동 적용하지 않으므로 노출할 데이터를 서버에서 통제합니다.
다른 환경의 온톨로지 이름
SDK를 생성한 환경과 배포 환경의 온톨로지 API 이름이 다르면 FoundryClient.builder()의 ontologyApiName(targetName)을 설정할 수 있습니다.
FoundryClient client = FoundryClient.builder()
.auth(auth)
.connectionConfig(FoundryConnectionConfig.builder().foundryUri(foundryUrl).build())
.ontologyApiName(targetOntologyApiName)
.build();
auth는 위에서 만든 인증 객체, foundryUrl과 targetOntologyApiName은 대상 환경의 실제 값입니다. 온톨로지 이름을 바꿔도 객체 및 액션의 API 이름이 자동으로 바뀌지는 않습니다.
Java OSDK 참조는 조회와 집계, 액션 및 미디어 API를 설명합니다.