Example usage for org.apache.commons.configuration DataConfiguration DataConfiguration

List of usage examples for org.apache.commons.configuration DataConfiguration DataConfiguration

Introduction

In this page you can find the example usage for org.apache.commons.configuration DataConfiguration DataConfiguration.

Prototype

public DataConfiguration(Configuration configuration) 

Source Link

Document

Creates a new instance of DataConfiguration and sets the wrapped configuration.

Usage

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testURIBuilding() throws JSONException, SenseiException, UnsupportedEncodingException,
        URISyntaxException, MalformedURLException {
    SenseiRequest aRequest = createNonRandomSenseiRequest();
    List<NameValuePair> queryParams = HttpRestSenseiServiceImpl.convertRequestToQueryParams(aRequest);
    HttpRestSenseiServiceImpl senseiService = createSenseiService();
    URI requestURI = senseiService.buildRequestURI(queryParams);

    assertTrue(requestURI.toURL().toString().length() > 0); // force resolving the URI to a string

    List<NameValuePair> parsedParams = URLEncodedUtils.parse(requestURI, "UTF-8");
    MockServletRequest mockServletRequest = MockServletRequest.create(parsedParams);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    SenseiRequest bRequest = DefaultSenseiJSONServlet.convertSenseiRequest(params);
    assertEquals(aRequest, bRequest);//w  w w. j av a 2s .c o m
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testConvertSenseiRequest() throws SenseiException, UnsupportedEncodingException, JSONException {
    SenseiRequest testRequest = createNonRandomSenseiRequest();
    List<NameValuePair> list = HttpRestSenseiServiceImpl.convertRequestToQueryParams(testRequest);
    MockServletRequest mockServletRequest = MockServletRequest.create(list);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    SenseiRequest resultRequest = DefaultSenseiJSONServlet.convertSenseiRequest(params);
    assertEquals(testRequest, resultRequest);
}

From source file:com.senseidb.servlet.AbstractSenseiClientServlet.java

private void handleSenseiRequest(HttpServletRequest req, HttpServletResponse resp,
        Broker<SenseiRequest, SenseiResult> broker) throws ServletException, IOException {
    long time = System.currentTimeMillis();
    int numHits = 0, totalDocs = 0;
    String query = null;/*from  ww w. ja  v a  2  s  .  co m*/

    SenseiRequest senseiReq = null;
    try {
        JSONObject jsonObj = null;
        String content = null;

        if ("post".equalsIgnoreCase(req.getMethod())) {
            BufferedReader reader = req.getReader();
            content = readContent(reader);
            if (content == null || content.length() == 0)
                content = "{}";
            try {
                jsonObj = new JSONObject(content);
            } catch (JSONException jse) {
                String contentType = req.getHeader("Content-Type");
                if (contentType != null && contentType.indexOf("json") >= 0) {
                    logger.error("JSON parsing error", jse);
                    writeEmptyResponse(req, resp,
                            new SenseiError(jse.getMessage(), ErrorType.JsonParsingError));
                    return;
                }

                logger.warn("Old client or json error", jse);

                // Fall back to the old REST API.  In the future, we should
                // consider reporting JSON exceptions here.
                senseiReq = DefaultSenseiJSONServlet.convertSenseiRequest(
                        new DataConfiguration(new MapConfiguration(getParameters(content))));
                query = content;
            }
        } else {
            content = req.getParameter("json");
            if (content != null) {
                if (content.length() == 0)
                    content = "{}";
                try {
                    jsonObj = new JSONObject(content);
                } catch (JSONException jse) {
                    logger.error("JSON parsing error", jse);
                    writeEmptyResponse(req, resp,
                            new SenseiError(jse.getMessage(), ErrorType.JsonParsingError));
                    return;
                }
            } else {
                senseiReq = buildSenseiRequest(req);
                query = URLEncodedUtils.format(HttpRestSenseiServiceImpl.convertRequestToQueryParams(senseiReq),
                        "UTF-8");
            }
        }

        if (jsonObj != null) {
            String bqlStmt = jsonObj.optString(BQL_STMT);
            JSONObject templatesJson = jsonObj.optJSONObject(JsonTemplateProcessor.TEMPLATE_MAPPING_PARAM);
            JSONObject compiledJson = null;

            if (bqlStmt.length() > 0) {
                try {
                    if (jsonObj.length() == 1)
                        query = "bql=" + bqlStmt;
                    else
                        query = "json=" + content;
                    compiledJson = _compiler.compile(bqlStmt);
                } catch (RecognitionException e) {
                    String errMsg = _compiler.getErrorMessage(e);
                    if (errMsg == null) {
                        errMsg = "Unknown parsing error.";
                    }
                    logger.error("BQL parsing error: " + errMsg + ", BQL: " + bqlStmt);
                    writeEmptyResponse(req, resp, new SenseiError(errMsg, ErrorType.BQLParsingError));
                    return;
                }

                // Handle extra BQL filter if it exists
                String extraFilter = jsonObj.optString(BQL_EXTRA_FILTER);
                JSONObject predObj = null;
                if (extraFilter.length() > 0) {
                    String bql2 = "SELECT * WHERE " + extraFilter;
                    try {
                        predObj = _compiler.compile(bql2);
                    } catch (RecognitionException e) {
                        String errMsg = _compiler.getErrorMessage(e);
                        if (errMsg == null) {
                            errMsg = "Unknown parsing error.";
                        }
                        logger.error("BQL parsing error for additional preds: " + errMsg + ", BQL: " + bql2);
                        writeEmptyResponse(req, resp,
                                new SenseiError(
                                        "BQL parsing error for additional preds: " + errMsg + ", BQL: " + bql2,
                                        ErrorType.BQLParsingError));
                        return;
                    }

                    // Combine filters
                    JSONArray filter_list = new JSONArray();
                    JSONObject currentFilter = compiledJson.optJSONObject("filter");
                    if (currentFilter != null) {
                        filter_list.put(currentFilter);
                    }

                    JSONArray selections = predObj.optJSONArray("selections");
                    if (selections != null) {
                        for (int i = 0; i < selections.length(); ++i) {
                            JSONObject pred = selections.getJSONObject(i);
                            if (pred != null) {
                                filter_list.put(pred);
                            }
                        }
                    }
                    JSONObject additionalFilter = predObj.optJSONObject("filter");
                    if (additionalFilter != null) {
                        filter_list.put(additionalFilter);
                    }

                    if (filter_list.length() > 1) {
                        compiledJson.put("filter", new JSONObject().put("and", filter_list));
                    } else if (filter_list.length() == 1) {
                        compiledJson.put("filter", filter_list.get(0));
                    }
                }

                JSONObject metaData = compiledJson.optJSONObject("meta");
                if (metaData != null) {
                    JSONArray variables = metaData.optJSONArray("variables");
                    if (variables != null) {
                        for (int i = 0; i < variables.length(); ++i) {
                            String var = variables.getString(i);
                            if (templatesJson == null || templatesJson.opt(var) == null) {
                                writeEmptyResponse(req, resp,
                                        new SenseiError("[line:0, col:0] Variable " + var + " is not found.",
                                                ErrorType.BQLParsingError));
                                return;
                            }
                        }
                    }
                }
            } else {
                // This is NOT a BQL statement
                query = "json=" + content;
                compiledJson = jsonObj;
            }

            if (templatesJson != null) {
                compiledJson.put(JsonTemplateProcessor.TEMPLATE_MAPPING_PARAM, templatesJson);
            }
            senseiReq = SenseiRequest.fromJSON(compiledJson, _facetInfoMap);
        }
        SenseiResult res = broker.browse(senseiReq);
        numHits = res.getNumHits();
        totalDocs = res.getTotalDocs();
        sendResponse(req, resp, senseiReq, res);
    } catch (JSONException e) {
        try {
            writeEmptyResponse(req, resp, new SenseiError(e.getMessage(), ErrorType.JsonParsingError));
        } catch (Exception ex) {
            throw new ServletException(e);
        }
    } catch (Exception e) {
        try {
            logger.error(e.getMessage(), e);
            if (e.getCause() != null && e.getCause() instanceof JSONException) {
                writeEmptyResponse(req, resp, new SenseiError(e.getMessage(), ErrorType.JsonParsingError));
            } else {
                writeEmptyResponse(req, resp, new SenseiError(e.getMessage(), ErrorType.InternalError));
            }
        } catch (Exception ex) {
            throw new ServletException(e);
        }
    } finally {
        if (queryLogger.isInfoEnabled() && query != null) {
            queryLogger.info(String.format("hits(%d/%d) took %dms: %s", numHits, totalDocs,
                    System.currentTimeMillis() - time, query));
        }
    }
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testConvertScalarValues() throws SenseiException, UnsupportedEncodingException, JSONException {
    SenseiRequest aRequest = new SenseiRequest();

    aRequest.setCount(EXPECTED_COUNT);//from   w  ww .j a va 2 s .co  m
    aRequest.setOffset(EXPECTED_OFFSET);
    aRequest.setFetchStoredFields(EXPECTED_FETCH_STORED_FIELDS);
    aRequest.setShowExplanation(EXPECTED_SHOW_EXPLANATION);

    SenseiRequest bRequest = new SenseiRequest();
    List<NameValuePair> list = HttpRestSenseiServiceImpl.convertRequestToQueryParams(aRequest);
    MockServletRequest mockServletRequest = MockServletRequest.create(list);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    DefaultSenseiJSONServlet.convertScalarParams(bRequest, params);
    assertEquals(aRequest, bRequest);
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testInitParams() throws UnsupportedEncodingException {
    SenseiRequest aRequest = new SenseiRequest();
    Map<String, FacetHandlerInitializerParam> initParams = createInitParams();
    aRequest.putAllFacetHandlerInitializerParams(initParams);

    SenseiRequest bRequest = new SenseiRequest();
    List<NameValuePair> qparams = new ArrayList<NameValuePair>();
    HttpRestSenseiServiceImpl.convertFacetInitParams(qparams, initParams);
    MockServletRequest mockServletRequest = MockServletRequest.create(qparams);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    DefaultSenseiJSONServlet.convertInitParams(bRequest, params);
    assertEquals(aRequest, bRequest);//w ww  .  j a v a 2s  .com
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testFacetSpecs() {
    SenseiRequest aRequest = new SenseiRequest();
    Map<String, FacetSpec> facetSpecMap = createFacetSpecMap();
    aRequest.setFacetSpecs(facetSpecMap);

    SenseiRequest bRequest = new SenseiRequest();
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    HttpRestSenseiServiceImpl.convertFacetSpecs(list, facetSpecMap);
    MockServletRequest mockServletRequest = MockServletRequest.create(list);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    DefaultSenseiJSONServlet.convertFacetParam(bRequest, params);
    assertEquals(aRequest, bRequest);//from w w w .j ava2 s.c  om
}

From source file:gda.configuration.properties.JakartaPropertiesConfig.java

@Override
public URL getURL(String name, URL defaultValue) {
    // Use decorator, which can convert to URLs, Locales, Dates, Colours,
    // etc.//from w  w w  . ja  v a2s.  c o m
    DataConfiguration dataConfig = new DataConfiguration(config);

    return dataConfig.getURL(name, defaultValue);
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testSortFields() {
    SenseiRequest aRequest = new SenseiRequest();
    final SortField[] sortFields = createSortFields();
    aRequest.addSortFields(sortFields);/*  www.  jav  a2s . c  o m*/

    SenseiRequest bRequest = new SenseiRequest();
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    HttpRestSenseiServiceImpl.convertSortFieldParams(list, sortFields);
    MockServletRequest mockServletRequest = MockServletRequest.create(list);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    DefaultSenseiJSONServlet.convertSortParam(bRequest, params);
    assertEquals(aRequest, bRequest);
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testSenseiQuery() throws SenseiException, JSONException {
    SenseiRequest aRequest = new SenseiRequest();
    SenseiQuery senseiQuery = createSenseiQuery();
    aRequest.setQuery(senseiQuery);//from ww  w . j ava  2 s  .co m

    SenseiRequest bRequest = new SenseiRequest();
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    HttpRestSenseiServiceImpl.convertSenseiQuery(list, senseiQuery);
    MockServletRequest mockServletRequest = MockServletRequest.create(list);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    DefaultSenseiJSONServlet.convertSenseiQuery(bRequest, params);
    assertEquals(aRequest, bRequest);
}

From source file:com.senseidb.test.TestHttpRestSenseiServiceImpl.java

public void testPartitions() throws SenseiException, JSONException {
    SenseiRequest aRequest = new SenseiRequest();
    Set<Integer> partitions = createPartitions();
    aRequest.setPartitions(partitions);/* w  w  w.  jav  a 2s  . c  o m*/

    SenseiRequest bRequest = new SenseiRequest();
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    HttpRestSenseiServiceImpl.convertPartitionParams(list, partitions);
    MockServletRequest mockServletRequest = MockServletRequest.create(list);
    DataConfiguration params = new DataConfiguration(new ServletRequestConfiguration(mockServletRequest));
    DefaultSenseiJSONServlet.convertPartitionParams(bRequest, params);
    assertEquals(aRequest, bRequest);
}