Search in sources :

Example 6 with Header

use of jp.ossc.nimbus.beans.dataset.Header in project nimbus by nimbus-org.

the class DataSetXpathConverter method convertToObject.

/**
 * 指定された{@link DataSet}サブクラスのオブジェクトへ変換する。
 * @param inputStream 入力ストリーム
 * @param returnObject 変換対象の{@link DataSet}サブクラス
 * @return 指定したデータセットサブクラスに変換されたオブジェクト
 * @throws ConvertException 変換に失敗した場合
 */
public Object convertToObject(InputStream inputStream, Object returnObject) throws ConvertException {
    DataSet result = null;
    // 出力DataSet生成
    if (returnObject != null) {
        if (DataSet.class.isAssignableFrom(returnObject.getClass())) {
            result = ((DataSet) returnObject).cloneDataSet();
        } else {
            throw new ConvertException("A return object is not a sub-class of DataSet.");
        }
    } else {
        throw new ConvertException("A return object is not specified.");
    }
    Document document = parseXml(inputStream);
    validateXml(document);
    // Header要素抽出
    Iterator headers = result.getHeaderMap().values().iterator();
    while (headers.hasNext()) {
        Header header = (Header) headers.next();
        createRecord(document, result, header, header.getRecordSchema());
    }
    // RecordList要素抽出
    Iterator recordLists = result.getRecordListMap().values().iterator();
    while (recordLists.hasNext()) {
        RecordList recordList = (RecordList) recordLists.next();
        createRecord(document, result, recordList, recordList.getRecordSchema());
    }
    return result;
}
Also used : Header(jp.ossc.nimbus.beans.dataset.Header) RecordList(jp.ossc.nimbus.beans.dataset.RecordList) DataSet(jp.ossc.nimbus.beans.dataset.DataSet) Iterator(java.util.Iterator) Document(org.w3c.dom.Document)

Example 7 with Header

use of jp.ossc.nimbus.beans.dataset.Header in project nimbus by nimbus-org.

the class HttpClientFactoryServiceTest method testExecuteRequestWithNoRequestCharacterEncoding.

// /**
// * 指定された論理アクション名に該当するリクエストを発行するテスト。
// * <p>
// * 条件:
// * <ul>
// * <li>次の内容の定義ファイルをロードし、HttpClientFactoryServiceインスタンスを生成する</li>
// * <li>Journal,Sequenceサービス定義あり</li>
// * <li>RequestContentType:application/xml</li>
// * <li>RequestCharacterEncoding:Shift_JIS</li>
// * <li>RequestHeaders:Accept-Encoding=gzip</li>
// * <li>RequestStreamConverterServiceName:#DataSetXMLConverter</li>
// * <li>ResponseStreamConverterServiceName:#ResponseStreamConverter</li>
// * <li>Proxy:#localhost:8280</li>
// * <li>論理アクション名"login"のリクエスト情報を定義</li>
// * <li>HttpClientFactoryService#createHttpClient()を実行し、HttpClientを生成</li>
// * <li>HttpRequestImpl#createRequest(論理アクション名)を実行し、HttpRequestを生成</li>
// * <li>送信するデータセットを次の内容で生成し、HttpRequest#setObject()でセット<BR>
// * スキーマ::name,java.lang.String,,,\n:age,int,,,<BR>
// * 値   :name=hoge,age=25 </li>
// * <li>Proxy:#localhost:8280</li>
// * <li>生成したHttpRequestを指定して、HttpClientImpl#executeRequest(request)を実行</li>
// * </ul>
// * 確認:
// * <ul>
// * <li>送信先で指定した次の値がHTTPリクエストに正しく設定されていることを確認</li>
// * <li>レスポンスの内容が正しく設定されていることを確認</li>
// * </ul>
// */
// public void testExecuteRequestWithJournal() {
// try {
// if (!ServiceManagerFactory
// .loadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest3.xml")) {
// System.exit(-1);
// }
// final HttpClientFactory factory = (HttpClientFactory) ServiceManagerFactory
// .getServiceObject("HttpClientFactory");
// HttpClientImpl client = (HttpClientImpl) factory.createHttpClient();
// 
// DataSet requestDs = new DataSet("Login");
// requestDs.setHeaderSchema(
// "UserInfo",
// ":name,java.lang.String,,,\n"
// + ":age,int,,,"
// );
// Header userInfo = requestDs.getHeader("UserInfo");
// userInfo.setProperty("name", "hoge");
// userInfo.setProperty("age", 25);
// 
// HttpRequest request = factory.createRequest("login");
// request.setObject(requestDs);
// 
// HttpResponse res = client.executeRequest(request);
// //レスポンス内容の確認
// assertEquals(200, res.getStatusCode());
// assertEquals("testdata", res.getObject());
// 
// 
// /*Proxyテスト用プログラム(jp.ossc.nimbus.service.http.proxy.TestHttpProcessService)
// * の出力ファイルの内容を確認し、HTTPリクエストデータを検証
// */
// 
// BufferedReader br = new BufferedReader(
// new FileReader("jp/ossc/nimbus/service/http/httpclient/help_output.txt"));
// 
// String s;
// StringBuffer sb = new StringBuffer();
// //Requestヘッダの検証
// while((s = br.readLine()) != null){
// if(s.startsWith("Content-Type:")){
// assertTrue(s.endsWith("application/xml;charset=Shift_JIS"));
// }
// if(s.startsWith("Accept-Encoding")){
// assertTrue(s.endsWith("gzip"));
// }
// sb.append(s);
// }
// br.close();
// //DataSet内容の検証
// assertTrue(sb.toString().endsWith(
// "<dataSet name=\"Login\"><schema>" +
// "<header name=\"UserInfo\">:name,java.lang.String,,,:age,int,,,</header>" +
// "</schema><header name=\"UserInfo\">" +
// "<name>hoge</name><age>25</age></header></dataSet>"));
// //Journalの内容検証
// HttpClientFactoryService hcf = (HttpClientFactoryService)factory;
// final ObjectMappedEditorFinderService finder =
// (ObjectMappedEditorFinderService) ServiceManagerFactory.getServiceObject("JournalEditorFinder");
// 
// assertEquals("",hcf.journal.getCurrentJournalString(finder));
// 
// 
// 
// } catch (HttpRequestCreateException e) {
// e.printStackTrace();
// fail("例外発生");
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// fail("例外発生");
// } catch (IOException e) {
// e.printStackTrace();
// fail("例外発生");
// } finally {
// ServiceManagerFactory
// .unloadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest3.xml");
// }
// }
/**
 * 指定された論理アクション名に該当するリクエストを発行するテスト。
 * <p>
 * 条件:
 * <ul>
 * <li>次の内容の定義ファイルをロードし、HttpClientFactoryServiceインスタンスを生成する</li>
 * <li>Journal,Sequenceサービス定義あり</li>
 * <li>RequestContentType:application/xml</li>
 * <li>RequestCharacterEncoding:指定なし</li>
 * <li>RequestHeaders:Accept-Encoding=gzip</li>
 * <li>RequestStreamConverterServiceName:#DataSetXMLConverter</li>
 * <li>ResponseStreamConverterServiceName:指定なし</li>
 * <li>Proxy:#localhost:8280</li>
 * <li>論理アクション名"login"のリクエスト情報を定義</li>
 * <li>HttpClientFactoryService#createHttpClient()を実行し、HttpClientを生成</li>
 * <li>HttpRequestImpl#createRequest(論理アクション名)を実行し、HttpRequestを生成</li>
 * <li>送信するデータセットを次の内容で生成し、HttpRequest#setObject()でセット<BR>
 * スキーマ::name,java.lang.String,,,\n:age,int,,,<BR>
 * 値   :name=hoge,age=25 </li>
 * <li>Proxy:#localhost:8280</li>
 * <li>レスポンスのbodyはNullが返ってくることを想定</li>
 * <li>生成したHttpRequestを指定して、HttpClientImpl#executeRequest(request)を実行</li>
 * </ul>
 * 確認:
 * <ul>
 * <li>送信先で指定した次の値がHTTPリクエストに正しく設定されていることを確認</li>
 * </ul>
 */
public void testExecuteRequestWithNoRequestCharacterEncoding() {
    try {
        if (!ServiceManagerFactory.loadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest4.xml")) {
            System.exit(-1);
        }
        final HttpClientFactory factory = (HttpClientFactory) ServiceManagerFactory.getServiceObject("HttpClientFactory");
        HttpClientImpl client = (HttpClientImpl) factory.createHttpClient();
        DataSet requestDs = new DataSet("Login");
        requestDs.setHeaderSchema("UserInfo", ":name,java.lang.String,,,\n" + ":age,int,,,");
        Header userInfo = requestDs.getHeader("UserInfo");
        userInfo.setProperty("name", "hoge");
        userInfo.setProperty("age", 25);
        HttpRequest request = factory.createRequest("login");
        request.setObject(requestDs);
        HttpResponse res = client.executeRequest(request);
        // レスポンス内容の確認
        assertEquals(200, res.getStatusCode());
        assertNull(res.getObject());
        /*Proxyテスト用プログラム(jp.ossc.nimbus.service.http.proxy.TestHttpProcessService)
				 * の出力ファイルの内容を確認し、HTTPリクエストデータを検証
				 */
        BufferedReader br = new BufferedReader(new FileReader("target/temp/jp/ossc/nimbus/service/http/httpclient/help_output.txt"));
        String s;
        StringBuffer sb = new StringBuffer();
        // Requestヘッダの検証
        while ((s = br.readLine()) != null) {
            if (s.startsWith("Content-Type:")) {
                assertTrue(s.endsWith("application/xml"));
            }
            if (s.startsWith("Accept-Encoding")) {
                assertTrue(s.endsWith("gzip"));
            }
            sb.append(s);
        }
        br.close();
        // DataSet内容の検証
        assertTrue(sb.toString().endsWith("<dataSet name=\"Login\"><schema>" + "<header name=\"UserInfo\">:name,java.lang.String,,,:age,int,,,</header>" + "</schema><header name=\"UserInfo\">" + "<name>hoge</name><age>25</age></header></dataSet>"));
    } catch (HttpRequestCreateException e) {
        e.printStackTrace();
        fail("例外発生");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        fail("例外発生");
    } catch (IOException e) {
        e.printStackTrace();
        fail("例外発生");
    } finally {
        ServiceManagerFactory.unloadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest4.xml");
    }
}
Also used : Header(jp.ossc.nimbus.beans.dataset.Header) HttpClientImpl(jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService.HttpClientImpl)

Example 8 with Header

use of jp.ossc.nimbus.beans.dataset.Header in project nimbus by nimbus-org.

the class HttpClientFactoryServiceTest method testExecuteRequestDeflateLength.

/**
 * 指定された論理アクション名に該当するリクエストを発行するテスト。
 * <p>
 * 条件:
 * <ul>
 * <li>次の内容の定義ファイルをロードし、HttpClientFactoryServiceインスタンスを生成する</li>
 * <li>RequestContentType:application/xml</li>
 * <li>RequestDeflateLength:1000(1000バイト以下のファイルは圧縮しない)</li>
 * <li>RequestHeaders(Accept-Encoding):gzip</li>
 * <li>RequestHeaders(Content-Encoding):gzip(リクエストデータを圧縮)</li>
 * <li>RequestStreamConverterServiceName:#DataSetXMLConverter</li>
 * <li>ResponseStreamConverterServiceName:#ResponseStreamConverter</li>
 * <li>ResponseHeaders:ContentType=application/xml</li>
 * <li>Proxy:#localhost:8280</li>
 * <li>論理アクション名"login"のリクエスト情報を定義</li>
 * <li>HttpClientFactoryService#createHttpClient()を実行し、HttpClientを生成</li>
 * <li>HttpRequestImpl#createRequest(論理アクション名)を実行し、HttpRequestを生成</li>
 * <li>送信するデータセット(1000バイト以下)を次の内容で生成し、HttpRequest#setObject()でセット<BR>
 * スキーマ::name,java.lang.String,,,\n:age,int,,,<BR>
 * 値   :name=hoge,age=25 </li>
 * <li>生成したHttpRequestを指定して、HttpClientImpl#executeRequest(request)を実行</li>
 * </ul>
 * 確認:
 * <ul>
 * <li>送信先で指定した次の値がHTTPリクエストに正しく設定されていることを確認</li>
 * <li>非圧縮扱いになるのでヘッダ内からContent-Encodingが削除されていることを確認</li>
 * </ul>
 */
public void testExecuteRequestDeflateLength() {
    try {
        if (!ServiceManagerFactory.loadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTestDeflen.xml")) {
            System.exit(-1);
        }
        final HttpClientFactory factory = (HttpClientFactory) ServiceManagerFactory.getServiceObject("HttpClientFactory");
        HttpClientImpl client = (HttpClientImpl) factory.createHttpClient();
        DataSet requestDs = new DataSet("Login");
        requestDs.setHeaderSchema("UserInfo", ":name,java.lang.String,,,\n" + ":age,int,,,");
        Header userInfo = requestDs.getHeader("UserInfo");
        userInfo.setProperty("name", "hoge");
        userInfo.setProperty("age", 25);
        HttpRequest request = factory.createRequest("login");
        request.setObject(requestDs);
        HttpResponse res = client.executeRequest(request);
        // レスポンス内容の確認
        assertEquals(200, res.getStatusCode());
        assertEquals("testdata", res.getObject());
        /*Proxyテスト用プログラム(jp.ossc.nimbus.service.http.proxy.TestHttpProcessService)
				 * の出力ファイルの内容を確認し、HTTPリクエストデータを検証
				 */
        BufferedReader br = new BufferedReader(new FileReader("target/temp/jp/ossc/nimbus/service/http/httpclient/help_output.txt"));
        String s;
        StringBuffer sb = new StringBuffer();
        // Requestヘッダの検証
        while ((s = br.readLine()) != null) {
            if (s.startsWith("Content-Type:")) {
                assertTrue(s.endsWith("application/xml"));
            }
            if (s.startsWith("Content-Encoding:")) {
                fail("Content-Encodinが削除されてないため失敗");
            }
            sb.append(s);
        }
        br.close();
        // DataSet内容の検証
        assertTrue(sb.toString().endsWith("<dataSet name=\"Login\"><schema>" + "<header name=\"UserInfo\">:name,java.lang.String,,,:age,int,,,</header>" + "</schema><header name=\"UserInfo\">" + "<name>hoge</name><age>25</age></header></dataSet>"));
    } catch (HttpRequestCreateException e) {
        e.printStackTrace();
        fail("例外発生");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        fail("例外発生");
    } catch (IOException e) {
        e.printStackTrace();
        fail("例外発生");
    } catch (Exception e) {
        e.printStackTrace();
        fail("例外発生");
    } finally {
        ServiceManagerFactory.unloadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTestDeflen.xml");
    }
}
Also used : Header(jp.ossc.nimbus.beans.dataset.Header) HttpClientImpl(jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService.HttpClientImpl)

Example 9 with Header

use of jp.ossc.nimbus.beans.dataset.Header in project nimbus by nimbus-org.

the class HttpResponseImplTest method testGetHeaderMapNull.

/**
 * ヘッダー情報を取得するテスト。
 * <p>
 * 条件:
 * <ul>
 * <li>定義ファイルをロードし、HttpClientFactoryServiceインスタンスを生成する</li>
 * <li>HttpRequestImpl#createRequest(論理アクション名)を実行し、HttpRequestを生成</li>
 * <li>HttpRequestImpl#executeRequest()を実行し、HttpResponseを生成</li>
 * <li>レスポンスのヘッダーにContent-Type=text/html;charset=Shift_JISが含まれている</li>
 * <li>HttpResponseImpl#getHeader(),getHeaders()を実行</li>
 * </ul>
 * 確認:
 * <ul>
 * <li>HttpResponseImpl#getHeader(),getHeaders()が正しい結果が返されることを確認</li>
 * </ul>
 */
public void testGetHeaderMapNull() {
    try {
        if (!ServiceManagerFactory.loadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest.xml")) {
            System.exit(-1);
        }
        final HttpClientFactory factory = (HttpClientFactory) ServiceManagerFactory.getServiceObject("HttpClientFactory");
        HttpClientImpl client = (HttpClientImpl) factory.createHttpClient();
        DataSet requestDs = new DataSet("Login");
        requestDs.setHeaderSchema("UserInfo", ":name,java.lang.String,,,\n" + ":age,int,,,");
        Header userInfo = requestDs.getHeader("UserInfo");
        userInfo.setProperty("name", "hoge");
        userInfo.setProperty("age", 25);
        HttpRequest request = factory.createRequest("login");
        request.setObject(requestDs);
        HttpResponseImpl res = (HttpResponseImpl) client.executeRequest(request);
        assertEquals("text/html;charset=Shift_JIS", res.getHeader("Content-Type"));
        assertEquals("text/html;charset=Shift_JIS", res.getHeaders("Content-Type")[0]);
    } catch (Exception e) {
        e.printStackTrace();
        fail("例外発生");
    } finally {
        ServiceManagerFactory.unloadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest.xml");
    }
}
Also used : HttpRequest(jp.ossc.nimbus.service.http.HttpRequest) Header(jp.ossc.nimbus.beans.dataset.Header) DataSet(jp.ossc.nimbus.beans.dataset.DataSet) HttpClientImpl(jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService.HttpClientImpl) HttpClientFactory(jp.ossc.nimbus.service.http.HttpClientFactory) ConvertException(jp.ossc.nimbus.util.converter.ConvertException) PropertySchemaDefineException(jp.ossc.nimbus.beans.dataset.PropertySchemaDefineException)

Example 10 with Header

use of jp.ossc.nimbus.beans.dataset.Header in project nimbus by nimbus-org.

the class HttpResponseImplTest method testGetHeaderMap.

/**
 * ヘッダー情報を取得するテスト。
 * <p>
 * 条件:
 * <ul>
 * <li>定義ファイルをロードし、HttpClientFactoryServiceインスタンスを生成する</li>
 * <li>HttpRequestImpl#createRequest(論理アクション名)を実行し、HttpRequestを生成</li>
 * <li>HttpRequestImpl#executeRequest()を実行し、HttpResponseを生成</li>
 * <li>レスポンスのヘッダーにContent-Type=text/html;charset=Shift_JISが含まれている</li>
 * <li>HttpResponseImpl#getHeadermap()を実行してmapを生成</li>
 * <li>HttpResponseImpl#getHeader(),getHeaders()を実行</li>
 * </ul>
 * 確認:
 * <ul>
 * <li>HttpResponseImpl#getHeader(),getHeaders()が正しい結果が返されることを確認</li>
 * </ul>
 */
public void testGetHeaderMap() {
    try {
        if (!ServiceManagerFactory.loadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest.xml")) {
            System.exit(-1);
        }
        final HttpClientFactory factory = (HttpClientFactory) ServiceManagerFactory.getServiceObject("HttpClientFactory");
        HttpClientImpl client = (HttpClientImpl) factory.createHttpClient();
        DataSet requestDs = new DataSet("Login");
        requestDs.setHeaderSchema("UserInfo", ":name,java.lang.String,,,\n" + ":age,int,,,");
        Header userInfo = requestDs.getHeader("UserInfo");
        userInfo.setProperty("name", "hoge");
        userInfo.setProperty("age", 25);
        HttpRequest request = factory.createRequest("login");
        request.setObject(requestDs);
        HttpResponseImpl res = (HttpResponseImpl) client.executeRequest(request);
        res.getHeaderMap();
        assertEquals("text/html;charset=Shift_JIS", res.getHeader("Content-Type"));
        assertEquals("text/html;charset=Shift_JIS", res.getHeaders("Content-Type")[0]);
    } catch (Exception e) {
        e.printStackTrace();
        fail("例外発生");
    } finally {
        ServiceManagerFactory.unloadManager("jp/ossc/nimbus/service/http/httpclient/service-clientTest.xml");
    }
}
Also used : HttpRequest(jp.ossc.nimbus.service.http.HttpRequest) Header(jp.ossc.nimbus.beans.dataset.Header) DataSet(jp.ossc.nimbus.beans.dataset.DataSet) HttpClientImpl(jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService.HttpClientImpl) HttpClientFactory(jp.ossc.nimbus.service.http.HttpClientFactory) ConvertException(jp.ossc.nimbus.util.converter.ConvertException) PropertySchemaDefineException(jp.ossc.nimbus.beans.dataset.PropertySchemaDefineException)

Aggregations

Header (jp.ossc.nimbus.beans.dataset.Header)11 HttpClientImpl (jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService.HttpClientImpl)6 DataSet (jp.ossc.nimbus.beans.dataset.DataSet)5 RecordList (jp.ossc.nimbus.beans.dataset.RecordList)3 PropertySchemaDefineException (jp.ossc.nimbus.beans.dataset.PropertySchemaDefineException)2 Record (jp.ossc.nimbus.beans.dataset.Record)2 HttpClientFactory (jp.ossc.nimbus.service.http.HttpClientFactory)2 HttpRequest (jp.ossc.nimbus.service.http.HttpRequest)2 ConvertException (jp.ossc.nimbus.util.converter.ConvertException)2 Iterator (java.util.Iterator)1 Document (org.w3c.dom.Document)1