Project:
View Issue Details[ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
ID | ||||||||
0036559 | ||||||||
Type | Category | Severity | Reproducibility | Date Submitted | Last Update | |||
defect | [Openbravo ERP] A. Platform | minor | have not tried | 2017-08-01 09:02 | 2017-09-18 18:23 | |||
Reporter | aferraz | View Status | public | |||||
Assigned To | alostale | |||||||
Priority | normal | Resolution | fixed | Fixed in Version | 3.0PR17Q4 | |||
Status | closed | Fix in branch | Fixed in SCM revision | b12d3da979df | ||||
Projection | none | ETA | none | Target Version | ||||
OS | Any | Database | Any | Java version | ||||
OS Version | Database version | Ant version | ||||||
Product Version | SCM revision | |||||||
Review Assigned To | alostale | |||||||
Web browser | ||||||||
Modules | Core | |||||||
Regression level | ||||||||
Regression date | ||||||||
Regression introduced in release | ||||||||
Regression introduced by commit | ||||||||
Triggers an Emergency Pack | No | |||||||
Summary | 0036559: Old callouts should be refactored to implement SimpleCallout | |||||||
Description | Callouts that do not extend SimpleCallout are defined as Servlets (as this is how 2.50 technology worked), they executed as follows: 1. A fake request is created to invoke them as a Servlet 2. That request is used to write the response in as a String representing JavaSript code 3. That string is evaluated, parsed and executed as JavaScript in server 4. To finally set the values it requires In addition to all the overhead involved in each of the steps described above, step 3 generates bytecodes from JavaScript that are stored in PermGen memory space. This causes excessive PermGen consumption as well as it trigger Major GC Collections even with a low heap use. All these steps are avoided for SimpleCallout since PR16Q4 0032366 | |||||||
Steps To Reproduce | To emulate it: 1. Apply attached diff that executes step 3 defined in description 2K times per callout 2. Limit PermGen (ie. 160MB) and monitor JVM 3. Open Sales Order window and click on new (this executes SL_Order_DocType and SL_Order_PriceList callouts) -> Check JVM graphs during execution (see attached image): * PermGen rapidly increases * This is caused to a big number of classes loaded * Finally, major GC collection cycles are triggered To detect wrong callouts, apply detect-callouts.diff and execute ClassLoaderTest. This is the list of 10 Platform callouts obtained in current pi: - SL_IsDefault - SL_Column - SL_AlertRule_SQL - FixedValueExpressionCallout - Activation_Message - SL_ModuleCallout - SL_Module_Minor_Version - SL_TableAudit - DefaultExpressionCallout - SelectorFieldPropertyCallout | |||||||
Tags | No tags attached. | |||||||
Attached Files | 36559.diff [^] (47,853 bytes) 2017-08-01 10:00 [Show Content] [Hide Content]diff --git a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java --- a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java +++ b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java @@ -11,60 +11,52 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2009-2011 Openbravo SLU + * All portions are Copyright (C) 2009-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.userinterface.selector; -import java.io.IOException; -import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Restrictions; import org.openbravo.base.filter.IsIDFilter; import org.openbravo.base.model.Entity; import org.openbravo.base.model.ModelProvider; import org.openbravo.base.model.Property; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; import org.openbravo.dal.core.OBContext; import org.openbravo.dal.service.OBCriteria; import org.openbravo.dal.service.OBDal; +import org.openbravo.erpCommon.ad_callouts.SimpleCallout; import org.openbravo.model.ad.datamodel.Column; import org.openbravo.model.ad.datamodel.Table; import org.openbravo.service.json.JsonConstants; -import org.openbravo.xmlEngine.XmlDocument; /** * This call out computes the columnid of a Selector Field. * * @author mtaal */ -public class SelectorFieldPropertyCallout extends HttpSecureAppServlet { - - private static final long serialVersionUID = 1L; +public class SelectorFieldPropertyCallout extends SimpleCallout { @Override - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); + protected void execute(CalloutInfo info) throws ServletException { - // printRequest(request); + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - printPage(response, vars); - } + // Parameters + final String selectorID = info.getStringParameter("inpobuiselSelectorId", IsIDFilter.instance) + .trim(); + final String property = info.getStringParameter("inpproperty").trim(); - private void printPage(HttpServletResponse response, VariablesSecureApp vars) throws IOException, - ServletException { - final String selectorID = vars.getStringParameter("inpobuiselSelectorId", IsIDFilter.instance) - .trim(); - final String property = vars.getStringParameter("inpproperty").trim(); + // Get the selector final Selector selector = OBDal.getInstance().get(Selector.class, selectorID); final Table table; if (selector.getTable() != null) { @@ -74,7 +66,6 @@ table = selector.getObserdsDatasource().getTable(); } else { // no table don't do anything - writeEmptyResult(response); return; } // some cases: @@ -83,9 +74,9 @@ final Entity entity = ModelProvider.getInstance().getEntity(table.getName()); Property foundProperty = null; - if (property.equals(JsonConstants.IDENTIFIER)) { + if (StringUtils.equals(property, JsonConstants.IDENTIFIER)) { if (entity.getIdentifierProperties().isEmpty()) { - writeEmptyResult(response); + // no properties don't do anything return; } foundProperty = entity.getIdentifierProperties().get(0); @@ -94,13 +85,12 @@ Entity currentEntity = entity; Property currentProperty = null; for (String part : parts) { - if (part.length() == 0) { - writeEmptyResult(response); + if (StringUtils.isEmpty(part)) { return; } - if (part.equals(JsonConstants.IDENTIFIER) || part.equals(JsonConstants.ID)) { + if (StringUtils.equals(part, JsonConstants.IDENTIFIER) + || StringUtils.equals(part, JsonConstants.ID)) { if (foundProperty == null) { - writeEmptyResult(response); return; } break; @@ -111,7 +101,7 @@ break; } - if (Entity.COMPUTED_COLUMNS_PROXY_PROPERTY.equals(currentProperty.getName())) { + if (StringUtils.equals(currentProperty.getName(), Entity.COMPUTED_COLUMNS_PROXY_PROPERTY)) { currentEntity = ModelProvider.getInstance().getEntity( currentEntity.getName() + Entity.COMPUTED_COLUMNS_CLASS_APPENDIX); } else { @@ -143,49 +133,15 @@ Restrictions.eq(Column.PROPERTY_DBCOLUMNNAME, foundProperty.getColumnName()))); final List<Column> columnList = columnCriteria.list(); if (columnList.isEmpty()) { - writeEmptyResult(response); + // No columns, don't do anything return; } - final XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - - final StringBuilder sb = new StringBuilder(); - sb.append("var calloutName='Selector_Field_Property_Callout';\n"); - final StringBuilder array = new StringBuilder(); - array.append("var respuesta = new Array("); - array.append("new Array('inpadColumnId', \"" + columnList.get(0).getId() + "\")"); - // construct the array, where the first dimension contains the name - // of the field to be changed and the second one our newly generated - // value - array.append(");"); - xmlDocument.setParameter("array", sb.toString() + array.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); + // Update the column ID + info.addResult("inpadColumnId", columnList.get(0).getId()); } finally { OBContext.restorePreviousMode(); } } - - private void writeEmptyResult(HttpServletResponse response) throws IOException { - - final XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - - final StringBuilder sb = new StringBuilder(); - sb.append("var calloutName='Selector_Field_Property_Callout';\n"); - final StringBuilder array = new StringBuilder(); - array.append("var respuesta = new Array("); - array.append(");"); - xmlDocument.setParameter("array", sb.toString() + array.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); - } } diff --git a/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java b/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java --- a/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java +++ b/src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java @@ -11,70 +11,40 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2008-2010 Openbravo SLU + * All portions are Copyright (C) 2008-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; +import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; +import org.openbravo.base.filter.ValueListFilter; +import org.openbravo.erpCommon.utility.Utility; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; -import org.openbravo.erpCommon.utility.Utility; -import org.openbravo.xmlEngine.XmlDocument; +public class Activation_Message extends SimpleCallout { + @Override + protected void execute(CalloutInfo info) throws ServletException { -public class Activation_Message extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + // Parameters + String strHBActive = info.getStringParameter("inpisheartbeatactive", new ValueListFilter("Y", + "N")); + String strRegActive = info.getStringParameter("inpisregistrationactive", new ValueListFilter( + "Y", "N")); - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strHBActive = vars.getStringParameter("inpisheartbeatactive"); - String strRegActive = vars.getStringParameter("inpisregistrationactive"); - try { - printPage(response, vars, strHBActive, strRegActive); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } - - private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strHBActive, - String strRegActive) throws IOException, ServletException { - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - - String msg = (strHBActive.equalsIgnoreCase("Y") || strRegActive.equalsIgnoreCase("Y") ? Utility - .messageBD(this, "REG_INFO_MESSAGE", vars.getLanguage()) : ""); - - StringBuffer resultado = new StringBuffer(); - resultado.append("var calloutName='Activation_Message';\n\n"); - resultado.append("var respuesta = new Array("); - if (!msg.equals("")) - resultado.append("new Array(\"MESSAGE\", \"" + msg + "\")"); - resultado.append(");"); - xmlDocument.setParameter("array", resultado.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); + // Message + String msg = StringUtils.equalsIgnoreCase(strHBActive, "Y") + || StringUtils.equalsIgnoreCase(strRegActive, "Y") ? Utility.messageBD(this, + "REG_INFO_MESSAGE", info.vars.getLanguage()) : ""; + if (StringUtils.isNotEmpty(msg)) { + info.showMessage(msg); + } } } diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java b/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java --- a/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java +++ b/src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java @@ -18,134 +18,114 @@ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import java.sql.SQLException; -import javax.servlet.ServletConfig; import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; +import org.apache.commons.lang.StringUtils; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.exception.NoConnectionAvailableException; import org.openbravo.utils.FormatUtilities; -import org.openbravo.xmlEngine.XmlDocument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Checks the SQL in Alert Rule to ensure all required columns are included. */ -public class SL_AlertRule_SQL extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; - private static final Logger log = LoggerFactory.getLogger(SL_AlertRule_SQL.class); +public class SL_AlertRule_SQL extends SimpleCallout { - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + @Override + protected void execute(CalloutInfo info) throws ServletException { - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strSQL = vars.getStringParameter("inpsql"); - try { - printPage(response, vars, strSQL); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - private boolean existsColumn(ResultSetMetaData rmeta, String col) { - try { - for (int i = 1; i <= rmeta.getColumnCount(); i++) { - if (rmeta.getColumnName(i).equalsIgnoreCase(col)) - return true; - } - } catch (Exception ex) { - } - return false; - } + // Parameters + String strSQL = info.getStringParameter("inpsql"); - private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strSQL) - throws IOException, ServletException { - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - + // Message String msg = ""; - - if (!strSQL.equals("")) { + if (StringUtils.isNotEmpty(strSQL)) { if (strSQL.toUpperCase().trim().startsWith("SELECT ")) { PreparedStatement st = null; try { this.getConnection().setReadOnly(true); st = this.getPreparedStatement(strSQL); ResultSetMetaData rmeta = st.getMetaData(); - if (!existsColumn(rmeta, "AD_CLIENT_ID")) + if (!existsColumn(rmeta, "AD_CLIENT_ID")) { msg = "AD_CLIENT_ID "; - if (!existsColumn(rmeta, "AD_ORG_ID")) + } + if (!existsColumn(rmeta, "AD_ORG_ID")) { msg += "AD_ORG_ID "; - if (!existsColumn(rmeta, "CREATED")) + } + if (!existsColumn(rmeta, "CREATED")) { msg += "CREATED "; - if (!existsColumn(rmeta, "CREATEDBY")) + } + if (!existsColumn(rmeta, "CREATEDBY")) { msg += "CREATEDBY "; - if (!existsColumn(rmeta, "UPDATED")) + } + if (!existsColumn(rmeta, "UPDATED")) { msg += "UPDATED "; - if (!existsColumn(rmeta, "UPDATEDBY")) + } + if (!existsColumn(rmeta, "UPDATEDBY")) { msg += "UPDATEDBY "; - if (!existsColumn(rmeta, "ISACTIVE")) + } + if (!existsColumn(rmeta, "ISACTIVE")) { msg += "ISACTIVE "; - if (!existsColumn(rmeta, "AD_USER_ID")) + } + if (!existsColumn(rmeta, "AD_USER_ID")) { msg += "AD_USER_ID "; - if (!existsColumn(rmeta, "AD_ROLE_ID")) + } + if (!existsColumn(rmeta, "AD_ROLE_ID")) { msg += "AD_ROLE_ID "; - if (!existsColumn(rmeta, "RECORD_ID")) + } + if (!existsColumn(rmeta, "RECORD_ID")) { msg += "RECORD_ID "; - if (!existsColumn(rmeta, "DESCRIPTION")) + } + if (!existsColumn(rmeta, "DESCRIPTION")) { msg += "DESCRIPTION "; - if (!existsColumn(rmeta, "REFERENCEKEY_ID")) + } + if (!existsColumn(rmeta, "REFERENCEKEY_ID")) { msg += "REFERENCEKEY_ID"; - if (!msg.equals("")) - msg = Utility.messageBD(this, "notColumnInQuery", vars.getLanguage()) + msg; + } + if (StringUtils.isNotEmpty(msg)) { + msg = Utility.messageBD(this, "notColumnInQuery", info.vars.getLanguage()) + msg; + } } catch (Exception ex) { msg = "error in query: " + FormatUtilities.replaceJS(ex.toString()); } finally { try { this.getConnection().setReadOnly(false); } catch (SQLException | NoConnectionAvailableException e) { - log.error("Error resetting readonly to connection in Alert Rule query: {}", strSQL, e); + log4j.error("Error resetting readonly to connection in Alert Rule query: {} " + strSQL); } try { this.releasePreparedStatement(st); } catch (SQLException e) { - log.error("Error releasing statement in Alert Rule query: {}", strSQL, e); + log4j.error("Error releasing statement in Alert Rule query: {} " + strSQL); } } } else { - msg = Utility.messageBD(this, "AlertSelectConstraint", vars.getLanguage()); + msg = Utility.messageBD(this, "AlertSelectConstraint", info.vars.getLanguage()); } } + if (StringUtils.isNotEmpty(msg)) { + info.showMessage(msg); + } + } - StringBuffer resultado = new StringBuffer(); - resultado.append("var calloutName='SL_AlertRule_SQL';\n\n"); - resultado.append("var respuesta = new Array("); - resultado.append("new Array(\"MESSAGE\", \"" + msg + "\")"); - resultado.append(");"); - xmlDocument.setParameter("array", resultado.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); + private boolean existsColumn(ResultSetMetaData rmeta, String col) { + try { + for (int i = 1; i <= rmeta.getColumnCount(); i++) { + if (StringUtils.equalsIgnoreCase(rmeta.getColumnName(i), col)) { + return true; + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + return false; } } diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java b/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java --- a/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java +++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Column.java @@ -11,84 +11,45 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2010-2011 Openbravo SLU + * All portions are Copyright (C) 2010-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; +import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Restrictions; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; import org.openbravo.dal.service.OBCriteria; import org.openbravo.dal.service.OBDal; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.model.ad.datamodel.Column; -import org.openbravo.xmlEngine.XmlDocument; -public class SL_Column extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; +public class SL_Column extends SimpleCallout { + @Override + protected void execute(CalloutInfo info) throws ServletException { - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - try { - printPage(response, vars); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } - - private void printPage(HttpServletResponse response, VariablesSecureApp vars) throws IOException, - ServletException { - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - StringBuilder resultData = new StringBuilder(); + // Parameters + String strIsKey = info.getStringParameter("inpiskey"); + String strTableId = info.getStringParameter("inpadTableId"); // Check there is only one key column per table - if ("Y".equals(vars.getStringParameter("inpiskey"))) { + if (StringUtils.equals(strIsKey, "Y")) { OBCriteria<Column> keyCriteria = OBDal.getInstance().createCriteria(Column.class); - keyCriteria.add(Restrictions.eq(Column.PROPERTY_TABLE + ".id", - vars.getStringParameter("inpadTableId"))); + keyCriteria.add(Restrictions.eq(Column.PROPERTY_TABLE + ".id", strTableId)); keyCriteria.add(Restrictions.eq(Column.PROPERTY_KEYCOLUMN, true)); - if (keyCriteria.list().size() > 0) { - resultData.append("new Array(\"inpiskey\",\"N\"),\n"); - resultData.append("new Array(\"WARNING\",\"" - + Utility.messageBD(this, "MultipleKeyColumns", vars.getLanguage()) - + keyCriteria.list().get(0).getDBColumnName() + "\")\n"); + if (!keyCriteria.list().isEmpty()) { + info.addResult("inpiskey", "N"); + info.showWarning(Utility.messageBD(this, "MultipleKeyColumns", info.vars.getLanguage()) + + keyCriteria.list().get(0).getDBColumnName()); } } - - StringBuilder result = new StringBuilder(); - result.append("var calloutName='SL_Column';\n\n"); - result.append("var respuesta = new Array("); - result.append(resultData); - result.append(");"); - - xmlDocument.setParameter("array", result.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); } } diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java b/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java --- a/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java +++ b/src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java @@ -11,30 +11,22 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2008-2014 Openbravo SLU + * All portions are Copyright (C) 2008-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; - -import javax.servlet.ServletConfig; import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; +import org.openbravo.base.filter.IsIDFilter; import org.openbravo.client.kernel.KernelUtils; import org.openbravo.dal.service.OBDal; import org.openbravo.data.Sqlc; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.model.ad.ui.Tab; -import org.openbravo.xmlEngine.XmlDocument; /** * This callout checks if this is the only active isDefault checked for the table (with @@ -44,85 +36,59 @@ * If another one already exists an error message is raised and the checkbox is unchecked. * */ -public class SL_IsDefault extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; +public class SL_IsDefault extends SimpleCallout { + @Override + protected void execute(CalloutInfo info) throws ServletException { - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - try { - printPage(response, vars); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } + // Parameter + String strValue = info.getStringParameter(strChanged); - private void printPage(HttpServletResponse response, VariablesSecureApp vars) throws IOException, - ServletException { - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); + if (StringUtils.equals(strValue, "Y")) { - String strValue = vars.getStringParameter(vars.getStringParameter("inpLastFieldChanged")); - StringBuffer result = new StringBuffer(); - result.append("var calloutName='SL_IsDefault';\n\n"); - result.append("var respuesta = new Array("); + // Parameters + String strTableId = info.getStringParameter("inpTableId", IsIDFilter.instance); + String strOrg = info.getStringParameter("inpadOrgId", IsIDFilter.instance); + String parentColumn = info.getStringParameter("inpParentKeyColumn"); + String currentColumnKey = info.getStringParameter("inpkeyColumnId"); + String currentKeyValue = info.getStringParameter(info.getStringParameter("inpKeyName")); - if (strValue.equals("Y")) { - - String strTableId = vars.getStringParameter("inpTableId"); - String strOrg = vars.getStringParameter("inpadOrgId"); - String parentColumn = vars.getStringParameter("inpParentKeyColumn"); - String tabId = vars.getStringParameter("TAB_ID"); - // if parentColumn is not null, compute parentColumn using tab information - if ((parentColumn == null || parentColumn.isEmpty()) && StringUtils.isNotEmpty(tabId)) { - Tab currentTab = OBDal.getInstance().get(Tab.class, tabId); + // if parentColumn is null, compute parentColumn using tab information + if ((StringUtils.isEmpty(parentColumn) && StringUtils.isNotEmpty(info.getTabId()))) { + Tab currentTab = OBDal.getInstance().get(Tab.class, info.getTabId()); parentColumn = KernelUtils.getInstance().getParentColumnName(currentTab); } - String parentValue = vars.getStringParameter("inp" - + Sqlc.TransformaNombreColumna(parentColumn)); - - String currentColumnKey = vars.getStringParameter("inpkeyColumnId"); - String currentKeyValue = vars.getStringParameter(vars.getStringParameter("inpKeyName")); SLIsDefaultData[] data = SLIsDefaultData.select(this, strTableId); - if (data != null && data.length != 0) { + if (data != null && data.length > 0) { String parentClause = ""; String currentClause = ""; // Include parent column if it exists - if (!parentColumn.equals("") && !parentValue.equals("")) - parentClause = "AND " + parentColumn + "='" + parentValue + "'"; + if (StringUtils.isNotEmpty(parentColumn)) { + String parentValue = info.getStringParameter( + "inp" + Sqlc.TransformaNombreColumna(parentColumn), IsIDFilter.instance); + if (StringUtils.isNotEmpty(parentValue)) { + parentClause = "AND " + parentColumn + "='" + parentValue + "'"; + } + } // In case the current record already exists in DB not sum it to // the total - if (!currentKeyValue.equals("")) + if (StringUtils.isNotEmpty(currentKeyValue)) { currentClause = "AND " + currentColumnKey + " != '" + currentKeyValue + "'"; + } String strTotalDefaults = SLIsDefaultData.selectHasDefaults(this, data[0].tablename, parentClause, currentClause, strOrg); - if (!strTotalDefaults.equals("0")) { - String msg = Utility.messageBD(this, "DuplicatedDefaults", vars.getLanguage()); - result.append("new Array(\"ERROR\", \"" + msg + "\"), \n"); - result.append("new Array(\"inpisdefault\", \"N\")\n"); + if (!StringUtils.equals(strTotalDefaults, "0")) { + info.showError(Utility.messageBD(this, "DuplicatedDefaults", info.vars.getLanguage())); + info.addResult("inpisdefault", "N"); } } } - - result.append(");"); - xmlDocument.setParameter("array", result.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); } } diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java b/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java --- a/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java +++ b/src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2010-2011 Openbravo SLU + * All portions are Copyright (C) 2010-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -19,107 +19,51 @@ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; +import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Restrictions; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; +import org.openbravo.base.filter.IsIDFilter; +import org.openbravo.base.filter.ValueListFilter; import org.openbravo.dal.service.OBCriteria; import org.openbravo.dal.service.OBDal; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.model.ad.module.Module; -import org.openbravo.xmlEngine.XmlDocument; -public class SL_ModuleCallout extends HttpSecureAppServlet { +public class SL_ModuleCallout extends SimpleCallout { - private static final long serialVersionUID = 1L; + @Override + protected void execute(CalloutInfo info) throws ServletException { - /** - * Prevent navigation history in the callout - */ - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } - - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strChanged = vars.getStringParameter("inpLastFieldChanged"); - if (log4j.isDebugEnabled()) - log4j.debug("CHANGED: " + strChanged); - String strADModuleID = vars.getStringParameter("inpadModuleId"); - - try { - String moduleType = vars.getStringParameter("inptype"); - String isInDev = vars.getStringParameter("inpisindevelopment"); - if (isInDev.equals("Y") && moduleType.equals("T")) { - templateInDev(response, vars, strADModuleID); - } else { - printPageResult(response, ""); - } - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } - - /** - * Checks if there are multiple templates in development. If so, unsets the is indevelopment - * property from the current record. - */ - private void templateInDev(HttpServletResponse response, VariablesSecureApp vars, - String strADModuleID) throws IOException, ServletException { - // Check whether there are more templates in development - OBCriteria<Module> obc = OBDal.getInstance().createCriteria(Module.class); - obc.add(Restrictions.eq(Module.PROPERTY_TYPE, "T")); - obc.add(Restrictions.eq(Module.PROPERTY_INDEVELOPMENT, true)); - if (strADModuleID != null && !strADModuleID.equals("")) { - obc.add(Restrictions.ne(Module.PROPERTY_ID, strADModuleID)); - } - String devTemplates = ""; - for (Module template : obc.list()) { - devTemplates += template.getName() + " "; + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); } - StringBuffer result = new StringBuffer(); + // Parameters + String strADModuleID = info.getStringParameter("inpadModuleId", IsIDFilter.instance); + String moduleType = info.getStringParameter("inptype"); + String isInDev = info.getStringParameter("inpisindevelopment", new ValueListFilter("Y", "N")); - if (!devTemplates.equals("")) { - // There are other template(s) in dev - result.append("new Array(\"MESSAGE\", \"" + devTemplates + " " - + Utility.messageBD(this, "MultipleDevelopmentTemplates", vars.getLanguage()) + "\"),\n"); - result.append("new Array(\"inpisindevelopment\", \"N\")"); + if (StringUtils.equals(isInDev, "Y") && StringUtils.equals(moduleType, "T")) { + // Check whether there are more templates in development + OBCriteria<Module> obc = OBDal.getInstance().createCriteria(Module.class); + obc.add(Restrictions.eq(Module.PROPERTY_TYPE, "T")); + obc.add(Restrictions.eq(Module.PROPERTY_INDEVELOPMENT, true)); + if (StringUtils.isNotEmpty(strADModuleID)) { + obc.add(Restrictions.ne(Module.PROPERTY_ID, strADModuleID)); + } + + if (!obc.list().isEmpty()) { + String devTemplates = ""; + for (Module template : obc.list()) { + devTemplates += template.getName() + " "; + } + // There are other template(s) in dev + info.showMessage(devTemplates + " " + + Utility.messageBD(this, "MultipleDevelopmentTemplates", info.vars.getLanguage())); + info.addResult("inpisindevelopment", "N"); + } } - - printPageResult(response, result.toString()); } - - /** - * Composes the standard callout response - */ - private void printPageResult(HttpServletResponse response, String result) throws IOException { - StringBuffer resultado = new StringBuffer(); - resultado.append("var calloutName='SL_ModuleCallout';\n\n"); - resultado.append("var respuesta = new Array("); - resultado.append(result); - resultado.append(");"); - - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - xmlDocument.setParameter("array", resultado.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); - } - } diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java b/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java --- a/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java +++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java @@ -11,26 +11,18 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2009-2010 Openbravo SLU + * All portions are Copyright (C) 2009-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; +import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; +import org.apache.commons.lang.StringUtils; import org.openbravo.dal.service.OBDal; import org.openbravo.model.ad.module.Module; -import org.openbravo.xmlEngine.XmlDocument; /** * A callout used in the module dependency form. When the dependent module changes then the minor @@ -38,70 +30,26 @@ * * @author mtaal */ -public class SL_Module_Minor_Version extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; +public class SL_Module_Minor_Version extends SimpleCallout { private static final String DEPENDENT_MODULE_FIELD = "inpadDependentModuleId"; private static final String MINOR_VERSION_FIELD = "inpstartversion"; - private static final String LAST_CHANGED_FIELD = "inpLastFieldChanged"; - /** - * Initializes the servlet. - */ - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + @Override + protected void execute(CalloutInfo info) throws ServletException { - /** - * Receives the request to compute the version. - */ - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strChanged = vars.getStringParameter(LAST_CHANGED_FIELD); - if (log4j.isDebugEnabled()) - log4j.debug("CHANGED: " + strChanged); - String strModule = vars.getStringParameter(DEPENDENT_MODULE_FIELD); - String strFirstVersion = vars.getStringParameter(MINOR_VERSION_FIELD); - try { - printPage(response, vars, strChanged, strFirstVersion, strModule); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strChanged, - String firstVersion, String strModule) throws IOException, ServletException { - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); + // Parameter + String strModule = info.getStringParameter(DEPENDENT_MODULE_FIELD); - StringBuffer result = new StringBuffer(); - result.append("var calloutName='SL_Module_Minor_version';\n\n"); - result.append("var respuesta = new Array("); - // do not change the name field, if the user just left it - if (strChanged.equals(DEPENDENT_MODULE_FIELD)) { - // get the minor version + // Set Minor Version + if (StringUtils.equals(strChanged, DEPENDENT_MODULE_FIELD)) { final Module dependsOnModule = OBDal.getInstance().get(Module.class, strModule); - if (dependsOnModule.getVersion() != null) { - result.append("new Array(\"" + MINOR_VERSION_FIELD + "\", \"" - + dependsOnModule.getVersion() + "\")"); - } else { - result.append("new Array(\"" + MINOR_VERSION_FIELD + "\", \"" - + dependsOnModule.getVersion() + "\")"); - } + info.addResult(MINOR_VERSION_FIELD, dependsOnModule.getVersion()); } - result.append(");"); - xmlDocument.setParameter("array", result.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); } } diff --git a/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java b/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java --- a/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java +++ b/src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2010-2011 Openbravo SLU + * All portions are Copyright (C) 2010-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -19,100 +19,61 @@ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; +import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Restrictions; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; import org.openbravo.dal.service.OBCriteria; import org.openbravo.dal.service.OBDal; import org.openbravo.database.SessionInfo; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.model.ad.datamodel.Table; -import org.openbravo.xmlEngine.XmlDocument; -public class SL_TableAudit extends HttpSecureAppServlet { +public class SL_TableAudit extends SimpleCallout { - private static final long serialVersionUID = 1L; + @Override + protected void execute(CalloutInfo info) throws ServletException { - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strChanged = vars.getStringParameter("inpLastFieldChanged"); - if (log4j.isDebugEnabled()) - log4j.debug("CHANGED: " + strChanged); - try { - printPage(response, vars, strChanged); - } catch (Exception ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } + if (StringUtils.equalsIgnoreCase(strChanged, "inpisfullyaudited")) { - private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strChanged) - throws IOException, ServletException { - // Change audit trail status regarding whether there are audited tables - StringBuffer action = new StringBuffer(); - if (strChanged.equalsIgnoreCase("inpisfullyaudited")) { - boolean currentRecordFullyAudited = vars.getStringParameter("inpisfullyaudited").equals("Y"); + // Parameter + String strIsFullyAudited = info.getStringParameter("inpisfullyaudited"); + boolean currentRecordFullyAudited = StringUtils.equals(strIsFullyAudited, "Y"); if (currentRecordFullyAudited) { SessionInfo.setAuditActive(true); - OBCriteria<Table> qTables = OBDal.getInstance().createCriteria(Table.class); qTables.add(Restrictions.eq(Table.PROPERTY_ISFULLYAUDITED, true)); qTables.add(Restrictions.eq(Table.PROPERTY_ISAUDITINSERTS, true)); - if (qTables.count() == 0) { - action.append("new Array(\"inpisauditinserts\", \"N\"),\n"); + if (qTables.list().isEmpty()) { + info.addResult("inpisauditinserts", "N"); } else { - action.append("new Array(\"inpisauditinserts\", \"Y\"),\n"); + info.addResult("inpisauditinserts", "Y"); } - action.append("new Array(\"MESSAGE\", \"" - + Utility.messageBD(this, "RegenerateAudit_ExcludeColumn", vars.getLanguage()) - + "\")\n"); + info.showMessage(Utility.messageBD(this, "RegenerateAudit_ExcludeColumn", + info.vars.getLanguage())); } else { OBCriteria<Table> obc = OBDal.getInstance().createCriteria(Table.class); obc.add(Restrictions.eq(Table.PROPERTY_ISFULLYAUDITED, true)); - SessionInfo.setAuditActive(obc.list().size() > 0); + SessionInfo.setAuditActive(!obc.list().isEmpty()); } - } else if (strChanged.equalsIgnoreCase("inpisexcludeaudit")) { - boolean currentRecordExcludeAudit = vars.getStringParameter("inpisexcludeaudit").equals("Y"); + } else if (StringUtils.equalsIgnoreCase(strChanged, "inpisexcludeaudit")) { + + // Parameter + String strIsExcludedAudit = info.getStringParameter("inpisexcludeaudit"); + boolean currentRecordExcludeAudit = StringUtils.equals(strIsExcludedAudit, "Y"); if (currentRecordExcludeAudit) { SessionInfo.setAuditActive(true); - action.append("new Array(\"MESSAGE\", \"" - + Utility.messageBD(this, "RegenerateAudit", vars.getLanguage()) + "\")\n"); + info.showMessage(Utility.messageBD(this, "RegenerateAudit", info.vars.getLanguage())); } else { OBCriteria<Table> obc = OBDal.getInstance().createCriteria(Table.class); obc.add(Restrictions.eq(Table.PROPERTY_ISFULLYAUDITED, true)); - SessionInfo.setAuditActive(obc.list().size() > 0); + SessionInfo.setAuditActive(!obc.list().isEmpty()); } } - - StringBuffer result = new StringBuffer(); - result.append("var calloutName='SL_TableAudit';\n\n"); - result.append("var respuesta = new Array("); - result.append(action); - result.append(");"); - - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - xmlDocument.setParameter("array", result.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); } } | |||||||
Relationships [ Relation Graph ] [ Dependency Graph ] | ||||||||||||||||||||||
|
Notes | |
(0098384) hgbot (developer) 2017-08-04 09:44 |
Repository: erp/devel/pi Changeset: b12d3da979dfb34ae678e7033cb0c4af8ec93398 Author: Asier Lostalé <asier.lostale <at> openbravo.com> Date: Tue Aug 01 13:42:56 2017 +0200 URL: http://code.openbravo.com/erp/devel/pi/rev/b12d3da979dfb34ae678e7033cb0c4af8ec93398 [^] fixed 36559: platform callouts should be refactored to implement SimpleCallout --- M modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorFieldPropertyCallout.java M src/org/openbravo/erpCommon/ad_callouts/Activation_Message.java M src/org/openbravo/erpCommon/ad_callouts/SL_AlertRule_SQL.java M src/org/openbravo/erpCommon/ad_callouts/SL_Column.java M src/org/openbravo/erpCommon/ad_callouts/SL_IsDefault.java M src/org/openbravo/erpCommon/ad_callouts/SL_ModuleCallout.java M src/org/openbravo/erpCommon/ad_callouts/SL_Module_Minor_Version.java M src/org/openbravo/erpCommon/ad_callouts/SL_TableAudit.java --- |
(0098386) alostale (manager) 2017-08-04 09:47 |
Reviewed proposed patch, applied with some modifications and tested |
Issue History | |||
Date Modified | Username | Field | Change |
2017-08-01 09:02 | aferraz | New Issue | |
2017-08-01 09:02 | aferraz | Assigned To | => platform |
2017-08-01 09:02 | aferraz | Modules | => Core |
2017-08-01 09:02 | aferraz | Triggers an Emergency Pack | => No |
2017-08-01 09:03 | aferraz | Relationship added | related to 0036067 |
2017-08-01 10:00 | aferraz | File Added: 36559.diff | |
2017-08-04 09:41 | alostale | Relationship added | depends on 0036599 |
2017-08-04 09:44 | hgbot | Checkin | |
2017-08-04 09:44 | hgbot | Note Added: 0098384 | |
2017-08-04 09:44 | hgbot | Status | new => resolved |
2017-08-04 09:44 | hgbot | Resolution | open => fixed |
2017-08-04 09:44 | hgbot | Fixed in SCM revision | => http://code.openbravo.com/erp/devel/pi/rev/b12d3da979dfb34ae678e7033cb0c4af8ec93398 [^] |
2017-08-04 09:46 | alostale | Assigned To | platform => alostale |
2017-08-04 09:47 | alostale | Review Assigned To | => alostale |
2017-08-04 09:47 | alostale | Note Added: 0098386 | |
2017-08-04 09:47 | alostale | Status | resolved => closed |
2017-08-04 09:47 | alostale | Fixed in Version | => 3.0PR17Q4 |
2017-09-18 18:23 | caristu | Relationship added | related to 0036882 |
Copyright © 2000 - 2009 MantisBT Group |