blob: ef36f4d02ec6d202814457575f6bc64d6e8ae9c8 [file] [log] [blame]
David Reissea2cba82009-03-30 21:35:00 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
Bryan Duxburyd815c212009-03-19 18:57:43 +000020package org.apache.thrift.test;
21
22import java.io.BufferedInputStream;
23import java.io.FileInputStream;
24
25import org.apache.thrift.protocol.TProtocol;
26import org.apache.thrift.protocol.TProtocolFactory;
27import org.apache.thrift.transport.TIOStreamTransport;
28import org.apache.thrift.transport.TTransport;
29
30import thrift.test.CompactProtoTestStruct;
31
32public class ReadStruct {
33 public static void main(String[] args) throws Exception {
34 if (args.length != 2) {
35 System.out.println("usage: java -cp build/classes org.apache.thrift.test.ReadStruct filename proto_factory_class");
36 System.out.println("Read in an instance of CompactProtocolTestStruct from 'file', making sure that it is equivalent to Fixtures.compactProtoTestStruct. Use a protocol from 'proto_factory_class'.");
37 }
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000038
Bryan Duxburyd815c212009-03-19 18:57:43 +000039 TTransport trans = new TIOStreamTransport(new BufferedInputStream(new FileInputStream(args[0])));
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000040
Bryan Duxburyd815c212009-03-19 18:57:43 +000041 TProtocolFactory factory = (TProtocolFactory)Class.forName(args[1]).newInstance();
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000042
Bryan Duxburyd815c212009-03-19 18:57:43 +000043 TProtocol proto = factory.getProtocol(trans);
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000044
Bryan Duxburyd815c212009-03-19 18:57:43 +000045 CompactProtoTestStruct cpts = new CompactProtoTestStruct();
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000046
47 for (CompactProtoTestStruct._Fields fid : CompactProtoTestStruct.metaDataMap.keySet()) {
Bryan Duxburyd815c212009-03-19 18:57:43 +000048 cpts.setFieldValue(fid, null);
49 }
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000050
Bryan Duxburyd815c212009-03-19 18:57:43 +000051 cpts.read(proto);
Bryan Duxburyaa9fb5d2009-11-12 20:52:25 +000052
Bryan Duxburyd815c212009-03-19 18:57:43 +000053 if (cpts.equals(Fixtures.compactProtoTestStruct)) {
54 System.out.println("Object verified successfully!");
55 } else {
56 System.out.println("Object failed verification!");
57 System.out.println("Expected: " + Fixtures.compactProtoTestStruct + " but got " + cpts);
58 }
Bryan Duxburyd815c212009-03-19 18:57:43 +000059 }
60
61}