Example usage for com.google.gson.reflect TypeToken getType

List of usage examples for com.google.gson.reflect TypeToken getType

Introduction

In this page you can find the example usage for com.google.gson.reflect TypeToken getType.

Prototype

public final Type getType() 

Source Link

Document

Gets underlying Type instance.

Usage

From source file:org.wso2.msf4j.internal.router.ParamConvertUtils.java

License:Open Source License

/**
 * Creates a converter function that converts value into a {@link List}, {@link Set} or {@link SortedSet}.
 *
 * @param resultType Result type/*from w  w w .  j  a va2s.co m*/
 * @return A converter function or {@code null} if the given type is not a {@link ParameterizedType} with raw type
 * as {@link List}, {@link Set} or {@link SortedSet}. Also, for {@link SortedSet} type, if the element type
 * doesn't implements {@link Comparable}, {@code null} is returned.
 */
@SuppressWarnings("unchecked")
private static Function<List<String>, Object> createCollectionConverter(TypeToken<?> resultType) {
    final Class<?> rawType = resultType.getRawType();

    // Collection. It must be List or Set
    if (rawType != List.class && rawType != Set.class && rawType != SortedSet.class) {
        return null;
    }

    // Must be ParameterizedType
    if (!(resultType.getType() instanceof ParameterizedType)) {
        return null;
    }

    // Must have 1 type parameter
    ParameterizedType type = (ParameterizedType) resultType.getType();
    if (type.getActualTypeArguments().length != 1) {
        return null;
    }

    // For SortedSet, the entry type must be Comparable.
    Type elementType = type.getActualTypeArguments()[0];
    if (rawType == SortedSet.class
            && !Comparable.class.isAssignableFrom(TypeToken.get(elementType).getRawType())) {
        return null;
    }

    //We only support List type for java.io.File
    if (elementType == File.class && rawType != List.class) {
        throw new IllegalArgumentException("File doesn't support " + rawType);
    }

    // Get the converter for the collection element.
    final Function<List<String>, Object> elementConverter = createQueryParamConverter(elementType);

    return new Function<List<String>, Object>() {
        @Override
        public Object apply(List<String> values) {
            Collection<? extends Comparable> collection;
            if (rawType == List.class) {
                collection = new ArrayList<>();
            } else if (rawType == Set.class) {
                collection = new HashSet<>();
            } else {
                collection = new TreeSet<>();
            }

            if (values != null) {
                for (String value : values) {
                    add(collection, elementConverter.apply(Collections.singletonList(value)));
                }
            }
            return collection;
        }

        @SuppressWarnings("unchecked")
        private <T> void add(Collection<T> collection, Object element) {
            collection.add((T) element);
        }
    };
}

From source file:org.wso2.security.tools.advisorytool.output.html.SecurityAdvisoryHTMLOutputGenerator.java

License:Open Source License

/**
 * Generating the html string for a given security advisory.
 * @param securityAdvisory/*from   w  w w  .j  a va2  s  .co m*/
 * @return
 * @throws AdvisoryToolException
 */
protected String generateAdvisoryHTML(SecurityAdvisory securityAdvisory) throws AdvisoryToolException {
    TypeToken<Map<String, Object>> typeToken = new TypeToken<Map<String, Object>>() {
    };
    Gson gson = new Gson();
    String htmlString;

    try {
        TemplateLoader loader = new ClassPathTemplateLoader();
        loader.setPrefix(Constants.SECURITY_ADVISORY_HTML_TEMPLATE_DIRECTORY);
        loader.setSuffix(".hbs");
        Handlebars handlebars = new Handlebars(loader);
        Template template = handlebars.compile(Constants.SECURITY_ADVISORY_HTML_TEMPLATE);

        String jsonString = gson.toJson(securityAdvisory);
        Map<String, Object> pdfInfoMap = gson.fromJson(jsonString, typeToken.getType());

        Context context = Context.newBuilder(pdfInfoMap).build();
        htmlString = template.apply(context);
    } catch (IOException e) {
        throw new AdvisoryToolException("Failed to generate the Security Advisory HTML.", e);
    }
    return htmlString;
}

From source file:password.pwm.util.java.JsonUtil.java

License:Open Source License

public static <T> T deserialize(final String jsonString, final TypeToken typeToken) {
    return JsonUtil.getGson().fromJson(jsonString, typeToken.getType());
}

From source file:purchase.AddUpdatePurchaseBill.java

/**
 * Processes requests for both HTTP//from  w w w  . j a  v a2s  .c om
 * <code>GET</code> and
 * <code>POST</code> methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    final String headerJson = request.getParameter("header");
    final String detailJson = request.getParameter("detail");
    PurchaseControllerHeaderModel header = new Gson().fromJson(headerJson, PurchaseControllerHeaderModel.class);
    TypeToken<List<PurcahseControllerDetailModel>> token = new TypeToken<List<PurcahseControllerDetailModel>>() {
    };
    List<PurcahseControllerDetailModel> detail = new Gson().fromJson(detailJson, token.getType());
    response.getWriter().print(saveVoucher(header, (ArrayList<PurcahseControllerDetailModel>) detail));

}

From source file:purchaseReturn.AddUpdatePurchaseReturnBill.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.// w w  w.j  av  a2s  . c o m
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    final String headerJson = request.getParameter("header");
    final String detailJson = request.getParameter("detail");
    SalesReturnControllerHeaderModel header = new Gson().fromJson(headerJson,
            SalesReturnControllerHeaderModel.class);
    TypeToken<List<SalesReturnControllerDetailModel>> token = new TypeToken<List<SalesReturnControllerDetailModel>>() {
    };
    List<SalesReturnControllerDetailModel> detail = new Gson().fromJson(detailJson, token.getType());
    response.getWriter().print(saveVoucher(header, (ArrayList<SalesReturnControllerDetailModel>) detail));

}

From source file:sales.AddUpdateSalesBill.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.//  www  .  java 2s .  com
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    final String headerJson = request.getParameter("header");
    final String detailJson = request.getParameter("detail");
    SalesControllerHeaderModel header = new Gson().fromJson(headerJson, SalesControllerHeaderModel.class);
    TypeToken<List<SalesControllerDetailModel>> token = new TypeToken<List<SalesControllerDetailModel>>() {
    };
    List<SalesControllerDetailModel> detail = new Gson().fromJson(detailJson, token.getType());
    response.getWriter().print(saveVoucher(header, (ArrayList<SalesControllerDetailModel>) detail));

}

From source file:saulmm.avengers.model.rest.CharacterItemAdapterFactory.java

License:Mozilla Public License

private <T> T adaptJsonToCharacter(JsonElement jsonElement, TypeToken<T> type) {

    JsonObject jsonObject = jsonElement.getAsJsonObject();

    if (jsonObject.has("data")) {

        JsonElement marvelDataElement = jsonObject.get("data");
        JsonObject marvelDataObject = marvelDataElement.getAsJsonObject();

        if (marvelDataObject.get("count").getAsInt() == 1) {

            JsonArray marvelResults = marvelDataObject.get("results").getAsJsonArray();

            JsonElement finalElement = marvelResults.get(0);
            return new Gson().fromJson(finalElement, type.getType());
        }/*from  w w  w  . ja v a 2  s. c  o  m*/
    }

    return null;
}

From source file:saulmm.avengers.model.rest.CharacterItemAdapterFactory.java

License:Mozilla Public License

private <T> T adaptJsonToComic(JsonElement jsonElement, TypeToken<T> type) {

    JsonObject jsonObject = jsonElement.getAsJsonObject();

    if (jsonObject.has("data")) {

        JsonElement marvelDataElement = jsonObject.get("data");
        JsonObject marvelDataObject = marvelDataElement.getAsJsonObject();

        if (marvelDataObject.get("count").getAsInt() > 0) {

            JsonElement marvelResultsElement = marvelDataObject.get("results");
            JsonArray marvelResults = marvelResultsElement.getAsJsonArray();

            JsonElement finalElement = marvelResults.get(0);
            JsonObject comicObject = finalElement.getAsJsonObject();

            if (comicObject.has("pageCount") && comicObject.has("isbn")) {
                return new Gson().fromJson(marvelResultsElement, type.getType());
            }/*from   w  ww  .  ja  v  a2 s  .c  o m*/
        }
    }

    return null;
}

From source file:series.AppUpdateSeriesMaster.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*from   w w w. j  a  v  a  2  s  . com*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    final DBHelper helper = DBHelper.GetDBHelper();
    final Connection dataConnection = helper.getConnMpAdmin();
    final Library lb = Library.getInstance();
    String sr_cd = request.getParameter("sr_cd");
    String sr_alias = request.getParameter("sr_alias");
    final String sr_name = request.getParameter("sr_name");
    final String model_cd = request.getParameter("model_cd");
    final String memory_cd = request.getParameter("memory_cd");
    final String opb_qty = request.getParameter("opb_qty");
    final String opb_val = request.getParameter("opb_val");
    final String color_cd = request.getParameter("color_cd");
    final String user_id = request.getParameter("user_id");
    final String detailJson = request.getParameter("detail");
    TypeToken<List<OPBSrVal>> token = new TypeToken<List<OPBSrVal>>() {
    };
    List<OPBSrVal> detail = new Gson().fromJson(detailJson, token.getType());
    final JsonObject jResultObj = new JsonObject();

    if (dataConnection != null) {
        try {
            String sql = "";
            if (sr_cd.equalsIgnoreCase("")) {
                sql = "INSERT INTO SERIESMST (SR_ALIAS,SR_NAME,MODEL_CD,MEMORY_CD,COLOUR_CD,OPB_QTY,OPB_VAL,USER_ID ,SR_CD) VALUES (?,?,?,?,?,?,?,?,?)";
                sr_cd = lb.generateKey(dataConnection, "SERIESMST", "SR_CD", "S", 7);
            } else {
                SeriesMasterDelete smu = new SeriesMasterDelete(dataConnection);
                smu.seriesUpdate(sr_cd, "1");
                sql = "UPDATE SERIESMST SET SR_ALIAS=?,SR_NAME=?,MODEL_CD=?,MEMORY_CD=?,COLOUR_CD=?,OPB_QTY=?,OPB_VAL=?,USER_ID=?,EDIT_NO=EDIT_NO+1,TIME_STAMP=CURRENT_TIMESTAMP where SR_CD=?";
            }

            PreparedStatement pstLocal = dataConnection.prepareStatement(sql);
            pstLocal.setString(1, sr_alias);
            pstLocal.setString(2, sr_name);
            pstLocal.setString(3, model_cd);
            pstLocal.setString(4, memory_cd);
            pstLocal.setString(5, color_cd);
            pstLocal.setString(6, opb_qty);
            pstLocal.setString(7, opb_val);
            pstLocal.setString(8, user_id);
            pstLocal.setString(9, sr_cd);
            pstLocal.executeUpdate();

            if (!detail.isEmpty()) {
                for (int i = 0; i < detail.size(); i++) {
                    if (detail.get(i).getRef_no().equalsIgnoreCase("")) {
                        detail.get(i).setRef_no(lb.generateKey(dataConnection, "TAG", "REF_NO", "T", 7));
                        sql = "insert into TAG (REF_NO,TAG_NO,SR_CD,IMEI_NO,SERAIL_NO,PUR_RATE,PUR_REF_NO,BASIC_PUR_RATE,GODOWN,"
                                + "BRANCH_CD) values (?,?,?,?,?,?,?,?,?,?)";
                        pstLocal = dataConnection.prepareStatement(sql);
                        pstLocal.setString(1, detail.get(i).getRef_no());
                        pstLocal.setString(2, detail.get(i).getTag_no());
                        pstLocal.setString(3, sr_cd);
                        pstLocal.setString(4, detail.get(i).getImei());
                        pstLocal.setString(5, detail.get(i).getSerial());
                        pstLocal.setDouble(6, detail.get(i).getP_rate());
                        pstLocal.setString(7, "OPB");
                        pstLocal.setDouble(8, detail.get(i).getP_rate());
                        pstLocal.setString(9, "0");
                        pstLocal.setString(10, detail.get(i).getBranch_cd());
                        pstLocal.executeUpdate();
                    } else {
                        sql = "update TAG set PUR_RATE=?,BASIC_PUR_RATE=?,BRANCH_CD=? where ref_no=?";
                        pstLocal = dataConnection.prepareStatement(sql);
                        pstLocal.setDouble(1, detail.get(i).getP_rate());
                        pstLocal.setDouble(2, detail.get(i).getP_rate());
                        pstLocal.setString(3, detail.get(i).getBranch_cd());
                        pstLocal.setString(4, detail.get(i).getRef_no());
                        pstLocal.executeUpdate();
                    }
                }
            }

            if (!detail.isEmpty()) {
                for (int i = 0; i < detail.size(); i++) {
                    sql = "insert into opb_sr_val (SR_CD,SR_NO,TAG_NO,IMEI_NO,SERIAL_NO,P_RATE,BRANCH_CD,REF_NO) values (?,?,?,?,?,?,?,?)";
                    pstLocal = dataConnection.prepareStatement(sql);
                    pstLocal.setString(1, detail.get(i).getSr_cd());
                    pstLocal.setInt(2, detail.get(i).getSr_no());
                    pstLocal.setString(3, detail.get(i).getTag_no());
                    pstLocal.setString(4, detail.get(i).getImei());
                    pstLocal.setString(5, detail.get(i).getSerial());
                    pstLocal.setDouble(6, detail.get(i).getP_rate());
                    pstLocal.setString(7, detail.get(i).getBranch_cd());
                    pstLocal.setString(8, detail.get(i).getRef_no());
                    pstLocal.executeUpdate();
                }
            }
            if (detail.isEmpty()) {
                SeriesMasterAdd smu = new SeriesMasterAdd(dataConnection);
                smu.seriesUpdateSingle(sr_cd, opb_qty, opb_val, "1");
            } else {
                SeriesMasterAddDetail smu = new SeriesMasterAddDetail(dataConnection);
                smu.seriesUpdate(sr_cd, detail);
            }
            jResultObj.addProperty("result", 1);
            jResultObj.addProperty("Cause", "success");
            jResultObj.addProperty("sr_cd", sr_cd);
        } catch (SQLNonTransientConnectionException ex1) {
            jResultObj.addProperty("result", -1);
            jResultObj.addProperty("Cause", "Server is down");
        } catch (SQLException ex) {
            jResultObj.addProperty("result", -1);
            jResultObj.addProperty("Cause", ex.getMessage());
        }
    }
    response.getWriter().print(jResultObj);
}

From source file:stockTransfer.AddUpdateStkTrDetail.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./* www .  j  a  v  a2s .c om*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    final String detailJson = request.getParameter("detail");
    TypeToken<List<StockTransferDetail>> token = new TypeToken<List<StockTransferDetail>>() {
    };
    List<StockTransferDetail> detail = new Gson().fromJson(detailJson, token.getType());
    response.getWriter().print(saveVoucher((ArrayList<StockTransferDetail>) detail));

}