use of org.talend.components.jira.connection.JiraResponse in project components by Talend.
the class JiraReader method makeHttpRequest.
/**
* Makes http request to the server and process its response
*
* @throws ComponentException in case of response code is not SC_OK (200)
* @throws IOException in case of exception during http connection
*/
protected void makeHttpRequest() throws IOException {
Map<String, Object> parameters = prepareParameters();
JiraResponse jiraResponse = rest.get(resource, parameters);
if (jiraResponse.getStatusCode() != SC_OK) {
throw generateJiraException(jiraResponse.getStatusCode(), jiraResponse.getBody());
}
response = jiraResponse.getBody();
entities = processResponse(response);
if (!entities.isEmpty()) {
hasMoreRecords = true;
entityIndex = 0;
result.totalCount = result.totalCount + entities.size();
}
}
use of org.talend.components.jira.connection.JiraResponse in project components by Talend.
the class JiraDeleteWriter method write.
/**
* Removes input data resources from Jira server <br>
* Method should be called only after {@link JiraDeleteWriter#open(String)}
*
* @param datum input data
*/
@Override
public void write(Object datum) throws IOException {
if (!opened) {
throw new IOException(MESSAGES.getMessage("error.writerNotOpened"));
}
result.totalCount++;
if (datum == null) {
return;
}
IndexedRecord record = getFactory(datum).convertToAvro(datum);
if (dataSchema == null) {
dataSchema = record.getSchema();
Field idField = dataSchema.getField("id");
if (idField == null) {
throw new IOException(MESSAGES.getMessage("error.schemaNotContainId"));
}
idPos = idField.pos();
}
String id = (String) record.get(idPos);
String resourceToDelete = resource + "/" + id;
JiraResponse response = getConnection().delete(resourceToDelete, sharedParameters);
handleResponse(response, id, record);
}
use of org.talend.components.jira.connection.JiraResponse in project components by Talend.
the class JiraUpdateWriter method write.
/**
* Updates Jira resources according incoming data <br>
* Method should be called only after {@link JiraUpdateWriter#open(String)}
*
* @param datum input data
*/
@Override
public void write(Object datum) throws IOException {
if (!opened) {
throw new IOException(MESSAGES.getMessage("error.writerNotOpened"));
}
result.totalCount++;
if (datum == null) {
return;
}
IndexedRecord record = getFactory(datum).convertToAvro(datum);
if (dataSchema == null) {
dataSchema = record.getSchema();
Field idField = dataSchema.getField("id");
if (idField == null) {
throw new IOException(MESSAGES.getMessage("error.schemaNotContainId"));
}
idPos = idField.pos();
Field jsonField = dataSchema.getField("json");
if (jsonField == null) {
throw new IOException(MESSAGES.getMessage("error.schemaNotContainJson"));
}
jsonPos = jsonField.pos();
}
String id = (String) record.get(idPos);
String resourceToUpdate = resource + "/" + id;
String json = (String) record.get(jsonPos);
validateRequestBody(json);
JiraResponse response = getConnection().put(resourceToUpdate, json);
handleResponse(response, json, record);
}
use of org.talend.components.jira.connection.JiraResponse in project components by Talend.
the class JiraReaderTest method testThrowComponentExceptionWhenErrorOccurred.
@Test
public void testThrowComponentExceptionWhenErrorOccurred() throws IOException {
thrown.expect(ComponentException.class);
thrown.expectMessage("Can't get response from server, error code is 400\nSome error message");
JiraSearchReader jiraReader = new JiraSearchReader(source);
Rest rest = mock(Rest.class);
JiraResponse jr = new JiraResponse(400, "Some error message");
when(rest.get(anyString(), anyMap())).thenReturn(jr);
jiraReader.setRest(rest);
jiraReader.makeHttpRequest();
}
use of org.talend.components.jira.connection.JiraResponse in project components by Talend.
the class JiraInsertWriter method write.
/**
* Inserts resources into Jira server formed from incoming data input <br>
* Method should be called only after {@link JiraInsertWriter#open(String)}
*
* @param datum input data
*/
@Override
public void write(Object datum) throws IOException {
if (!opened) {
throw new IOException(MESSAGES.getMessage("error.writerNotOpened"));
}
result.totalCount++;
if (datum == null) {
return;
}
IndexedRecord record = getFactory(datum).convertToAvro(datum);
if (dataSchema == null) {
dataSchema = record.getSchema();
Field jsonField = dataSchema.getField("json");
if (jsonField == null) {
throw new IOException(MESSAGES.getMessage("error.schemaNotContainJson"));
}
jsonPos = jsonField.pos();
}
String json = (String) record.get(jsonPos);
validateRequestBody(json);
JiraResponse response = getConnection().post(resource, json);
handleResponse(response, json, record);
}
Aggregations