Skip to content

Commit

Permalink
Merge pull request #2 from SBI-/master
Browse files Browse the repository at this point in the history
Add oslc representation of gitlab issue
  • Loading branch information
SBI- committed Jun 8, 2018
2 parents 7285be6 + 760aa86 commit 4673c07
Show file tree
Hide file tree
Showing 23 changed files with 1,098 additions and 190 deletions.
2 changes: 1 addition & 1 deletion feature/feature.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<feature
id="org.jazzcommunity.GitConnectorService.feature"
label="REST Service"
version="1.0.0.qualifier"
version="1.1.0.qualifier"
provider-name="PROVIDER">

<description url="http://www.example.com/description">
Expand Down
2 changes: 1 addition & 1 deletion feature/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>org.jazzcommunity.GitConnectorService</groupId>
<artifactId>org.jazzcommunity.GitConnectorService.parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>

Expand Down
6 changes: 4 additions & 2 deletions plugin/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: org.jazzcommunity.GitConnectorService
Bundle-SymbolicName: org.jazzcommunity.GitConnectorService;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Version: 1.1.0.qualifier
Bundle-Vendor: VENDOR
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle:
Expand Down Expand Up @@ -35,7 +35,7 @@ Require-Bundle:
com.ibm.team.build.service
Bundle-ClassPath: target/dependency/gson-2.8.2.jar,
target/dependency/com.siemens.bt.jazz.services.base-2.0.1-SNAPSHOT.jar,
target/dependency/com.siemens.bt.jazz.services.PersonalTokenService-1.0.1-SNAPSHOT.jar,
target/dependency/com.siemens.bt.jazz.services.PersonalTokenService-1.0.2-SNAPSHOT.jar,
target/dependency/asm-5.0.3.jar,
target/dependency/asm-analysis-5.0.3.jar,
target/dependency/asm-tree-5.0.3.jar,
Expand All @@ -49,6 +49,8 @@ Bundle-ClassPath: target/dependency/gson-2.8.2.jar,
target/dependency/parboiled-java-1.1.7.jar,
target/dependency/minigit-1.0.0-SNAPSHOT.jar,
target/dependency/commonmark-0.11.0.jar,
target/dependency/modelmapper-2.0.0.jar,
target/dependency/threetenbp-1.3.6.jar,
target/java-gen,
.
Import-Package: com.ibm.team.jfs.app,
Expand Down
45 changes: 22 additions & 23 deletions plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>org.jazzcommunity.GitConnectorService</groupId>
<artifactId>org.jazzcommunity.GitConnectorService.parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>

Expand All @@ -32,28 +32,27 @@
</execution>
</executions>
</plugin>
<!--Purposely commented out until link presentation api is implemented -->
<!--<plugin>-->
<!--<groupId>org.jsonschema2pojo</groupId>-->
<!--<artifactId>jsonschema2pojo-maven-plugin</artifactId>-->
<!--<version>0.5.1</version>-->
<!--<configuration>-->
<!--<addCompileSourceRoot>true</addCompileSourceRoot>-->
<!--<annotationStyle>gson</annotationStyle>-->
<!--<includeHashcodeAndEquals>false</includeHashcodeAndEquals>-->
<!--<includeToString>false</includeToString>-->
<!--<sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>-->
<!--<sourceType>json</sourceType>-->
<!--<targetPackage>org.jazzcommunity.GitConnectorService.type</targetPackage>-->
<!--</configuration>-->
<!--<executions>-->
<!--<execution>-->
<!--<goals>-->
<!--<goal>generate</goal>-->
<!--</goals>-->
<!--</execution>-->
<!--</executions>-->
<!--</plugin>-->
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.5.1</version>
<configuration>
<addCompileSourceRoot>true</addCompileSourceRoot>
<annotationStyle>gson</annotationStyle>
<includeHashcodeAndEquals>false</includeHashcodeAndEquals>
<includeToString>false</includeToString>
<sourceDirectory>${basedir}/src/main/resources/schemas/oslc</sourceDirectory>
<sourceType>json</sourceType>
<targetPackage>org.jazzcommunity.GitConnectorService.olsc.type</targetPackage>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import com.siemens.bt.jazz.services.base.rest.RestActionBuilder;
import com.siemens.bt.jazz.services.base.rest.RestRequest;
import com.siemens.bt.jazz.services.base.router.factory.RestFactory;
import org.jazzcommunity.GitConnectorService.builder.gitlab.*;
import org.jazzcommunity.GitConnectorService.builder.gitlab.IssueLinkService;
import org.jazzcommunity.GitConnectorService.builder.gitlab.IssuePreviewService;
import org.jazzcommunity.GitConnectorService.builder.gitlab.RequestLinkService;
import org.jazzcommunity.GitConnectorService.builder.gitlab.RequestPreviewService;
import org.jazzcommunity.GitConnectorService.router.CustomRouter;

import javax.servlet.http.HttpServletRequest;
Expand Down Expand Up @@ -50,6 +53,7 @@ public GitConnectorService() {
// router.addService(HttpMethod.GET, ".*/gitlab/[a-zA-Z.]+/project/[0-9]+/commit/[^\\/]+/preview.*",
// new RestFactory(CommitPreviewService.class));
}

@Override
public void perform_GET(String uri, HttpServletRequest request, HttpServletResponse response) throws IOException {
performAction(uri, request, response);
Expand All @@ -69,7 +73,7 @@ protected void performAction(String uri, HttpServletRequest request, HttpServlet
// This will need extra logging, but we quench it for now to allow non-authorized requests
// without spamming the server log. Sorry :-*
//throw e;
} catch (Exception e) {
} catch (Exception e) {
// catch everything and log. Makes sure that there is no checked exception from our service back
// to jazz, except for the expected IOException when the response isn't writable. We need to make
// sure that our plug-in conforms to the contract that no exceptions bubble out into the system.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.siemens.bt.jazz.services.base.rest.AbstractRestService;
import com.siemens.bt.jazz.services.base.rest.RestRequest;
import org.apache.commons.logging.Log;
import org.jazzcommunity.GitConnectorService.net.ArtifactInformation;
import org.jazzcommunity.GitConnectorService.data.GithubConnection;
import org.jazzcommunity.GitConnectorService.net.ArtifactInformation;
import org.jazzcommunity.GitConnectorService.net.Request;
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

import ch.sbi.minigit.gitlab.GitlabApi;
import ch.sbi.minigit.type.gitlab.commit.Commit;
import java.io.IOException;
import java.net.URL;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ibm.team.repository.service.TeamRawService;
import com.siemens.bt.jazz.services.base.rest.AbstractRestService;
import com.siemens.bt.jazz.services.base.rest.RestRequest;
Expand All @@ -18,6 +12,11 @@
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URL;

public class CommitPreviewService extends AbstractRestService {

public CommitPreviewService(Log log, HttpServletRequest request, HttpServletResponse response, RestRequest restRequest, TeamRawService parentService) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,20 @@

import ch.sbi.minigit.gitlab.GitlabApi;
import ch.sbi.minigit.type.gitlab.issue.Issue;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.ibm.team.repository.service.TeamRawService;
import com.siemens.bt.jazz.services.base.rest.AbstractRestService;
import com.siemens.bt.jazz.services.base.rest.RestRequest;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.logging.Log;
import org.apache.http.entity.ContentType;
import org.jazzcommunity.GitConnectorService.data.TokenHelper;
import org.jazzcommunity.GitConnectorService.net.Request;
import org.jazzcommunity.GitConnectorService.net.UrlBuilder;
import org.jazzcommunity.GitConnectorService.net.UrlParameters;
import org.jazzcommunity.GitConnectorService.olsc.type.issue.OslcIssue;
import org.jazzcommunity.GitConnectorService.oslc.mapping.IssueMapper;
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;

Expand All @@ -31,11 +36,25 @@ public void execute() throws IOException {

if (Request.isLinkRequest(request)) {
sendLinkResponse(issue, parameters);
} else if (Request.isOslcRequest(request)) {
sendOslcResponse(issue, parameters);
} else {
response.sendRedirect(issue.getWebUrl());
}
}

private void sendOslcResponse(Issue issue, UrlParameters parameters) throws IOException {
// what might I need parameters for here?
// instead of get, IssueMapper should just export a 'map' function anyway...
OslcIssue oslcPayload =
IssueMapper.map(issue, UrlBuilder.getLinkUrl(parentService, parameters, "issue"));
Gson gson = new GsonBuilder().serializeNulls().create();
String json = gson.toJson(oslcPayload);
response.setContentType(ContentType.APPLICATION_JSON.toString());
response.setHeader("OSLC-Core-Version", "2.0");
response.getWriter().write(json);
}

private void sendLinkResponse(Issue issue, UrlParameters parameters) throws IOException {
URL preview = UrlBuilder.getPreviewUrl(parentService, parameters, "issue");

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.jazzcommunity.GitConnectorService.builder.gitlab;

import ch.sbi.minigit.gitlab.GitlabApi;
import ch.sbi.minigit.type.gitlab.mergerequest.MergeRequest;
import com.ibm.team.repository.service.TeamRawService;
import com.siemens.bt.jazz.services.base.rest.AbstractRestService;
Expand All @@ -10,7 +11,6 @@
import org.jazzcommunity.GitConnectorService.net.Request;
import org.jazzcommunity.GitConnectorService.net.UrlBuilder;
import org.jazzcommunity.GitConnectorService.net.UrlParameters;
import ch.sbi.minigit.gitlab.GitlabApi;
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import com.ibm.team.repository.common.IContributor;
import com.ibm.team.repository.common.TeamRepositoryException;
import com.ibm.team.repository.service.TeamRawService;
import org.jazzcommunity.GitConnectorService.buildsecret.security.Crypto;
import org.jazzcommunity.GitConnectorService.buildsecret.internal.BuildSecretsHelper;
import org.jazzcommunity.GitConnectorService.buildsecret.internal.BuildSecretsReader;
import org.jazzcommunity.GitConnectorService.buildsecret.jazz.AdvancedProperties;
import org.jazzcommunity.GitConnectorService.buildsecret.jazz.User;
import org.jazzcommunity.GitConnectorService.buildsecret.security.Crypto;

import java.io.UnsupportedEncodingException;
import java.net.URL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

public class MarkdownParser {
public static String toHtml(String markdown) {
if (markdown == null) {
return "";
}
Parser parser = Parser.builder().build();
Node document = parser.parse(markdown);
HtmlRenderer renderer = HtmlRenderer.builder().build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
public class Request {
public static boolean isLinkRequest(HttpServletRequest request) {
return request.getHeader("Accept").contains("application/x-jazz-compact-rendering")
|| request.getHeader("Accept").contains("application/x-oslc-compact+xml");
|| request.getHeader("Accept").contains("application/x-oslc-compact+xml");
}

public static boolean isOslcRequest(HttpServletRequest request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,32 @@ public class UrlBuilder {
public static URL getPreviewUrl(
TeamRawService parentService,
UrlParameters parameters,
String type) throws MalformedURLException {
String gitType) throws MalformedURLException {
return getUrl(parentService, parameters, gitType, "preview");
}

public static URL getLinkUrl(
TeamRawService parentService,
UrlParameters parameters,
String gitType) throws MalformedURLException {
return getUrl(parentService, parameters, gitType, "link");
}

private static URL getUrl(
TeamRawService parentService,
UrlParameters parameters,
String gitType,
String linkType) throws MalformedURLException {
String base = parentService.getRequestRepositoryURL();
String name = parentService.getClass().getInterfaces()[0].getCanonicalName();
return new URL(String.format(
"%sservice/%s/gitlab/%s/project/%s/%s/%s/preview",
"%sservice/%s/gitlab/%s/project/%s/%s/%s/%s",
base,
name,
parameters.getHost(),
parameters.getProject(),
type,
parameters.getArtifact()));
gitType,
parameters.getArtifact(),
linkType));
}
}
Loading

0 comments on commit 4673c07

Please sign in to comment.