feat(nifi-client): 添加删除参数上下文功能并优化模型命名- 在 NifiClient 中添加 delete 方法支持 DELETE 请求

- 在 NifiApiService 中实现删除参数上下文的接口
- 优化模型类命名,提高代码可读性
- 更新参数上下文相关 API 调用路径
This commit is contained in:
liuy 2025-05-15 10:23:05 +08:00
parent e535d45df3
commit 9acde1cb1e
14 changed files with 55 additions and 26 deletions

View File

@ -6,17 +6,14 @@ import okhttp3.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.SecureRandom; import java.util.Map;
import java.security.cert.X509Certificate;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
/** /**
* nifi客户端请求处理
*
* @Authorliuyang * @Authorliuyang
* @Packagecom.hzya.frame.nifi.client * @Packagecom.hzya.frame.nifi.client
* @Projectfw-nifi * @Projectfw-nifi
@ -68,6 +65,27 @@ public class NifiClient {
}); });
} }
public <T> T delete(String path, Class<T> responseType) throws IOException {
return executeRequestWithRetry(() -> {
Request request = new Request.Builder().url(config.getApiUrl() + path).delete().header("Authorization", "Bearer " + accessToken.get()).build();
return executeRequest(request, responseType);
});
}
public <T> T delete(String path, Map<String, String> queryParams, Class<T> responseType) throws IOException {
// 构建 URL 并添加查询参数
HttpUrl.Builder urlBuilder = HttpUrl.parse(config.getApiUrl() + path).newBuilder();
if (queryParams != null) {
queryParams.forEach(urlBuilder::addQueryParameter);
}
String url = urlBuilder.build().toString();
return executeRequestWithRetry(() -> {
Request request = new Request.Builder().url(url).delete().header("Authorization", "Bearer " + accessToken.get()).build();
return executeRequest(request, responseType);
});
}
private <T> T executeRequestWithRetry(IOExceptionRunnable<T> runnable) throws IOException { private <T> T executeRequestWithRetry(IOExceptionRunnable<T> runnable) throws IOException {
int maxRetries = 2; int maxRetries = 2;
for (int attempt = 0; attempt < maxRetries; attempt++) { for (int attempt = 0; attempt < maxRetries; attempt++) {
@ -78,7 +96,7 @@ public class NifiClient {
if (attempt == maxRetries - 1 || !isTokenExpiredError(e)) { if (attempt == maxRetries - 1 || !isTokenExpiredError(e)) {
throw e; throw e;
} }
System.out.println("令牌可能已过期,请刷新并重试。。。"); System.out.println("令牌可能已过期,请刷新并重试...");
try { try {
accessToken.set(getAccessToken()); accessToken.set(getAccessToken());
tokenIssueTime = System.currentTimeMillis(); tokenIssueTime = System.currentTimeMillis();

View File

@ -11,7 +11,7 @@ import java.util.List;
* @website http://www.bejson.com/java2pojo/ * @website http://www.bejson.com/java2pojo/
*/ */
@Data @Data
public class Component { public class Component3 {
private String name; private String name;
private List<Parameters> parameters; private List<Parameters2> parameters;
} }

View File

@ -3,7 +3,7 @@ package com.hzya.frame.nifi.model.joinparametercontexts;
import lombok.Data; import lombok.Data;
@Data @Data
public class Parameter { public class Parameter2 {
private String name; private String name;
private String value; private String value;
private boolean sensitive; private boolean sensitive;

View File

@ -5,5 +5,5 @@ import lombok.Data;
@Data @Data
public class ParameterContextsJoin { public class ParameterContextsJoin {
private Revision revision; private Revision revision;
private Component component; private Component3 component;
} }

View File

@ -6,6 +6,6 @@ package com.hzya.frame.nifi.model.joinparametercontexts;
import lombok.Data; import lombok.Data;
@Data @Data
public class Parameters { public class Parameters2 {
private Parameter parameter; private Parameter2 parameter;
} }

View File

@ -3,7 +3,7 @@ package com.hzya.frame.nifi.model.processgrouproot;
import lombok.Data; import lombok.Data;
@Data @Data
public class Component { public class Component4 {
private String id; private String id;
private String versionedComponentId; private String versionedComponentId;
private String parentGroupId; private String parentGroupId;

View File

@ -3,7 +3,7 @@ package com.hzya.frame.nifi.model.processgrouproot;
import lombok.Data; import lombok.Data;
@Data @Data
public class Component2 { public class Component5 {
private String id; private String id;
private String name; private String name;
} }

View File

@ -14,5 +14,5 @@ import lombok.Data;
public class ParameterContext { public class ParameterContext {
private String id; private String id;
private Permissions permissions; private Permissions permissions;
private Component2 component; private Component5 component;
} }

View File

@ -12,7 +12,7 @@ public class ProcessGroups {
private Position position; private Position position;
private Permissions permissions; private Permissions permissions;
private List<Bulletins> bulletins; private List<Bulletins> bulletins;
private Component component; private Component4 component;
private Status status; private Status status;
private String runningCount; private String runningCount;
private String stoppedCount; private String stoppedCount;

View File

@ -5,7 +5,7 @@ import lombok.Data;
import java.util.List; import java.util.List;
@Data @Data
public class Component { public class Component6 {
private String name; private String name;
private List<Parameters> parameters; private List<Parameters> parameters;
private List<String> boundProcessGroups; private List<String> boundProcessGroups;

View File

@ -6,5 +6,5 @@ import lombok.Data;
public class ParameterContext { public class ParameterContext {
private String id; private String id;
private Permissions permissions; private Permissions permissions;
private Component component; private Component6 component;
} }

View File

@ -8,5 +8,5 @@ public class ParameterContextsResult {
private String id; private String id;
private String uri; private String uri;
private Permissions permissions; private Permissions permissions;
private Component component; private Component6 component;
} }

View File

@ -4,6 +4,6 @@ import lombok.Data;
@Data @Data
public class Parameters { public class Parameters {
private boolean canWrite; private String canWrite;
private Parameter parameter; private Parameter parameter;
} }

View File

@ -9,6 +9,8 @@ import com.hzya.frame.nifi.model.resultparametercontexts.ParameterContextsResult
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map;
/** /**
* nifi api 服务类 * nifi api 服务类
* *
@ -58,13 +60,9 @@ public class NifiApiService {
* 更新参数上下文 * 更新参数上下文
*/ */
public ParameterContextsResult updateParameterContexts(ParameterContextsResult parameterContextsJoin) throws Exception { public ParameterContextsResult updateParameterContexts(ParameterContextsResult parameterContextsJoin) throws Exception {
return client.post(StrUtil.format("/parameter-contexts/{contextId}/update-requests", parameterContextsJoin.getId()), parameterContextsJoin, ParameterContextsResult.class); return client.post(StrUtil.format("/parameter-contexts/{}/update-requests", parameterContextsJoin.getId()), parameterContextsJoin, ParameterContextsResult.class);
} }
/**
* 删除参数上下文
*/
/** /**
* 查询参数上下文 * 查询参数上下文
*/ */
@ -72,4 +70,17 @@ public class NifiApiService {
return client.get(StrUtil.format("/parameter-contexts/{}", paramContextsId), ParameterContextsResult.class); return client.get(StrUtil.format("/parameter-contexts/{}", paramContextsId), ParameterContextsResult.class);
} }
/**
* 删除参数上下文
*/
public void deleteParameterContexts(String paramContextsId) throws Exception {
client.delete(StrUtil.format("/parameter-contexts/{}", paramContextsId), ParameterContextsResult.class);
}
/**
* 删除参数上下文,待query参数
*/
public ParameterContextsResult deleteParameterContexts(String id, Map<String, String> queryParams) throws Exception {
return client.delete(StrUtil.format("/parameter-contexts/{}", id), queryParams, ParameterContextsResult.class);
}
} }