private static void stub(ReadOnlyApplicationLink mockValue, MockApplink mockApplink) { String id = getId(mockApplink); ApplicationType applicationType = getType(mockApplink); when(mockValue.getId()).thenReturn(new ApplicationId(id)); when(mockValue.getName()).thenReturn(getName(mockApplink, id)); when(mockValue.getDisplayUrl()).thenReturn(URI.create(getUrl(mockApplink, id))); when(mockValue.getRpcUrl()).thenReturn(URI.create(getRpcUrl(mockApplink, id))); when(mockValue.getType()).thenReturn(applicationType); }
@Nonnull public static Predicate<ReadOnlyApplicationLink> isSystemLink() { return link -> link != null && link.isSystem(); }
private String renderChart(String jql, String statisticType, ReadOnlyApplicationLink appLink, String titleType, String totalIssues) { HashMap<String, Object> piechartContext = Maps.newHashMap(); piechartContext.put("totalIssues", totalIssues); piechartContext.put("titleType", titleType); piechartContext.put("serverId", appLink.getId().toString()); piechartContext.put("server", appLink.getName()); piechartContext.put("jql", jql); piechartContext.put("statType", statisticType); piechartContext.put("width", ""); piechartContext.put("border", true); return helper.renderFromSoy(SoftwareBlueprintsContextProviderHelper.PLUGIN_KEY, SOY_PIE_CHART_MACRO_TEMPLATE, piechartContext); }
void addApplink(ReadOnlyApplicationLink readOnlyApplicationLink) { final ApplinkStatus applinkStatus; try { applinkStatus = elevatedPermissions.executeAs(PermissionLevel.ADMIN, () -> applinkStatusService.getApplinkStatus(readOnlyApplicationLink.getId())); } catch (Exception e) { log.error("Failed to retrieve Applink-Status for " + readOnlyApplicationLink.getName(), e); return; } incrementTotalCount(); incrementStatusCount(applinkStatus); final String type = getType(readOnlyApplicationLink.getType()); incrementCountByType(type); applinksDetails.add(getApplinkDetailEvent(readOnlyApplicationLink, applinkStatus, applicationProperties.getPlatformId())); }
private ApplinkStatusApplinkEvent getApplinkDetailEvent(ReadOnlyApplicationLink readOnlyApplicationLink, ApplinkStatus applinkStatus, String product) { final Optional<ApplinkErrorType> error = getError(applinkStatus); return new ApplinkStatusApplinkEvent( product, internalHostApplication.getId().get(), getType(readOnlyApplicationLink.getType()), readOnlyApplicationLink.getId().get(), applinkStatus.isWorking(), error.map(e -> e.getCategory().name()).orElse(""), error.map(Enum::name).orElse(""), getConfiguredAuthTypes(readOnlyApplicationLink.getId()) ); }
@Override public boolean apply(final ReadOnlyApplicationLink input) { return applicationId.equals(input.getId()); } };
@Nonnull public static Predicate<ReadOnlyApplicationLink> withRpcUrl(@Nonnull final URI rpcUrl) { checkNotNull(rpcUrl, "rpcUrl"); return link -> link != null && rpcUrl.equals(link.getRpcUrl()); }
@Nonnull public static Predicate<ReadOnlyApplicationLink> withName(@Nonnull final String name) { checkNotNull(name, "name"); return link -> link != null && name.equals(link.getName()); }
@Override public boolean apply(final ReadOnlyApplicationLink input) { return type.isAssignableFrom(input.getType().getClass()); } };
@Nonnull public static Predicate<ReadOnlyApplicationLink> withDisplayUrl(@Nonnull final URI displayUrl) { checkNotNull(displayUrl, "displayUrl"); return link -> link != null && displayUrl.equals(link.getDisplayUrl()); } }
/** * Request jira by anonymous user * * @param appLink jira server app link * @param url rest url * @return response */ private String requestJiraByAnonymousUser(ReadOnlyApplicationLink appLink, String url) { try { final ApplicationLinkRequestFactory requestFactory = appLink.createAuthenticatedRequestFactory(Anonymous.class); ApplicationLinkRequest request = requestFactory.createRequest(Request.MethodType.GET, url); return request.execute(); } catch (Exception e) { LOG.info("Can not retrieve data from jira server by anonymous user", e); return null; } }
private String getJiraIssuesMacro(String keyJQL, Object valJQL, ReadOnlyApplicationLink appLink, boolean isCount) { HashMap<String, Object> jiraIssuesMacroContext = Maps.newHashMap(); jiraIssuesMacroContext.put("serverId", appLink.getId().toString()); jiraIssuesMacroContext.put("server", appLink.getName()); jiraIssuesMacroContext.put("keyJQL", keyJQL); jiraIssuesMacroContext.put("valJQL", valJQL); jiraIssuesMacroContext.put("isCount", isCount); return helper.renderFromSoy(SoftwareBlueprintsContextProviderHelper.PLUGIN_KEY, SOY_JIRAISSUES_MACRO_TEMPLATE, jiraIssuesMacroContext); }
@Nonnull public static Predicate<ReadOnlyApplicationLink> withId(@Nonnull final ApplicationId applicationId) { checkNotNull(applicationId, "applicationId"); return link -> link != null && applicationId.equals(link.getId()); }
/** * Get xml channel impersonally, always return fresh data. * * @param jqlQuery jql pass to jira server * @param appLink jira server connection * @return Channel */ public Channel getChannel(ReadOnlyApplicationLink appLink, String jqlQuery, int maxResult) { String hostName = appLink.getRpcUrl().toString(); String requestJiraUrl = hostName + XML_SEARCH_REQUEST_URI + jqlQuery + "&tempMax=" + maxResult; try { // fix for CONFDEV-20458, by changing cache parameter to false return jiraIssuesManager.retrieveXMLAsChannel(requestJiraUrl, DEFAULT_COLUMNS, appLink, false, false); } catch (CredentialsRequiredException e) { return getChannelByAnonymous(requestJiraUrl, appLink); } catch (Exception e) { LOGGER.error("Can not retrieve jira issues", e); } return null; }
@Nonnull public static Predicate<ReadOnlyApplicationLink> isAtlassianLink() { return link -> link != null && ApplicationTypes.isAtlassian(link.getType()); }
/** * Request jira by login user * * @param appLink jira server app link * @param url rest url * @return response * @throws CredentialsRequiredException when user is not mapping * @throws ResponseException when have problem request jira server */ private String requestJiraByAuthenticatedUser(ReadOnlyApplicationLink appLink, String url) throws CredentialsRequiredException, ResponseException { final ApplicationLinkRequestFactory requestFactory = appLink.createAuthenticatedRequestFactory(); ApplicationLinkRequest request = requestFactory.createRequest(Request.MethodType.GET, url); return request.execute(); } }
@Override public void validateUpdate(@Nonnull ReadOnlyApplicationLink applink, @Nonnull ApplicationLinkDetails details) throws ValidationException { checkNotNull(applink, "applink"); checkNotNull(details, "details"); ValidationExceptionBuilder validationBuilder = new ValidationExceptionBuilder(i18nResolver); Iterable<ReadOnlyApplicationLink> existingLinks = getExistingLinks(applink.getId()); validateSystemLink(applink, validationBuilder); validateUri("rpcUrl", details.getRpcUrl(), validationBuilder); validateUri("displayUrl", details.getDisplayUrl(), validationBuilder); validateDuplicates(details, existingLinks, validationBuilder); if (validationBuilder.hasErrors()) { throw validationBuilder.origin(details).build(); } }
/** * The service retrieves all versions of project. * REST URL: /jirareports/1.0/appLink/{appLinkId}/appLink/{appLinkId}/project/{projectKey}/versions * * @param appLinkId applink id to gain jira server * @param projectKey project key is maps in jira server * @return list of versions */ @GET @Path("appLink/{appLinkId}/project/{projectKey}/versions") public Response getVersionsByKeyProject(@PathParam("appLinkId") String appLinkId, @PathParam("projectKey") String projectKey) { ReadOnlyApplicationLink appLink = null; String url = null; try { appLink = appLinkService.getApplicationLink(new ApplicationId(appLinkId)); url = appLink.getRpcUrl() + PROJECT_REST_URI + "/" + projectKey + "/versions"; String versions = requestJiraByAuthenticatedUser(appLink, url); return Response.ok(versions).build(); } catch (CredentialsRequiredException e) { String versions = requestJiraByAnonymousUser(appLink, url); return buildUnAuthenticatedResponse(versions, e.getAuthorisationURI().toString()); } catch (Exception e) { LOG.info("Can not retrieve versions", e); return Response.status(HttpStatus.SC_BAD_REQUEST).build(); } }
private void validateSystemLink(ReadOnlyApplicationLink applink, ValidationExceptionBuilder validationBuilder) { if (applink.isSystem()) { validationBuilder.error("applinks.service.error.validation.applink.system"); } }
/** * The service retrieves all projects of server. * REST URL: /jirareports/1.0/appLink/{appLinkId}/projects * * @param appLinkId applink id to gain jira server * @return list of projects */ @GET @Path("appLink/{appLinkId}/projects") public Response getProjectsByAppLinkId(@PathParam("appLinkId") String appLinkId) { ReadOnlyApplicationLink appLink = null; String url = null; try { appLink = appLinkService.getApplicationLink(new ApplicationId(appLinkId)); url = appLink.getRpcUrl() + PROJECT_REST_URI; String projects = requestJiraByAuthenticatedUser(appLink, url); return Response.ok(projects).build(); } catch (CredentialsRequiredException e) { String projects = requestJiraByAnonymousUser(appLink, url); return buildUnAuthenticatedResponse(projects, e.getAuthorisationURI().toString()); } catch (Exception e) { LOG.info("Can not retrieve projects", e); return Response.status(HttpStatus.SC_BAD_REQUEST).build(); } }