/** * Copyright (c) 2012 Cloudsmith Inc. and other contributors, as listed below. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cloudsmith * */ package org.cloudsmith.geppetto.forge.v1.service; import java.io.IOException; import java.util.Collections; import java.util.List; import org.apache.http.HttpStatus; import org.apache.http.client.HttpResponseException; import org.cloudsmith.geppetto.forge.client.ForgeClient; import org.cloudsmith.geppetto.forge.model.Constants; import org.cloudsmith.geppetto.forge.v1.model.ModuleInfo; import com.google.inject.Inject; /** * A CRUD service for {@link Module} objects */ public class ModuleService { @Inject private ForgeClient forgeClient; /** * Cleanly abort the currently executing request. This method does nothing if there is * no executing request. */ public void abortCurrentRequest() { forgeClient.abortCurrentRequest(); } /** * @param keyword * KeyWord to use in the search. May be <code>null</code> to get all modules. * @return All Modules that matches the given keyword * @throws IOException */ public List<ModuleInfo> search(String keyword) throws IOException { List<ModuleInfo> modules = null; try { modules = forgeClient.getV1(Constants.COMMAND_GROUP_MODULES, keyword == null ? null : Collections.singletonMap("q", keyword), Constants.LIST_MODULE_INFO); } catch(HttpResponseException e) { if(e.getStatusCode() != HttpStatus.SC_NOT_FOUND) throw e; } if(modules == null) modules = Collections.emptyList(); return modules; } }