private void init(BuildSession session, ViewContext view_context) throws Exception { CompositeMap context = ServiceThreadLocal.getCurrentThreadContext(); if (context == null) throw new IllegalStateException("No service context set in ThreadLocal yet"); CompositeMap view = view_context.getView(); CompositeMap base_model = view_context.getModel(); HTMLIncludeConfig hic = HTMLIncludeConfig.getInstance(view); String path = TextParser.parse(hic.getPath(), base_model); version = TextParser.parse(hic.getVersion(), base_model); if (null != path && !path.isEmpty()) { int begin = path.indexOf("/release"); if (begin < 0) return; path = path.substring(begin, path.length()); articlePath = "../.." + path; sourcePath = session.getContextPath() + path.replaceAll("\\\\", "/").replaceAll("(.*/)[^/]*$", "$1"); return; } String pathField = hic.getPathField(); String model = hic.getModel(); CompositeMap params = hic.getParams(); Map map = new HashMap(); if (null != params) { Iterator pit = params.getChildIterator(); while (pit.hasNext()) { CompositeMap param = (CompositeMap) pit.next(); map.put( param.get("name"), TextParser.parse((String) param.get("value"), view_context.getModel())); } } BusinessModelService service = factory.getModelService(model, context); CompositeMap resultMap = service.queryAsMap(map); if (null == resultMap || null == resultMap.getChilds()) { throw new ClassNotFoundException("文章未找到,输入的路径不正确。"); } Iterator it = resultMap.getChildIterator(); while (it.hasNext()) { path = ((CompositeMap) it.next()).getString(pathField); if (null != path) { articlePath = "../.." + path; sourcePath = session.getContextPath() + path.replaceAll("\\\\", "/").replaceAll("(.*/)[^/]*$", "$1"); break; } } }
@Override public void onPrepareBusinessModel(BusinessModel model, CompositeMap context) throws Exception { boolean customization_enabled = model.getCustomizationenabled(); if (customization_enabled) { /* This context may be "<model-service-context BusinessModel="aurora.bm.BusinessModel@e73b917"/>", * so need ServiceThreadLocal.getCurrentThreadContext(); */ CompositeMap fullContext = ServiceThreadLocal.getCurrentThreadContext(); if (fullContext == null) return; LoggingContext.getLogger(fullContext, this.getClass().getCanonicalName()) .log(Level.CONFIG, fullContext.getRoot().toXML()); // String function_id = TextParser.parse(FUNCTION_ID_PATH, fullContext); String function_code = TextParser.parse(FUNCTION_CODE_PATH, fullContext); // if not called by a Screen. if (function_code == null || "".equals(function_code)) { return; } CompositeMap custDetailRecords = getCustomizationData(model, function_code, fullContext); if (custDetailRecords != null) { LovBMCustomSourceCode.custom(model, custDetailRecords, objectRegistry); } } }