|
Author: adrianc
Date: Fri Jan 15 00:25:00 2010 New Revision: 899496 URL: http://svn.apache.org/viewvc?rev=899496&view=rev Log: Better push/pop handling. Modified: ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/authorization/OfbizSecurityTransform.java ofbiz/branches/executioncontext20091231/framework/entity/src/org/ofbiz/entity/GenericDelegator.java ofbiz/branches/executioncontext20091231/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/ServiceDispatcher.java ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/GenericServiceJob.java ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/JobPoller.java ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelForm.java ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java Modified: ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/authorization/OfbizSecurityTransform.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/authorization/OfbizSecurityTransform.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/authorization/OfbizSecurityTransform.java (original) +++ ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/authorization/OfbizSecurityTransform.java Fri Jan 15 00:25:00 2010 @@ -61,8 +61,8 @@ Debug.logError("Unknown permission \"" + permStr + "\", unable to execute transform", module); return; } + ThreadContext.pushExecutionArtifact(module, artifactId); try { - ThreadContext.pushExecutionArtifact(module, artifactId); ThreadContext.getAccessController().checkPermission(permission); body.render(env.getOut()); } catch (AccessControlException e) { Modified: ofbiz/branches/executioncontext20091231/framework/entity/src/org/ofbiz/entity/GenericDelegator.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/entity/src/org/ofbiz/entity/GenericDelegator.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/entity/src/org/ofbiz/entity/GenericDelegator.java (original) +++ ofbiz/branches/executioncontext20091231/framework/entity/src/org/ofbiz/entity/GenericDelegator.java Fri Jan 15 00:25:00 2010 @@ -794,8 +794,8 @@ */ public GenericValue create(GenericValue value, boolean doCacheClear) throws GenericEntityException { boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact(value); try { - ThreadContext.pushExecutionArtifact(value); ThreadContext.getAccessController().checkPermission(Create); if (alwaysUseTransaction) { beganTransaction = TransactionUtil.begin(); @@ -949,8 +949,8 @@ */ public int removeByPrimaryKey(GenericPK primaryKey, boolean doCacheClear) throws GenericEntityException { boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact(primaryKey); try { - ThreadContext.pushExecutionArtifact(primaryKey); ThreadContext.getAccessController().checkPermission(Delete); if (alwaysUseTransaction) { beganTransaction = TransactionUtil.begin(); @@ -1019,8 +1019,8 @@ public int removeValue(GenericValue value, boolean doCacheClear) throws GenericEntityException { // NOTE: this does not call the GenericDelegator.removeByPrimaryKey method because it has more information to pass to the ECA rule hander boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact(value); try { - ThreadContext.pushExecutionArtifact(value); ThreadContext.getAccessController().checkPermission(Delete); if (alwaysUseTransaction) { beganTransaction = TransactionUtil.begin(); @@ -1117,8 +1117,8 @@ */ public int removeByCondition(String entityName, EntityCondition condition, boolean doCacheClear) throws GenericEntityException { boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact("GenericDelegator.removeByCondition", entityName); try { - ThreadContext.pushExecutionArtifact("GenericDelegator.removeByCondition", entityName); ThreadContext.getAccessController().checkPermission(Delete); if (alwaysUseTransaction) { beganTransaction = TransactionUtil.begin(); @@ -1231,8 +1231,8 @@ */ public int storeByCondition(String entityName, Map<String, ? extends Object> fieldsToSet, EntityCondition condition, boolean doCacheClear) throws GenericEntityException { boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact("GenericDelegator.storeByCondition", entityName); try { - ThreadContext.pushExecutionArtifact("GenericDelegator.storeByCondition", entityName); ThreadContext.getAccessController().checkPermission(Update); if (alwaysUseTransaction) { beganTransaction = TransactionUtil.begin(); @@ -1289,8 +1289,8 @@ */ public int store(GenericValue value, boolean doCacheClear) throws GenericEntityException { boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact(value); try { - ThreadContext.pushExecutionArtifact(value); ThreadContext.getAccessController().checkPermission(Update); if (alwaysUseTransaction) { beganTransaction = TransactionUtil.begin(); Modified: ofbiz/branches/executioncontext20091231/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java (original) +++ ofbiz/branches/executioncontext20091231/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java Fri Jan 15 00:25:00 2010 @@ -377,11 +377,11 @@ } Debug.logImportant("=-=-=-=-=-=-= Starting the data load...", module); + ThreadContext.pushExecutionArtifact(module, "EntityDataLoad"); + ThreadContext.runUnprotected(); try { // Set up the execution context - ThreadContext.runUnprotected(); ThreadContext.setDelegator(delegator); - ThreadContext.pushExecutionArtifact(module, "EntityDataLoad"); for (URL dataUrl: urlList) { try { int rowsChanged = EntityDataLoader.loadData(dataUrl, helperName, delegator, errorMessages, txTimeout, useDummyFks, maintainTxs, tryInserts); Modified: ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/ServiceDispatcher.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/ServiceDispatcher.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/ServiceDispatcher.java (original) +++ ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/ServiceDispatcher.java Fri Jan 15 00:25:00 2010 @@ -297,9 +297,9 @@ // start the transaction boolean beganTrans = false; + ThreadContext.initializeContext(context); + ThreadContext.pushExecutionArtifact(modelService, context); try { - ThreadContext.initializeContext(context); - ThreadContext.pushExecutionArtifact(modelService, context); boolean permissionService = false; for (ModelServiceIface iface: modelService.implServices) { if ("permissionInterface".equals(iface.getService())) { Modified: ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/GenericServiceJob.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/GenericServiceJob.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/GenericServiceJob.java (original) +++ ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/GenericServiceJob.java Fri Jan 15 00:25:00 2010 @@ -63,14 +63,16 @@ @Override public void exec() throws InvalidJobException { ThreadContext.reset(); + ThreadContext.runUnprotected(); + ThreadContext.pushExecutionArtifact(module, "ServiceJob"); try { - ThreadContext.runUnprotected(); - ThreadContext.pushExecutionArtifact(module, "ServiceJob"); init(); } finally { + ThreadContext.popExecutionArtifact(); ThreadContext.endRunUnprotected(); } // no transaction is necessary since runSync handles this + ThreadContext.pushExecutionArtifact(module, "ServiceJob"); try { ThreadContext.setDispatcher(this.dctx.getDispatcher()); Map<String, Object> serviceCtx = getContext(); @@ -100,6 +102,7 @@ this.failed(t); } finally { ThreadContext.popExecutionArtifact(); + ThreadContext.endRunUnprotected(); } // call the finish method Modified: ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/JobPoller.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/JobPoller.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/JobPoller.java (original) +++ ofbiz/branches/executioncontext20091231/framework/service/src/org/ofbiz/service/job/JobPoller.java Fri Jan 15 00:25:00 2010 @@ -87,26 +87,30 @@ } ThreadContext.runUnprotected(); ThreadContext.pushExecutionArtifact(module, "JobPoller"); - while (isRunning) { - try { - // grab a list of jobs to run. - List<Job> pollList = jm.poll(); - //Debug.logInfo("Received poll list from JobManager [" + pollList.size() + "]", module); - - for (Job job : pollList) { - if (job.isValid()) { - queueNow(job); - //Debug.logInfo("Job [" + job.getJobId() + "] is queued", module); + try { + while (isRunning) { + try { + // grab a list of jobs to run. + List<Job> pollList = jm.poll(); + //Debug.logInfo("Received poll list from JobManager [" + pollList.size() + "]", module); + + for (Job job : pollList) { + if (job.isValid()) { + queueNow(job); + //Debug.logInfo("Job [" + job.getJobId() + "] is queued", module); + } } + // NOTE: using sleep instead of wait for stricter locking + java.lang.Thread.sleep(pollWaitTime()); + } catch (InterruptedException e) { + Debug.logError(e, module); + stop(); } - // NOTE: using sleep instead of wait for stricter locking - java.lang.Thread.sleep(pollWaitTime()); - } catch (InterruptedException e) { - Debug.logError(e, module); - stop(); } + } finally { + ThreadContext.popExecutionArtifact(); + ThreadContext.endRunUnprotected(); } - ThreadContext.popExecutionArtifact(); } /** Modified: ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java (original) +++ ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java Fri Jan 15 00:25:00 2010 @@ -319,8 +319,8 @@ // without a session we can't log the hit, etc; so just do nothing; this should NOT happen much! Debug.logError("Error in ControlServlet output where response isCommitted and there is no session (probably because of a logout); not saving ServerHit/Bin information because there is no session and as the response isCommitted we can't get a new one. The output was successful, but we just can't save ServerHit/Bin info.", module); } else { + ThreadContext.pushExecutionArtifact(module, webappName); try { - ThreadContext.pushExecutionArtifact(module, webappName); UtilHttp.setInitialRequestInfo(request); VisitHandler.getVisitor(request, response); if (requestHandler.trackStats(request)) { Modified: ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original) +++ ofbiz/branches/executioncontext20091231/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Fri Jan 15 00:25:00 2010 @@ -276,8 +276,8 @@ GenericValue visit = VisitHandler.getVisit(session); if (visit != null) { for (ConfigXMLReader.Event event: controllerConfig.firstVisitEventList.values()) { + ThreadContext.pushExecutionArtifact(event.path, event.invoke); try { - ThreadContext.pushExecutionArtifact(event.path, event.invoke); String returnString = this.runEvent(request, response, event, null, "firstvisit"); if (returnString != null && !returnString.equalsIgnoreCase("success")) { throw new EventHandlerException("First-Visit event did not return 'success'."); @@ -295,8 +295,8 @@ // Invoke the pre-processor (but NOT in a chain) for (ConfigXMLReader.Event event: controllerConfig.preprocessorEventList.values()) { + ThreadContext.pushExecutionArtifact(event.path, event.invoke); try { - ThreadContext.pushExecutionArtifact(event.path, event.invoke); String returnString = this.runEvent(request, response, event, null, "preprocessor"); if (returnString != null && !returnString.equalsIgnoreCase("success")) { if (!returnString.contains(":_protect_:")) { @@ -347,8 +347,8 @@ ConfigXMLReader.Event checkLoginEvent = controllerConfig.requestMapMap.get("checkLogin").event; String checkLoginReturnString = null; + ThreadContext.pushExecutionArtifact(checkLoginEvent.path, checkLoginEvent.invoke); try { - ThreadContext.pushExecutionArtifact(checkLoginEvent.path, checkLoginEvent.invoke); checkLoginReturnString = this.runEvent(request, response, checkLoginEvent, null, "security-auth"); } catch (EventHandlerException e) { throw new RequestHandlerException(e.getMessage(), e); @@ -380,8 +380,8 @@ // Invoke the defined event (unless login failed) if (eventReturn == null && requestMap.event != null) { if (requestMap.event.type != null && requestMap.event.path != null && requestMap.event.invoke != null) { + ThreadContext.pushExecutionArtifact(requestMap.event.path, requestMap.event.invoke); try { - ThreadContext.pushExecutionArtifact(requestMap.event.path, requestMap.event.invoke); long eventStartTime = System.currentTimeMillis(); // run the request event @@ -534,8 +534,8 @@ // first invoke the post-processor events. for (ConfigXMLReader.Event event: controllerConfig.postprocessorEventList.values()) { + ThreadContext.pushExecutionArtifact(event.path, event.invoke); try { - ThreadContext.pushExecutionArtifact(event.path, event.invoke); String returnString = this.runEvent(request, response, event, requestMap, "postprocessor"); if (returnString != null && !returnString.equalsIgnoreCase("success")) { throw new EventHandlerException("Post-Processor event did not return 'success'."); @@ -1111,8 +1111,8 @@ public void runAfterLoginEvents(HttpServletRequest request, HttpServletResponse response) { for (ConfigXMLReader.Event event: getControllerConfig().afterLoginEventList.values()) { + ThreadContext.pushExecutionArtifact(event.path, event.invoke); try { - ThreadContext.pushExecutionArtifact(event.path, event.invoke); String returnString = this.runEvent(request, response, event, null, "after-login"); if (returnString != null && !returnString.equalsIgnoreCase("success")) { throw new EventHandlerException("Pre-Processor event did not return 'success'."); @@ -1127,8 +1127,8 @@ public void runBeforeLogoutEvents(HttpServletRequest request, HttpServletResponse response) { for (ConfigXMLReader.Event event: getControllerConfig().beforeLogoutEventList.values()) { + ThreadContext.pushExecutionArtifact(event.path, event.invoke); try { - ThreadContext.pushExecutionArtifact(event.path, event.invoke); String returnString = this.runEvent(request, response, event, null, "before-logout"); if (returnString != null && !returnString.equalsIgnoreCase("success")) { throw new EventHandlerException("Pre-Processor event did not return 'success'."); Modified: ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelForm.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original) +++ ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Fri Jan 15 00:25:00 2010 @@ -791,8 +791,8 @@ * use the same form definitions for many types of form UIs */ public void renderFormString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer) throws IOException { + ThreadContext.pushExecutionArtifact(this); try { - ThreadContext.pushExecutionArtifact(this); ThreadContext.getAccessController().checkPermission(View); // increment the paginator, only for list and multi forms if ("list".equals(this.type) || "multi".equals(this.type)) { Modified: ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original) +++ ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Fri Jan 15 00:25:00 2010 @@ -596,10 +596,10 @@ } public void renderFieldString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer) throws IOException { + ThreadContext.pushExecutionArtifact(this); try { // Permissions should be checked by renderers, this is here // for demonstration only - ThreadContext.pushExecutionArtifact(this); ThreadContext.getAccessController().checkPermission(View); this.fieldInfo.renderFieldString(writer, context, formStringRenderer); } catch (AccessControlException e) { Modified: ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java (original) +++ ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java Fri Jan 15 00:25:00 2010 @@ -205,9 +205,9 @@ return; } } + String artifactName = template.getName().replace("component://", "").replace(".ftl", ""); + ThreadContext.pushExecutionArtifact(location, artifactName); try { - String artifactName = template.getName().replace("component://", "").replace(".ftl", ""); - ThreadContext.pushExecutionArtifact(location, artifactName); FreeMarkerWorker.renderTemplate(template, context, writer); if (insertWidgetBoundaryComments) { writer.append(HtmlWidgetRenderer.formatBoundaryComment("End", "Template", location)); Modified: ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=899496&r1=899495&r2=899496&view=diff ============================================================================== --- ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java (original) +++ ofbiz/branches/executioncontext20091231/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java Fri Jan 15 00:25:00 2010 @@ -363,8 +363,8 @@ // wrap the whole screen rendering in a transaction, should improve performance in querying and such Map<String, String> parameters = UtilGenerics.cast(context.get("parameters")); boolean beganTransaction = false; + ThreadContext.pushExecutionArtifact(this); try { - ThreadContext.pushExecutionArtifact(this); ThreadContext.getAccessController().checkPermission(View); int transactionTimeout = -1; if (parameters != null) { |
| Free forum by Nabble | Edit this page |
