some exception in stacktrace?

2011/3/25 Ankit <[email protected]>

> Hi All,
>
> I am new to the GWT looking for some help in the following code.
>
> Basically want to iterate over some json data and display it in a cell
> Table.
>
> Here is how it looks like.
>
> (1) JsonIntegrate.gwt.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <module rename-to='jsonintegrate'>
>  <!-- Inherit the core Web Toolkit stuff.                        -->
>  <inherits name='com.google.gwt.user.User'/>
>
>  <!-- Inherit the default GWT style sheet.  You can change       -->
>  <!-- the theme of your GWT application by uncommenting          -->
>  <!-- any one of the following lines.                            -->
>  <inherits name='com.google.gwt.user.theme.standard.Standard'/>
>  <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
>  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->
>
>  <!-- Other module inherits                                      -->
>  <inherits name="com.google.gwt.http.HTTP" />
>
>  <!-- Specify the app entry point class.                         -->
>  <entry-point class='com.symantec.mmavis.gwt.client.JsonIntegrate'/>
>
>  <!-- Specify the paths for translatable code                    -->
>  <source path='client'/>
>  <source path='shared'/>
>
> </module>
>
> (2) Client.
>
> JsonIntegrate.java
>
> package com.symantec.mmavis.gwt.client;
>
> import java.util.ArrayList;
> import java.util.Collections;
> import java.util.Comparator;
> import java.util.List;
>
> import com.google.gwt.core.client.EntryPoint;
> import com.google.gwt.core.client.GWT;
> import com.google.gwt.core.client.JsArray;
> import com.google.gwt.http.client.Request;
> import com.google.gwt.http.client.RequestBuilder;
> import com.google.gwt.http.client.RequestCallback;
> import com.google.gwt.http.client.RequestException;
> import com.google.gwt.http.client.Response;
> import com.google.gwt.http.client.URL;
> import com.google.gwt.user.cellview.client.CellTable;
> import com.google.gwt.user.cellview.client.ColumnSortList;
> import com.google.gwt.user.cellview.client.TextColumn;
> import
> com.google.gwt.user.cellview.client.ColumnSortEvent.AsyncHandler;
> import com.google.gwt.user.client.Timer;
> import com.google.gwt.user.client.ui.RootPanel;
> import com.google.gwt.view.client.AsyncDataProvider;
> import com.google.gwt.view.client.HasData;
> import com.google.gwt.view.client.ListDataProvider;
> import com.google.gwt.view.client.Range;
>
> /**
>  * Entry point classes define <code>onModuleLoad()</code>.
>  */
> public class JsonIntegrate implements EntryPoint {
>
>        // The list of data to display.
>
>        //ResultData rs1 = new ResultData();
>
>        //private static List<Contact> CONTACTS = Arrays.asList(new
> Contact("John", "123 Fourth Road"), new Contact("Mary", "222 Lancer
> Lane"), new Contact("Zander", "94 Road Street"));
>        private static final String JSON_URL = GWT.getModuleBaseURL() +
> "search?q=5";
>
>        private ListDataProvider<SearchResult> dataProvider = new
> ListDataProvider<SearchResult>();
>
>        private final ArrayList<SearchResult> contactList = new
> ArrayList<SearchResult>();
>
>        public void onModuleLoad() {
>
>                // Create a CellTable.
>                final CellTable<SearchResult> table = new
> CellTable<SearchResult>();
>
>                // Create ordernumber column.
>                final TextColumn<SearchResult> orderColumn = new
> TextColumn<SearchResult>() {
>                        @Override
>                        public String getValue(final SearchResult contact) {
>                                return contact.getOrdernumber();
>                        }
>                };
>
>                // Make the name column sortable.
>                orderColumn.setSortable(true);
>
>                // Create status column.
>                final TextColumn<SearchResult> statusColumn = new
> TextColumn<SearchResult>() {
>                        @Override
>                        public String getValue(final SearchResult contact) {
>                                return contact.getStatus();
>                        }
>                };
>                statusColumn.setSortable(true);
>
>                // Create View Detail Column
>                TextColumn<SearchResult> viewDetailColumn = new
> TextColumn<SearchResult>() {
>
>                        @Override
>                        public String getValue(SearchResult contact) {
>                                return contact.getDetail();
>                        }
>                };
>                viewDetailColumn.setSortable(true);
>
>                // Add the columns.
>                table.addColumn(orderColumn, "Order Number");
>                table.addColumn(statusColumn, "Status");
>                table.addColumn(viewDetailColumn, "View Detail");
>
>                this.getJsonData();
>
>                // Set the total row count. You might send an RPC request to
> determine the
>                // total row count.
>                table.setRowCount(contactList.size(), true);
>
>                // Set the range to display. In this case, our visible range
> is
> smaller than
>                // the data set.
>                table.setVisibleRange(0, contactList.size());
>
>                // Create a data provider.
>                final AsyncDataProvider<SearchResult> dataProvider = new
> AsyncDataProvider<SearchResult>() {
>                        @Override
>                        protected void onRangeChanged(final
> HasData<SearchResult> display)
> {
>                                final Range range =
> display.getVisibleRange();
>
>                                // Get the ColumnSortInfo from the table.
>                                final ColumnSortList sortList =
> table.getColumnSortList();
>
>                                // This timer is here to illustrate the
> asynchronous nature of
> this data
>                                // provider. In practice, you would use an
> asynchronous RPC call
> to
>                                // request data in the specified range.
>                                new Timer() {
>                                        @Override
>                                        public void run() {
>                                                final int start =
> range.getStart();
>                                                final int end = start +
> range.getLength();
>                                                // This sorting code is here
> so the example works. In practice,
> you
>                                                // would sort on the server.
>
>  Collections.sort(contactList, new Comparator<SearchResult>() {
>
>                                                        @Override
>                                                        public int
> compare(final SearchResult o1, final SearchResult
> o2) {
>                                                                if (o1 ==
> o2) {
>
>  return 0;
>                                                                }
>
>                                                                // Compare
> the name columns.
>                                                                int diff =
> -1;
>                                                                if (o1 !=
> null) {
>                                                                        diff
> = (o2 != null) ?
> o1.getOrdernumber().compareTo(o2.getOrdernumber()) : 1;
>                                                                }
>                                                                return
> sortList.get(0).isAscending() ? diff : -diff;
>                                                        }
>
>                                                });
>                                                final List<SearchResult>
> dataInRange =
> contactList.subList(start, end);
>
>                                                // Push the data back into
> the list.
>                                                table.setRowData(start,
> dataInRange);
>                                        }
>                                }.schedule(2000);
>                        }
>                };
>
>                // Connect the list to the data provider.
>                dataProvider.addDataDisplay(table);
>
>                // Add a ColumnSortEvent.AsyncHandler to connect sorting to
> the
>                // AsyncDataPRrovider.
>                final AsyncHandler columnSortHandler = new
> AsyncHandler(table);
>                table.addColumnSortHandler(columnSortHandler);
>
>                // We know that the data is sorted alphabetically by
> default.
>                table.getColumnSortList().push(orderColumn);
>
>                // Add it to the root panel.
>                RootPanel.get().add(table);
>        }
>
>
>
>        private void getJsonData() {
>
>                String url = JSON_URL;
>
>                url = URL.encode(url);
>
>                // Send request to server and catch any errors.
>                final RequestBuilder builder = new
> RequestBuilder(RequestBuilder.GET, url);
>
>                try {
>                        final Request request = builder.sendRequest(null,
> new
> RequestCallback() {
>                                public void onError(final Request request,
> final Throwable
> exception) {
>                                        System.out.println("error");
>                                }
>
>                                public void onResponseReceived(final Request
> request, final
> Response response) {
>                                        if (200 == response.getStatusCode())
> {
>
>  loadData(asArrayOfResultData(response.getText()));
>                                        } else {
>                                                System.out.println("error");
>                                        }
>                                }
>                        });
>                } catch (final RequestException e) {
>                        System.out.println("error");
>                }
>
>        }
>
>        /**
>         * Update the Price and Change fields all the rows in the stock
> table.
>         *
>         * @param prices Stock data for all rows.
>         */
>        private void loadData(final JsArray<ResultData> resultData) {
>
>                for (int i = 0; i < resultData.length(); i++) {
>
>                        ResultData res = resultData.get(i);
>
>                        SearchResult c = new
> SearchResult(res.getOrdernumber(),
> res.getStatus(), res.getDetail());
>                        contactList.add(c);
>                }
>
>                // Display timestamp showing last refresh.
>                //this.lastUpdatedLabel.setText("Last update : " +
> DateTimeFormat.getMediumDateTimeFormat().format(new Date()));
>
>                // Clear any errors.
>                //this.errorMsgLabel.setVisible(false);
>
>        }
>
>        /**
>         * Convert the string of JSON into JavaScript object.
>         */
>        private final native JsArray<ResultData> asArrayOfResultData(String
> json) /*-{
>                return eval(json);
>        }-*/;
>
> }
>
> (3) Server
>
> package com.symantec.mmavis.gwt.server;
>
> import java.io.IOException;
> import java.io.PrintWriter;
>
> import javax.servlet.ServletException;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> public class JsonResultData extends HttpServlet {
>
>        private static final long serialVersionUID = 1855404725167762932L;
>
>        @Override
>        protected void doGet(final HttpServletRequest req, final
> HttpServletResponse resp) throws ServletException, IOException {
>
>                // final Random rnd = new Random();
>
>                final Result result_1 = new Result("1001", "Valid", "View
> Detail
> 1");
>                final Result result_2 = new Result("1002", "Pending", "View
> Detail
> 2");
>                final Result result_3 = new Result("1003", "Revoked", "View
> Detail
> 3");
>                final Result result_4 = new Result("1004", "Revoked", "View
> Detail
> 4");
>                final Result result_5 = new Result("1005", "Valid", "View
> Detail
> 5");
>                final Result result_6 = new Result("1006", "Pending", "View
> Detail
> 6");
>                final Result result_7 = new Result("1007", "Valid", "View
> Detail
> 7");
>                final Result result_8 = new Result("1008", "Valid", "View
> Detail
> 8");
>                final Result result_9 = new Result("1009", "Revoked", "View
> Detail
> 9");
>                final Result result_10 = new Result("1010", "Valid", "View
> Detail
> 10");
>
>                final Result[] arrayResult = { result_1, result_2, result_3,
> result_4, result_5, result_6, result_7, result_8, result_9,
> result_10 };
>
>                final PrintWriter out = resp.getWriter();
>                out.println('[');
>                final int count = Integer.valueOf(req.getParameter("q"));
>
>                for (int i = 0; i < count; i++) {
>
>                        out.println("  {");
>                        out.print("    \"ordernumber\": \"");
>                        out.print(arrayResult[i].getOrdernumber());
>                        out.println("\",");
>                        out.print("    \"status\": \"");
>                        out.print(arrayResult[i].getStatus());
>                        out.println("\",");
>                        out.print("    \"detail\": \"");
>                        out.print(arrayResult[i].getDetail());
>                        out.println("\"");
>                        out.println("}, ");
>
>                }
>                out.println(']');
>                out.flush();
>        }
> }
>
> So basically server side we have some json being generated:
>
> http://127.0.0.1:8888/jsonintegrate/search?q=8
>
> When load this page:
> http://127.0.0.1:8888/JsonIntegrate.html?gwt.codesvr=127.0.0.1:9997
> it only loads up the header, the data is not visible..can somebody
> please help ??
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google Web Toolkit" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-web-toolkit?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to