-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pdlKlient varianter som setter forskjellige headere (#806)
* token X -> setter ikke sustem token * fix test * test begge token typene * test begge token typene * test begge token typene * test begge token typene * abstract pdl superclass med forskjellig subklasser med hver sitt filter * fix test * inline exceptions * visibility Co-authored-by: Jan-Olav Eide <jan-olav.eide@nav.no>
- Loading branch information
1 parent
a5ddafc
commit d22e09c
Showing
22 changed files
with
379 additions
and
235 deletions.
There are no files selected for viewing
118 changes: 118 additions & 0 deletions
118
...dl-klient/src/main/java/no/nav/vedtak/felles/integrasjon/pdl/AbstractJerseyPdlKlient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
package no.nav.vedtak.felles.integrasjon.pdl; | ||
|
||
import static javax.ws.rs.client.Entity.json; | ||
import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; | ||
import static org.apache.http.HttpStatus.SC_NOT_FOUND; | ||
|
||
import java.net.URI; | ||
import java.util.List; | ||
|
||
import javax.ws.rs.ProcessingException; | ||
import javax.ws.rs.client.ClientRequestFilter; | ||
|
||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLOperationRequest; | ||
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequest; | ||
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; | ||
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResult; | ||
|
||
import no.nav.pdl.GeografiskTilknytning; | ||
import no.nav.pdl.GeografiskTilknytningResponseProjection; | ||
import no.nav.pdl.HentGeografiskTilknytningQueryRequest; | ||
import no.nav.pdl.HentGeografiskTilknytningQueryResponse; | ||
import no.nav.pdl.HentIdenterBolkQueryRequest; | ||
import no.nav.pdl.HentIdenterBolkQueryResponse; | ||
import no.nav.pdl.HentIdenterBolkResult; | ||
import no.nav.pdl.HentIdenterBolkResultResponseProjection; | ||
import no.nav.pdl.HentIdenterQueryRequest; | ||
import no.nav.pdl.HentIdenterQueryResponse; | ||
import no.nav.pdl.HentPersonQueryRequest; | ||
import no.nav.pdl.HentPersonQueryResponse; | ||
import no.nav.pdl.Identliste; | ||
import no.nav.pdl.IdentlisteResponseProjection; | ||
import no.nav.pdl.Person; | ||
import no.nav.pdl.PersonResponseProjection; | ||
import no.nav.vedtak.exception.VLException; | ||
import no.nav.vedtak.felles.integrasjon.graphql.GraphQLErrorHandler; | ||
import no.nav.vedtak.felles.integrasjon.rest.jersey.AbstractJerseyRestClient; | ||
|
||
public abstract class AbstractJerseyPdlKlient extends AbstractJerseyRestClient implements Pdl { | ||
|
||
private static final Logger LOG = LoggerFactory.getLogger(AbstractJerseyPdlKlient.class); | ||
static final String HTTP_PDL_API_DEFAULT_GRAPHQL = "http://pdl-api.pdl/graphql"; | ||
public static final String FOR = "FOR"; | ||
|
||
private final URI endpoint; | ||
private final GraphQLErrorHandler errorHandler; | ||
|
||
AbstractJerseyPdlKlient(URI endpoint, ClientRequestFilter... filters) { | ||
this(endpoint, new PdlDefaultErrorHandler(), filters); | ||
} | ||
|
||
AbstractJerseyPdlKlient(URI endpoint, GraphQLErrorHandler errorHandler, ClientRequestFilter... filters) { | ||
super(filters); | ||
this.endpoint = endpoint; | ||
this.errorHandler = errorHandler; | ||
LOG.info("Klient konstruert"); | ||
} | ||
|
||
@Override | ||
public GeografiskTilknytning hentGT(HentGeografiskTilknytningQueryRequest q, GeografiskTilknytningResponseProjection p) { | ||
return query(q, p, HentGeografiskTilknytningQueryResponse.class).hentGeografiskTilknytning(); | ||
} | ||
|
||
@Override | ||
public Person hentPerson(HentPersonQueryRequest q, PersonResponseProjection p) { | ||
return query(q, p, HentPersonQueryResponse.class).hentPerson(); | ||
} | ||
|
||
@Override | ||
public Person hentPerson(HentPersonQueryRequest q, PersonResponseProjection p, boolean ignoreNotFound) { | ||
try { | ||
return hentPerson(q, p); | ||
} catch (PdlException e) { | ||
if (e.getStatus() == SC_NOT_FOUND && ignoreNotFound) { | ||
return null; | ||
} | ||
throw e; | ||
} | ||
} | ||
|
||
@Override | ||
public Identliste hentIdenter(HentIdenterQueryRequest q, IdentlisteResponseProjection p) { | ||
return query(q, p, HentIdenterQueryResponse.class).hentIdenter(); | ||
} | ||
|
||
@Override | ||
public List<HentIdenterBolkResult> hentIdenterBolkResults(HentIdenterBolkQueryRequest q, HentIdenterBolkResultResponseProjection p) { | ||
return query(q, p, HentIdenterBolkQueryResponse.class).hentIdenterBolk(); | ||
} | ||
|
||
@Override | ||
public <T extends GraphQLResult<?>> T query(GraphQLOperationRequest q, GraphQLResponseProjection p, Class<T> clazz) { | ||
return query(new GraphQLRequest(q, p), clazz); | ||
} | ||
|
||
private <T extends GraphQLResult<?>> T query(GraphQLRequest req, Class<T> clazz) { | ||
try { | ||
LOG.trace("Henter resultat for {} fra {}", clazz.getName(), endpoint); | ||
var res = client.target(endpoint) | ||
.request(APPLICATION_JSON_TYPE) | ||
.buildPost(json(req.toHttpJsonBody())) | ||
.invoke(clazz); | ||
if (res.hasErrors()) { | ||
return errorHandler.handleError(res.getErrors(), endpoint, PDL_ERROR_RESPONSE); | ||
} | ||
LOG.trace("Hentet resultat for {} fra {} OK", clazz.getName(), endpoint); | ||
return res; | ||
} catch (ProcessingException e) { | ||
if (e.getCause()instanceof VLException v) { | ||
throw v; | ||
} | ||
throw e; | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
22 changes: 22 additions & 0 deletions
22
...-klient/src/main/java/no/nav/vedtak/felles/integrasjon/pdl/OnBehalfOfJerseyPdlKlient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package no.nav.vedtak.felles.integrasjon.pdl; | ||
|
||
import java.net.URI; | ||
|
||
import javax.enterprise.context.Dependent; | ||
import javax.inject.Inject; | ||
|
||
import no.nav.foreldrepenger.konfig.KonfigVerdi; | ||
import no.nav.vedtak.felles.integrasjon.rest.jersey.Jersey; | ||
import no.nav.vedtak.felles.integrasjon.rest.jersey.OnBehalfOfTokenRequestFilter; | ||
|
||
@Dependent | ||
@Jersey("onbehalf") | ||
public class OnBehalfOfJerseyPdlKlient extends AbstractJerseyPdlKlient { | ||
|
||
@Inject | ||
public OnBehalfOfJerseyPdlKlient( | ||
@KonfigVerdi(value = "pdl.base.url", defaultVerdi = HTTP_PDL_API_DEFAULT_GRAPHQL) URI endpoint, | ||
@KonfigVerdi(value = "pdl.tema", defaultVerdi = FOR) String tema) { | ||
super(endpoint, new OnBehalfOfTokenRequestFilter(tema)); | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
.../pdl-klient/src/main/java/no/nav/vedtak/felles/integrasjon/pdl/SystemJerseyPdlKlient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package no.nav.vedtak.felles.integrasjon.pdl; | ||
|
||
import java.net.URI; | ||
|
||
import javax.enterprise.context.Dependent; | ||
import javax.inject.Inject; | ||
|
||
import no.nav.foreldrepenger.konfig.KonfigVerdi; | ||
import no.nav.vedtak.felles.integrasjon.rest.StsAccessTokenConfig; | ||
import no.nav.vedtak.felles.integrasjon.rest.jersey.Jersey; | ||
import no.nav.vedtak.felles.integrasjon.rest.jersey.StsAccessTokenJerseyClient; | ||
import no.nav.vedtak.felles.integrasjon.rest.jersey.SystemTokenClientRequestFilter; | ||
|
||
@Dependent | ||
@Jersey("system") | ||
public class SystemJerseyPdlKlient extends AbstractJerseyPdlKlient { | ||
|
||
@Inject | ||
public SystemJerseyPdlKlient( | ||
@KonfigVerdi(value = "pdl.base.url", defaultVerdi = HTTP_PDL_API_DEFAULT_GRAPHQL) URI endpoint, | ||
StsAccessTokenConfig config, | ||
@KonfigVerdi(value = "pdl.tema", defaultVerdi = FOR) String tema) { | ||
super(endpoint, new SystemTokenClientRequestFilter(new StsAccessTokenJerseyClient(config), tema)); | ||
} | ||
} |
Oops, something went wrong.