epugh commented on code in PR #4178:
URL: https://github.com/apache/solr/pull/4178#discussion_r3142378585
##########
solr/core/src/java/org/apache/solr/pkg/ClusterPackage.java:
##########
@@ -14,426 +14,291 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.solr.pkg;
import static org.apache.solr.common.cloud.ZkStateReader.SOLR_PKGS_PATH;
import static
org.apache.solr.security.PermissionNameProvider.Name.PACKAGE_EDIT_PERM;
import static
org.apache.solr.security.PermissionNameProvider.Name.PACKAGE_READ_PERM;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.inject.Inject;
import java.io.IOException;
-import java.io.StringWriter;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import org.apache.solr.api.Command;
-import org.apache.solr.api.EndPoint;
-import org.apache.solr.api.PayloadObj;
+import java.util.stream.Collectors;
+import org.apache.solr.api.JerseyResource;
+import org.apache.solr.client.api.endpoint.PackageApis;
+import org.apache.solr.client.api.model.AddPackageVersionRequestBody;
+import org.apache.solr.client.api.model.PackagesResponse;
+import org.apache.solr.client.api.model.SolrJerseyResponse;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.request.GenericSolrRequest;
-import org.apache.solr.client.solrj.request.beans.PackagePayload;
import org.apache.solr.client.solrj.response.JavaBinResponseParser;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.annotation.JsonProperty;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZooKeeperException;
import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.CommandOperation;
-import org.apache.solr.common.util.EnvUtils;
-import org.apache.solr.common.util.ReflectMapWriter;
import org.apache.solr.common.util.Utils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.filestore.FileStoreUtils;
+import org.apache.solr.jersey.PermissionName;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.util.SolrJacksonAnnotationInspector;
import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.data.Stat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/** This implements the public end points (/api/cluster/package) of package
API. */
-public class PackageAPI {
- public final boolean enablePackages =
EnvUtils.getPropertyAsBool("solr.packages.enabled", false);
+/**
+ * JAX-RS implementation of the package management API ({@code
/api/cluster/package}).
+ *
+ * @see PackageApis
+ */
+public class PackageAPI extends JerseyResource implements PackageApis {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- public static final String ERR_MSG =
- "Package loading is not enabled , Start your nodes with
-Dsolr.packages.enabled=true";
+ private static final int SYNC_MAX_RETRIES = 10;
+ private static final long SYNC_SLEEP_MS = 10L;
- final CoreContainer coreContainer;
- private final ObjectMapper mapper =
SolrJacksonAnnotationInspector.createObjectMapper();
- private final SolrPackageLoader packageLoader;
- Packages pkgs;
+ private final CoreContainer coreContainer;
+ private final SolrQueryRequest solrQueryRequest;
+ private final SolrQueryResponse solrQueryResponse;
- public final Edit editAPI = new Edit();
- public final Read readAPI = new Read();
-
- public PackageAPI(CoreContainer coreContainer, SolrPackageLoader loader) {
+ @Inject
+ public PackageAPI(
+ CoreContainer coreContainer,
+ SolrQueryRequest solrQueryRequest,
+ SolrQueryResponse solrQueryResponse) {
this.coreContainer = coreContainer;
- this.packageLoader = loader;
- pkgs = new Packages();
- SolrZkClient zkClient = coreContainer.getZkController().getZkClient();
- try {
- pkgs = readPkgsFromZk(null, null);
- } catch (KeeperException | InterruptedException e) {
- pkgs = new Packages();
- // ignore
+ this.solrQueryRequest = solrQueryRequest;
+ this.solrQueryResponse = solrQueryResponse;
+ }
+
+ @Override
+ @PermissionName(PACKAGE_READ_PERM)
+ public PackagesResponse listPackages(String refreshPackage, Integer
expectedVersion) {
+ PackageStore packageStore =
coreContainer.getPackageLoader().getPackageStore();
+
+ if (refreshPackage != null) {
+ packageStore.packageLoader.notifyListeners(refreshPackage);
+ return instantiateJerseyResponse(PackagesResponse.class);
Review Comment:
Fixing now! Thank you... Fixed a number of places with this pattern.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]