Search in sources :

Example 1 with JiraResponse

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();
    }
}
Also used : JiraResponse(org.talend.components.jira.connection.JiraResponse)

Example 2 with JiraResponse

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);
}
Also used : Field(org.apache.avro.Schema.Field) IndexedRecord(org.apache.avro.generic.IndexedRecord) JiraResponse(org.talend.components.jira.connection.JiraResponse) IOException(java.io.IOException)

Example 3 with JiraResponse

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);
}
Also used : Field(org.apache.avro.Schema.Field) IndexedRecord(org.apache.avro.generic.IndexedRecord) JiraResponse(org.talend.components.jira.connection.JiraResponse) IOException(java.io.IOException)

Example 4 with JiraResponse

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();
}
Also used : Rest(org.talend.components.jira.connection.Rest) JiraResponse(org.talend.components.jira.connection.JiraResponse) Test(org.junit.Test)

Example 5 with JiraResponse

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);
}
Also used : Field(org.apache.avro.Schema.Field) IndexedRecord(org.apache.avro.generic.IndexedRecord) JiraResponse(org.talend.components.jira.connection.JiraResponse) IOException(java.io.IOException)

Aggregations

JiraResponse (org.talend.components.jira.connection.JiraResponse)5 IOException (java.io.IOException)3 Field (org.apache.avro.Schema.Field)3 IndexedRecord (org.apache.avro.generic.IndexedRecord)3 Test (org.junit.Test)1 Rest (org.talend.components.jira.connection.Rest)1