{"action":"created","comment":{"url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/comments/84005554","pull_request_review_id":4810563,"id":84005554,"diff_hunk":"@@ -0,0 +1,588 @@\n+/*\n+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n+ *\n+ * WSO2 Inc. licenses this file to you under the Apache License,\n+ * Version 2.0 (the \"License\"); you may not use this file except\n+ * in compliance with the License.\n+ * You may obtain a copy of the License at\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing,\n+ * software distributed under the License is distributed on an\n+ * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n+ * KIND, either express or implied. See the License for the\n+ * specific language governing permissions and limitations\n+ * under the License.\n+ */\n+package org.wso2.carbon.gateway.mediators.datamapper.engine.input.readers;\n+\n+import org.apache.axiom.om.OMAttribute;\n+import org.apache.axiom.om.OMElement;\n+import org.apache.axiom.om.OMNamespace;\n+import org.apache.axiom.om.OMXMLBuilderFactory;\n+import org.apache.axiom.om.OMXMLParserWrapper;\n+import org.apache.commons.lang.StringUtils;\n+import org.apache.commons.logging.Log;\n+import org.apache.commons.logging.LogFactory;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.core.exceptions.InvalidPayloadException;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.core.exceptions.JSException;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.core.exceptions.ReaderException;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.core.exceptions.SchemaException;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.core.schemas.JacksonJSONSchema;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.core.schemas.Schema;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.input.InputBuilder;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.input.builders.JSONBuilder;\n+import org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants;\n+\n+import javax.xml.namespace.QName;\n+\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.ARRAY_ELEMENT_TYPE;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.ATTRIBUTES_KEY;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.BOOLEAN_ELEMENT_TYPE;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.INTEGER_ELEMENT_TYPE;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.ITEMS_KEY;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.NULL_ELEMENT_TYPE;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.NUMBER_ELEMENT_TYPE;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.OBJECT_ELEMENT_TYPE;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.PROPERTIES_KEY;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.SCHEMA_ATTRIBUTE_FIELD_PREFIX;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.SCHEMA_NAMESPACE_NAME_SEPARATOR;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.SCHEMA_XML_ELEMENT_TEXT_VALUE_FIELD;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.TYPE_KEY;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.VALUE_KEY;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.XMLNS;\n+import static org.wso2.carbon.gateway.mediators.datamapper.engine.utils.DataMapperEngineConstants.XSI_NAMESPACE_URI;\n+\n+import java.io.IOException;\n+import java.io.InputStream;\n+import java.util.ArrayList;\n+import java.util.HashMap;\n+import java.util.Iterator;\n+import java.util.Map;\n+\n+/**\n+ * This class is capable of parsing XML through AXIOMS for the InputStream and build the respective JSON message.\n+ */\n+public class XMLInputReader implements InputReader {\n+\n+    private static final Log log = LogFactory.getLog(XMLInputReader.class);\n+\n+    /* Reference of the InputXMLMessageBuilder object to send the built JSON message */\n+    private InputBuilder messageBuilder;\n+\n+    /* JSON schema of the input message */\n+    private Schema inputSchema;\n+\n+    /* Name and NamespaceURI of the currently processing XML element */\n+    private String localName;\n+    private String nameSpaceURI;\n+\n+    /* JSON Builder to build the respective JSON message */\n+    private JSONBuilder jsonBuilder;\n+\n+    /* Iterator for the Attribute elements */\n+    private Iterator<OMAttribute> it_attr;\n+\n+    /* JSON schema for input message */\n+    private Map jsonSchema;\n+\n+    /**\n+     * Initialize a XML builder.\n+     *\n+     * @throws IOException\n+     */\n+    public XMLInputReader() throws IOException {\n+        this.jsonBuilder = new JSONBuilder();\n+    }\n+\n+    /**\n+     * Read, parse the XML and notify with the output JSON message.\n+     *\n+     * @param input             XML message InputStream\n+     * @param inputSchema       Schema of the input message\n+     * @param messageBuilder    Reference of the InputXMLMessageBuilder\n+     * @throws ReaderException  Exceptions in the parsing stage\n+     */\n+    @Override\n+    public void read(InputStream input, Schema inputSchema, InputBuilder messageBuilder) throws ReaderException {\n+\n+        this.messageBuilder = messageBuilder;\n+        this.inputSchema = inputSchema;\n+\n+        OMXMLParserWrapper parserWrapper = OMXMLBuilderFactory.createOMBuilder(input);\n+        OMElement root = parserWrapper.getDocumentElement();\n+        this.jsonSchema = getInputSchema().getSchemaMap();\n+\n+        try {\n+            xmlTraverse(root, null, jsonSchema);\n+            jsonBuilder.writeEndObject();\n+            writeTerminateElement();\n+        } catch (IOException | JSException | SchemaException | InvalidPayloadException e) {\n+            throw new ReaderException(\"Error while parsing XML input stream. \" + e.getMessage());\n+        }\n+\n+    }\n+\n+    /**\n+     * This method will perform a Depth First Search on the XML message and build the json message.\n+     *\n+     * @param omElement         Root element\n+     * @param prevElementName   Name of the previous element only if the previous element was an array, a null otherwise\n+     * @param jsonSchemaMap     Reduced json input schema map that is applicable to this level\n+     * @return                  The name of the previous element if the element was an array element, null otherwise\n+     * @throws IOException\n+     * @throws ReaderException\n+     * @throws SchemaException\n+     * @throws JSException\n+     * @throws InvalidPayloadException\n+     */\n+    public String xmlTraverse(OMElement omElement, String prevElementName, Map jsonSchemaMap)\n+            throws IOException, ReaderException, SchemaException, JSException, InvalidPayloadException {\n+\n+        /* isObject becomes true if the current element is an object, therefore object end element can be written at\n+         * the end */\n+        boolean isObject = false;\n+\n+        boolean isArrayElement = false;\n+        String prevElementNameSpaceLocalName = null;\n+        String elementType;\n+        Map nextJSONSchemaMap;\n+\n+        /* iterator to hold the child elements of the passed OMElement */\n+        Iterator<OMElement> it;\n+\n+        /* Reading parameters of the currently processing OMElement */\n+        localName = omElement.getLocalName();\n+        nameSpaceURI = this.getNameSpaceURI(omElement);\n+        String nameSpaceLocalName = getNamespacesAndIdentifiersAddedFieldName(nameSpaceURI, localName, omElement);\n+\n+        elementType = getElementType(jsonSchemaMap, nameSpaceLocalName);\n+        if (NULL_ELEMENT_TYPE.equals(elementType)) {\n+            /* Check whether the input payload has empty tags. */\n+            log.warn(\"Element name not found : \" + nameSpaceLocalName);\n+        }\n+\n+        nextJSONSchemaMap = buildNextSchema(jsonSchemaMap, elementType, nameSpaceLocalName);\n+        if (nextJSONSchemaMap == null) {\n+            throw new ReaderException(\n+                    \"Input type is incorrect or Invalid element found in the message payload : \" + nameSpaceLocalName);\n+        }\n+        /* if this is new object preceding an array, close the array before writing the new element */\n+        if (prevElementName != null && !nameSpaceLocalName.equals(prevElementName)) {\n+            writeArrayEndElement();\n+            prevElementName = null;\n+        }\n+\n+        if (ARRAY_ELEMENT_TYPE.equals(elementType)) {\n+            if (prevElementName == null) {\n+                writeArrayStartElement(nameSpaceLocalName);\n+            }\n+            elementType = getArraySubElementType(jsonSchemaMap, nameSpaceLocalName);\n+            isArrayElement = true;\n+        }\n+\n+        if (nameSpaceLocalName.equals(getInputSchema().getName())) {\n+            writeAnonymousObjectStartElement();\n+        } else if (OBJECT_ELEMENT_TYPE.equals(elementType)) {\n+            isObject = true;\n+            if (isArrayElement) {\n+                writeAnonymousObjectStartElement();\n+                elementType = getArrayObjectTextElementType(jsonSchemaMap, nameSpaceLocalName);\n+            } else {\n+                writeObjectStartElement(nameSpaceLocalName);\n+                elementType = getObjectTextElementType(jsonSchemaMap, nameSpaceLocalName);\n+            }\n+        }\n+        /* If there is text in the OMElement */\n+        if (DataMapperEngineConstants.STRING_ELEMENT_TYPE.equals(elementType)\n+                || DataMapperEngineConstants.BOOLEAN_ELEMENT_TYPE.equals(elementType)\n+                || DataMapperEngineConstants.INTEGER_ELEMENT_TYPE.equals(elementType)\n+                || DataMapperEngineConstants.NUMBER_ELEMENT_TYPE.equals(elementType)) {\n+            if (isObject) { // if it is a normal object or an array element object\n+                writeFieldElement(SCHEMA_XML_ELEMENT_TEXT_VALUE_FIELD, omElement.getText(), elementType);\n+            } else if (!isArrayElement) { // if it is a normal XML element (not a object or part of an array)\n+                writeFieldElement(nameSpaceLocalName, omElement.getText(), elementType);\n+            } else { // primitive array elements\n+                writePrimitiveElement(omElement.getText(), elementType);\n+            }\n+        }\n+\n+        /* writing attributes to the JSON message */\n+        it_attr = omElement.getAllAttributes();\n+        if (it_attr.hasNext()) {\n+            writeAttributes(nextJSONSchemaMap);\n+        }\n+\n+        it = omElement.getChildElements();\n+\n+        /* Recursively call all the children */\n+        if (!isXsiNil(omElement)) {\n+            while (it.hasNext()) {\n+                prevElementNameSpaceLocalName = xmlTraverse(it.next(), prevElementNameSpaceLocalName,\n+                        nextJSONSchemaMap);\n+            }\n+        }\n+\n+        /* Closing the opened JSON objects and arrays */\n+        if (prevElementNameSpaceLocalName != null) {\n+            writeArrayEndElement();\n+        }\n+\n+        if (isObject) {\n+            writeObjectEndElement();\n+        }\n+\n+        if (isArrayElement) {\n+            return nameSpaceLocalName;\n+        }\n+        return null;\n+    }\n+\n+    /**\n+     * This method is used to get the namespace URI of an XML element (OMElement).\n+     *\n+     * @param omElement\n+     * @return Namespace URI of the given OMElement, if there is no Namespace return an empty String\n+     */\n+    private String getNameSpaceURI(OMElement omElement) {\n+        String nameSpaceURI = \"\";\n+        if (omElement.getNamespace() != null) {\n+            nameSpaceURI = omElement.getNamespace().getNamespaceURI();\n+        }\n+        return nameSpaceURI;\n+    }\n+\n+    /**\n+     * This method is used to get the namespace URI of an XML attribute (OMAttribute).\n+     *\n+     * @param omAttribute\n+     * @return Namespace URI of the given OMAttribute, if there is no Namespace return an empty String\n+     */\n+    private String getNameSpaceURI(OMAttribute omAttribute) {\n+        String nameSpaceURI = \"\";\n+        if (omAttribute.getNamespace() != null) {\n+            nameSpaceURI = omAttribute.getNamespace().getNamespaceURI();\n+        }\n+        return nameSpaceURI;\n+    }\n+\n+    /**\n+     * This method writes attribute elements into the JSON input message.\n+     *\n+     * @param jsonSchemaMap current level JSON Schema\n+     * @throws JSException\n+     * @throws SchemaException\n+     * @throws ReaderException\n+     * @throws IOException\n+     * @throws InvalidPayloadException\n+     */\n+    private void writeAttributes(Map jsonSchemaMap)\n+            throws JSException, SchemaException, ReaderException, IOException, InvalidPayloadException {\n+\n+        /* currently processing attribute element and its parameters*/\n+        String attributeType;\n+        String attributeFieldName;\n+        String attributeLocalName;\n+        String attributeNSURI;\n+        String attributeQName;\n+        OMAttribute omAttribute;\n+\n+        /** Writing next attributes to the JSON message */\n+        while (it_attr.hasNext()) {\n+            omAttribute = it_attr.next();","path":"mediators/datamapper/components/org.wso2.carbon.gateway.mediators.datamapper.engine/src/main/java/org/wso2/carbon/gateway/mediators/datamapper/engine/input/readers/XMLInputReader.java","position":292,"original_position":292,"commit_id":"660385c25f7377943cc87fdc88ec950db8600335","original_commit_id":"660385c25f7377943cc87fdc88ec950db8600335","user":{"login":"ramith","id":3402882,"avatar_url":"https://avatars.githubusercontent.com/u/3402882?v=3","gravatar_id":"","url":"https://api.github.com/users/ramith","html_url":"https://github.com/ramith","followers_url":"https://api.github.com/users/ramith/followers","following_url":"https://api.github.com/users/ramith/following{/other_user}","gists_url":"https://api.github.com/users/ramith/gists{/gist_id}","starred_url":"https://api.github.com/users/ramith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ramith/subscriptions","organizations_url":"https://api.github.com/users/ramith/orgs","repos_url":"https://api.github.com/users/ramith/repos","events_url":"https://api.github.com/users/ramith/events{/privacy}","received_events_url":"https://api.github.com/users/ramith/received_events","type":"User","site_admin":false},"body":"is it_attr adheres to our best practices? ","created_at":"2016-10-19T06:45:30Z","updated_at":"2016-10-19T06:45:30Z","html_url":"https://github.com/wso2/carbon-gateway-framework/pull/49#discussion_r84005554","pull_request_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49","_links":{"self":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/comments/84005554"},"html":{"href":"https://github.com/wso2/carbon-gateway-framework/pull/49#discussion_r84005554"},"pull_request":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49"}}},"pull_request":{"url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49","id":89768369,"html_url":"https://github.com/wso2/carbon-gateway-framework/pull/49","diff_url":"https://github.com/wso2/carbon-gateway-framework/pull/49.diff","patch_url":"https://github.com/wso2/carbon-gateway-framework/pull/49.patch","issue_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues/49","number":49,"state":"open","locked":false,"title":"Integrating Data mapper","user":{"login":"SupunS","id":7834839,"avatar_url":"https://avatars.githubusercontent.com/u/7834839?v=3","gravatar_id":"","url":"https://api.github.com/users/SupunS","html_url":"https://github.com/SupunS","followers_url":"https://api.github.com/users/SupunS/followers","following_url":"https://api.github.com/users/SupunS/following{/other_user}","gists_url":"https://api.github.com/users/SupunS/gists{/gist_id}","starred_url":"https://api.github.com/users/SupunS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SupunS/subscriptions","organizations_url":"https://api.github.com/users/SupunS/orgs","repos_url":"https://api.github.com/users/SupunS/repos","events_url":"https://api.github.com/users/SupunS/events{/privacy}","received_events_url":"https://api.github.com/users/SupunS/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-10-18T08:30:16Z","updated_at":"2016-10-19T06:45:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bf4e29d4fb5e26581024354492210aa75a72ef3b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49/commits","review_comments_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49/comments","review_comment_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues/49/comments","statuses_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/statuses/660385c25f7377943cc87fdc88ec950db8600335","head":{"label":"SupunS:data-mapper","ref":"data-mapper","sha":"660385c25f7377943cc87fdc88ec950db8600335","user":{"login":"SupunS","id":7834839,"avatar_url":"https://avatars.githubusercontent.com/u/7834839?v=3","gravatar_id":"","url":"https://api.github.com/users/SupunS","html_url":"https://github.com/SupunS","followers_url":"https://api.github.com/users/SupunS/followers","following_url":"https://api.github.com/users/SupunS/following{/other_user}","gists_url":"https://api.github.com/users/SupunS/gists{/gist_id}","starred_url":"https://api.github.com/users/SupunS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SupunS/subscriptions","organizations_url":"https://api.github.com/users/SupunS/orgs","repos_url":"https://api.github.com/users/SupunS/repos","events_url":"https://api.github.com/users/SupunS/events{/privacy}","received_events_url":"https://api.github.com/users/SupunS/received_events","type":"User","site_admin":false},"repo":{"id":69318723,"name":"carbon-gateway-framework","full_name":"SupunS/carbon-gateway-framework","owner":{"login":"SupunS","id":7834839,"avatar_url":"https://avatars.githubusercontent.com/u/7834839?v=3","gravatar_id":"","url":"https://api.github.com/users/SupunS","html_url":"https://github.com/SupunS","followers_url":"https://api.github.com/users/SupunS/followers","following_url":"https://api.github.com/users/SupunS/following{/other_user}","gists_url":"https://api.github.com/users/SupunS/gists{/gist_id}","starred_url":"https://api.github.com/users/SupunS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SupunS/subscriptions","organizations_url":"https://api.github.com/users/SupunS/orgs","repos_url":"https://api.github.com/users/SupunS/repos","events_url":"https://api.github.com/users/SupunS/events{/privacy}","received_events_url":"https://api.github.com/users/SupunS/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/SupunS/carbon-gateway-framework","description":null,"fork":true,"url":"https://api.github.com/repos/SupunS/carbon-gateway-framework","forks_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/forks","keys_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/teams","hooks_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/hooks","issue_events_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/issues/events{/number}","events_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/events","assignees_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/assignees{/user}","branches_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/branches{/branch}","tags_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/tags","blobs_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/languages","stargazers_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/stargazers","contributors_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/contributors","subscribers_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/subscribers","subscription_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/subscription","commits_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/contents/{+path}","compare_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/merges","archive_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/downloads","issues_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/issues{/number}","pulls_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/labels{/name}","releases_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/releases{/id}","deployments_url":"https://api.github.com/repos/SupunS/carbon-gateway-framework/deployments","created_at":"2016-09-27T04:18:37Z","updated_at":"2016-09-27T04:18:38Z","pushed_at":"2016-10-19T04:11:11Z","git_url":"git://github.com/SupunS/carbon-gateway-framework.git","ssh_url":"git@github.com:SupunS/carbon-gateway-framework.git","clone_url":"https://github.com/SupunS/carbon-gateway-framework.git","svn_url":"https://github.com/SupunS/carbon-gateway-framework","homepage":null,"size":817,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"wso2:master","ref":"master","sha":"1f16bf2332ecea415e35dd19616f0d986e096961","user":{"login":"wso2","id":533043,"avatar_url":"https://avatars.githubusercontent.com/u/533043?v=3","gravatar_id":"","url":"https://api.github.com/users/wso2","html_url":"https://github.com/wso2","followers_url":"https://api.github.com/users/wso2/followers","following_url":"https://api.github.com/users/wso2/following{/other_user}","gists_url":"https://api.github.com/users/wso2/gists{/gist_id}","starred_url":"https://api.github.com/users/wso2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wso2/subscriptions","organizations_url":"https://api.github.com/users/wso2/orgs","repos_url":"https://api.github.com/users/wso2/repos","events_url":"https://api.github.com/users/wso2/events{/privacy}","received_events_url":"https://api.github.com/users/wso2/received_events","type":"Organization","site_admin":false},"repo":{"id":56567417,"name":"carbon-gateway-framework","full_name":"wso2/carbon-gateway-framework","owner":{"login":"wso2","id":533043,"avatar_url":"https://avatars.githubusercontent.com/u/533043?v=3","gravatar_id":"","url":"https://api.github.com/users/wso2","html_url":"https://github.com/wso2","followers_url":"https://api.github.com/users/wso2/followers","following_url":"https://api.github.com/users/wso2/following{/other_user}","gists_url":"https://api.github.com/users/wso2/gists{/gist_id}","starred_url":"https://api.github.com/users/wso2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wso2/subscriptions","organizations_url":"https://api.github.com/users/wso2/orgs","repos_url":"https://api.github.com/users/wso2/repos","events_url":"https://api.github.com/users/wso2/events{/privacy}","received_events_url":"https://api.github.com/users/wso2/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wso2/carbon-gateway-framework","description":null,"fork":false,"url":"https://api.github.com/repos/wso2/carbon-gateway-framework","forks_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/forks","keys_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/teams","hooks_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/hooks","issue_events_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues/events{/number}","events_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/events","assignees_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/assignees{/user}","branches_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/branches{/branch}","tags_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/tags","blobs_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/languages","stargazers_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/stargazers","contributors_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/contributors","subscribers_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/subscribers","subscription_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/subscription","commits_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/contents/{+path}","compare_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/merges","archive_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/downloads","issues_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues{/number}","pulls_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/labels{/name}","releases_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/releases{/id}","deployments_url":"https://api.github.com/repos/wso2/carbon-gateway-framework/deployments","created_at":"2016-04-19T05:33:44Z","updated_at":"2016-08-30T13:02:40Z","pushed_at":"2016-10-19T04:50:30Z","git_url":"git://github.com/wso2/carbon-gateway-framework.git","ssh_url":"git@github.com:wso2/carbon-gateway-framework.git","clone_url":"https://github.com/wso2/carbon-gateway-framework.git","svn_url":"https://github.com/wso2/carbon-gateway-framework","homepage":null,"size":916,"stargazers_count":2,"watchers_count":2,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":37,"mirror_url":null,"open_issues_count":8,"forks":37,"open_issues":8,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49"},"html":{"href":"https://github.com/wso2/carbon-gateway-framework/pull/49"},"issue":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues/49"},"comments":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/issues/49/comments"},"review_comments":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49/comments"},"review_comment":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/pulls/49/commits"},"statuses":{"href":"https://api.github.com/repos/wso2/carbon-gateway-framework/statuses/660385c25f7377943cc87fdc88ec950db8600335"}}}}
{"actor":{"display_login":"ramith"}}