It would be best if you went a rewrote your tags not to require release to be called. That change will also bring you in-line with the jsp spec. These links might help: http://www.onjava.com/lpt/a/1248 http://www.onjava.com/lpt/a/1250 http://jakarta.apache.org/taglibs/guidelines.html
> -----Original Message----- > From: Shawn Zernik [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 07, 2003 11:41 PM > To: Tomcat Users List; [EMAIL PROTECTED] > Subject: RE: Custom Tag Lib > > > Mike: > > Thanks sooooo very much... I saw their is a config option in > the Jasper to > turn off tag pooling. do you thing that would work too, of shouldI > impliment it in my source code. I'm gonna take a look at it > right now. > > Shawn > > -----Original Message----- > From: Mike Cherichetti (Renegade Internet) > [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 07, 2003 10:28 PM > To: Tomcat Users List > Subject: RE: Custom Tag Lib > > > Shawn, > > I ran into this problem as well when switching from 4.0 to > 4.1. I think it > has something to do with 4.1 pooling and re-using tag > objects. What I did > in all of my doStartTag(), doAfterBody(), etc... methods was > manually call > release() to reset the data in the tags like so: > > public int doStartTag() throws JspException > { > try > { > ... > } > > catch (Exception exception) > { > throw new JspException(exception); > } > > finally > { > release(); > } > > return SKIP_BODY; > } > > Have a nice day ... > > Sincerely, > > Mike Cherichetti > Renegade Internet > Internet Advertising Delivery Solutions > www.renegadeinternet.com > Phone (724) 658-6346 > Fax (724) 658-6346 > > > -----Original Message----- > From: Shawn Zernik [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 07, 2003 10:56 PM > To: [EMAIL PROTECTED] > Subject: Custom Tag Lib > > > Tomcat Users: > > I've been fighting with some version differences in tom cat > wondering why my > app acts severly different on Tomcat 4.1.27 then 4.0.6. It > appears that > 4.1.27 is not working from my perspective, and have been > fighting with it > since monday. None of the books I have touch this subject or > ellude to the > problem, and I've seached high and low for solutions. > > I'm having a problem working with my custom tag library. The > stange part to > this is it appears to work on tomcat 4.0.6 but not on 4.1.27. > The library > has a tage called site that extends a base tag, and those > tags use other > classes in my data namespace to hit a database. > > The tags are returning the proper data in both versions, but > in 4.1.27, I > have to "reload" the contect in the manager for it to > "register" the changes > from the database. I have added some printlns to std out to > track what's > going on. In tomcat 4.0.6 they are going through all the > code as I would > exspect it to. I have included each of the class files that > are called. I > have also included the printouts from both versions of tomcat > to clierify > how each version is handling the calls. > > The object hiarchey goes as follows: > > jPublish.Tags site extends inc_tag. > jPublish.Data.site_manager extends jPublish.Data.manager, > managers contain, > load, and fill datas. > jPublish.Data.site_data extends jPublish.Data.data, used for > storing data > and tracking updates. > > > --- INDEX.JSP --- > <%@ page contentType="text/html" %> > <%@ taglib prefix="inc" uri="inc" %> > <inc:site site="1" action="none"/> > <html> > <head><title><inc:site action="title" /></title></head> > > <body> > <h1>Welcome to <inc:site action="title"/>!</h1> > © <inc:site action="copyright"/> > </body> > </html> > > --- TOMCAT 4.0.6 STDOUT --- > Starting service Tomcat-Standalone > Apache Tomcat/4.0.6 > Starting service Tomcat-Apache > Apache Tomcat/4.0.6 > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.setSite() > jPublish.Data.manager() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > Shawn > jPublish.Tags.site.doEndTag(): End > > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.setSite() > jPublish.Data.manager() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > INC > jPublish.Tags.site.doEndTag(): End > > --- TOMCAT 4.1.27 STDOUT: db INC then Shawn --- > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.setSite() > jPublish.Data.manager() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.site.doEndTag(): End > jPublish.Data.manager() > jPublish.Tags.site() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.inc_tag.loaded(): not instance > jPublish.Data.manager.load() > jPublish.Tags.inc_tag.loaded(): load ok > jPublish.Tags.inc_tag.loaded(): next ok > jPublish.Tags.inc_tag.loaded(): reached fill. > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.site.loaded() > INC > jPublish.Tags.site.doEndTag(): End > > <Change INC to Shawn in DB> > jPublish.Tags.site.setSite() > jPublish.Data.manager() > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.site.doEndTag(): End > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.site.loaded() > Internetwork Consulting > jPublish.Tags.site.doEndTag(): End > jPublish.Tags.site.doEndTag(): Begin > jPublish.Tags.inc_tag.loaded() > jPublish.Tags.site.loaded() > INC > jPublish.Tags.site.doEndTag(): End > > --- SITE TAG "inc:site" --- > package jPublish.Tags; > > import jPublish.Data.*; > > public class site extends inc_tag { > private site_data objSite; > > // Constructors > //////////////////////////////////////////////////////////// > public site() { > objManager = (manager) new site_manager(); > System.out.println("jPublish.Tags.site()"); > } > > // Properties > ////////////////////////////////////////////////////////////// > public void setSite(String strNew) { > System.out.println("jPublish.Tags.site.setSite()"); > objManager = (manager) new site_manager(); > objManager.setWhere("id = " + strNew); > } > > // Methods > ///////////////////////////////////////////////////////////////// > protected boolean loaded() { > if(super.loaded()) { > objSite = (site_data) objData; > > System.out.println("jPublish.Tags.site.loaded()"); > return true; > } else > return false; > } > > public int doEndTag() { > > System.out.println("jPublish.Tags.site.doEndTag(): Begin"); > > if(strAction.equalsIgnoreCase("id")) > if(loaded()) > print(Long.toString(objSite.getID())); > > if(strAction.equalsIgnoreCase("design")) > if(loaded()) > print(Long.toString(objSite.getDesign())); > > if(strAction.equalsIgnoreCase("title")) > if(loaded()) print(objSite.getTitle()); > > if(strAction.equalsIgnoreCase("webmaster")) > if(loaded()) print(objSite.getWebmaster()); > > if(strAction.equalsIgnoreCase("email")) > if(loaded()) print(objSite.getEmail()); > > if(strAction.equalsIgnoreCase("copyright")) > if(loaded()) print(objSite.getCopyright()); > > if(strAction.equalsIgnoreCase("logo")) > if(loaded()) print(objSite.getLogo()); > > if(strAction.equalsIgnoreCase("next")) > if(objManager.next()) return > this.EVAL_BODY_AGAIN; > > > System.out.println("jPublish.Tags.site.doEndTag(): End"); > > return this.SKIP_BODY; > } > } > > --- INC_TAG --- > package jPublish.Tags; > > import jPublish.Data.*; > import javax.servlet.*; > import javax.servlet.jsp.*; > import javax.servlet.jsp.tagext.*; > > public abstract class inc_tag extends TagSupport { > // Data Menebers > /////////////////////////////////////////////////////////// > protected manager objManager; > protected data objData; > protected String strWhere; > > // Action Data > protected String strAction = "none"; > private String strOutput = "none"; > > // Properties > ////////////////////////////////////////////////////////////// > public void setAction(String strNew) { strAction = strNew; } > public void setOutput(String strNew) { strOutput = strNew; } > public manager getManager() { return objManager; } > > // Internal Methods > //////////////////////////////////////////////////////// > protected boolean loaded() { > System.out.println("jPublish.Tags.inc_tag.loaded()"); > if(!(objData instanceof data)) { > > System.out.println("jPublish.Tags.inc_tag.loaded(): not instance"); > if(objManager.load()) { > > System.out.println("jPublish.Tags.inc_tag.loaded(): load ok"); > if(objManager.next()) { > > System.out.println("jPublish.Tags.inc_tag.loaded(): next ok"); > if(objManager.fill()) { > > System.out.println("jPublish.Tags.inc_tag.loaded(): reached fill."); > objData = > objManager.getData(); > return true; > } else > return false; > } > } else > return false; > } > > // Data Exist: Loaded > return true; > } > > protected void print(String strOut) { > JspWriter out = pageContext.getOut(); > > System.out.println(strOut); > try { out.print(format(strOut)); } > catch (Exception e) { > System.out.println("Exception error: " + e); } > } > > protected String format(String strIn) { > String strTemp = new String(); > char cTemp; > > // String Safe > if(strOutput.equalsIgnoreCase("stringsafe")) { > for(int iCnt = 0; iCnt < > strIn.length(); iCnt++) { > cTemp = strIn.charAt(iCnt); > switch(cTemp) { > case '\'': > strTemp += "\\\'"; > break; > case '\"': > strTemp += "\\\""; > break; > case '\\': > strTemp += "\\\\"; > break; > default: > strTemp += cTemp; > break; > } > } > return strTemp; > } > > // Strip String > if(strOutput.equalsIgnoreCase("stringsafe")) { > for(int iCnt = 0; iCnt < > strIn.length(); iCnt++) { > cTemp = strIn.charAt(iCnt); > switch(cTemp) { > case '\'': > break; > case '\"': > break; > default: > strTemp += cTemp; > break; > } > } > return strTemp; > } > > // HTML Safe > if(strOutput.equalsIgnoreCase("htmlsafe")) { > for(int iCnt = 0; iCnt < > strIn.length(); iCnt++) { > cTemp = strIn.charAt(iCnt); > switch(cTemp) { > case '<': > strTemp += "<"; > break; > case '>': > strTemp += ">"; > break; > default: > strTemp += cTemp; > break; > } > } > return strTemp; > } > > // None > return strIn; > } > } > > --- DATA.SITE_MANAGER --- > package jPublish.Data; > > public class site_manager extends manager { > // Constructors > //////////////////////////////////////////////////////////// > public site_manager() { > super(); > super.setTable("sites"); > } > > // Methods > ///////////////////////////////////////////////////////////////// > public boolean fill() { > site_data dataNew = new site_data(); > > try { > dataNew.setID(sqlResults.getLong("id")); > dataNew.setDesign(sqlResults.getLong("design")); > dataNew.setTitle(sqlResults.getString("title")); > > dataNew.setWebmaster(sqlResults.getString("webmaster")); > dataNew.setEmail(sqlResults.getString("email")); > > dataNew.setCopyright(sqlResults.getString("copyright")); > dataNew.setLogo(sqlResults.getString("logo")); > > dataNew.setManager((manager) this); > dataNew.setLoaded(); > objData = (data) dataNew; > return true; > } > > catch (Exception e) { > strError = "Exception error: " + e; > } > > return false; > } > } > > --- DATA.SITE_DATA --- > package jPublish.Data; > > public class site_data extends data { > // Data Menebers > /////////////////////////////////////////////////////////// > private long lDesign; > private String strTitle; > private String strWebmaster; > private String strEmail; > private String strCopyright; > private String strLogo; > // Child Relationships > private section_manager objSections; > // Parent Relationships > private design_manager objDesigns; > > // Constructors > //////////////////////////////////////////////////////////// > public site_data() { super(); } > > // Properties > ////////////////////////////////////////////////////////////// > public boolean setDesign(long lNew) { > if(lNew > 0) { > lDesign = lNew; > objUpdates.set("design", Long.toString(lNew)); > return true; > } > > return false; > } > > public boolean setTitle(String strNew) { > if(strNew.length() > 0) { > strTitle = strNew; > objUpdates.set("title", strNew); > return true; > } > > return false; > } > > public boolean setWebmaster(String strNew) { > if(strNew.length() > 0) { > strWebmaster = strNew; > objUpdates.set("webmaster", strNew); > return true; > } > > return false; > } > > public boolean setEmail(String strNew) { > if(strNew.length() > 0) { > strEmail = strNew; > objUpdates.set("email", strNew); > return true; > } > > return false; > } > > public boolean setCopyright(String strNew) { > if(strNew.length() > 0) { > strCopyright = strNew; > objUpdates.set("copyright", strNew); > return true; > } > > return false; > } > > public boolean setLogo(String strNew) { > if(strNew.length() > 0) { > strLogo = strNew; > objUpdates.set("logo", strNew); > return true; > } > > return false; > } > > public long getDesign() { return lDesign; } > public String getTitle() { return strTitle; } > public String getWebmaster() { return strWebmaster; } > public String getEmail() { return strEmail; } > public String getCopyright() { return strCopyright; } > public String getLogo() { return strLogo; } > > // Child Relationships > public section_manager getSections() { > if(!(objSections instanceof section_manager)) { > objSections = new section_manager(); > objSections.setWhere("site = " + this.getID()); > objSections.load(); > } > return objSections; > } > > // Parent Relationships > public design_manager getParentDesign() { > if(!(objDesigns instanceof design_manager)) { > objDesigns = new design_manager(); > objDesigns.setWhere("site = " + > this.getDesign()); > objDesigns.load(); > } > return objDesigns; > } > } > > --- DATA.MANAGER --- > package jPublish.Data; > import java.sql.*; > > public abstract class manager extends Object { > // Data Members > //////////////////////////////////////////////////////////// > protected data objData; > protected String strError = new String(); > > // SQL Options > private String strTable = new String(); > private String strWhere = new String(); > > // Data SQL Connection > protected Connection sqlConnection; > protected Statement sqlStatement; > protected ResultSet sqlResults; > > // Constructors > //////////////////////////////////////////////////////////// > manager() { > System.out.println("jPublish.Data.manager()"); > > try { > > Class.forName("com.mysql.jdbc.Driver").newInstance(); > > sqlConnection = DriverManager.getConnection( > "jdbc:mysql://localhost/jPublish", "root", ""); > sqlStatement = sqlConnection.createStatement( > ResultSet.TYPE_SCROLL_INSENSITIVE, > ResultSet.CONCUR_UPDATABLE); > } > > catch (Exception e) { > strError = "Execption error: " + e; > } > } > > // Properties > ////////////////////////////////////////////////////////////// > public boolean setTable(String strNew) { > if((strNew instanceof String) && > (strNew.length() > 0)) { > strTable = strNew; > return true; > } else > return false; > } > > public boolean setWhere(String strNew) { > if((strNew instanceof String) && > (strNew.length() > 0)) { > if(strWhere.length() > 0) > strWhere += " AND " + strNew; > else > strWhere = strNew; > > return true; > } else > return false; > } > > public data getData() { return objData; } > public String getError() { return strError; } > > public String getTable() { return strTable; } > public String getWhere() { return strWhere; } > public int getCount() { > int iCurr = -1; > int iLast = -1; > > try { > iCurr = sqlResults.getRow(); > sqlResults.last(); > iLast = sqlResults.getRow(); > sqlResults.absolute(iCurr); > } > catch (Exception e) { strError = "Exception > Error: " + e; } > > return iLast; > } > > // Methods > ///////////////////////////////////////////////////////////////// > public boolean load() { > String strQuery = ""; > > System.out.println("jPublish.Data.manager.load()"); > > // Build the Query > strQuery = strQuery + "SELECT * "; > strQuery = strQuery + " FROM " + strTable; > if(strWhere.length() > 0) > strQuery = strQuery + " WHERE " + strWhere; > > // Get Results > try { > sqlResults = > sqlStatement.executeQuery(strQuery); > } > > // Get Errors > catch (Exception e) { > strError = "Exception error: " + e; > return false; > } > > return true; > } > > public boolean loadFrom(String strTable, String strColumn) { > String strQuery = ""; > > // Build the Query > strQuery = strQuery + "SELECT " + this.strTable + ".* "; > strQuery = strQuery + " FROM " + strTable + ", > " + this.strTable; > strQuery = strQuery + " WHERE " + strTable + > "." + strColumn; > strQuery = strQuery + " = " + this.strTable + ".id;"; > > // Get Results > try { > sqlResults = > sqlStatement.executeQuery(strQuery); > } > > // Get Errors > catch (Exception e) { > strError = "Exception error: " + e; > return false; > } > > return true; > } > > public boolean next() { > try { return sqlResults.next(); } > catch (Exception e) { > strError = "Exception error: " + e; > return false; > } > } > > public boolean save() { > // Create Varibles > updates objUpdates = objData.getUpdates(); > Object[] arrKeys = objUpdates.getKeys(); > > try { > // Update Record > for(int iCnt = 0; iCnt < arrKeys.length; iCnt++) > > sqlResults.updateString(arrKeys[iCnt].toString(), > > objUpdates.get(arrKeys[iCnt].toString())); > > // Write Changes > if(objData.getID() > 0) > sqlResults.updateRow(); > else > sqlResults.insertRow(); > } > > // Update Errors > catch (Exception e) { > // Set Error > strError = "Exception error: " + e; > return false; > } > > return true; > } > // Abstract Functions > ////////////////////////////////////////////////////// > // These must be implimented since the extended object > only know the > tables. > public abstract boolean fill(); > } > > --- DATA.MANAGER --- > package jPublish.Data; > import java.sql.*; > > public abstract class manager extends Object { > // Data Members > //////////////////////////////////////////////////////////// > protected data objData; > protected String strError = new String(); > > // SQL Options > private String strTable = new String(); > private String strWhere = new String(); > > // Data SQL Connection > protected Connection sqlConnection; > protected Statement sqlStatement; > protected ResultSet sqlResults; > > // Constructors > //////////////////////////////////////////////////////////// > manager() { > System.out.println("jPublish.Data.manager()"); > > try { > > Class.forName("com.mysql.jdbc.Driver").newInstance(); > > sqlConnection = DriverManager.getConnection( > "jdbc:mysql://localhost/jPublish", "root", ""); > sqlStatement = sqlConnection.createStatement( > ResultSet.TYPE_SCROLL_INSENSITIVE, > ResultSet.CONCUR_UPDATABLE); > } > > catch (Exception e) { > strError = "Execption error: " + e; > } > } > > // Properties > ////////////////////////////////////////////////////////////// > public boolean setTable(String strNew) { > if((strNew instanceof String) && > (strNew.length() > 0)) { > strTable = strNew; > return true; > } else > return false; > } > > public boolean setWhere(String strNew) { > if((strNew instanceof String) && > (strNew.length() > 0)) { > if(strWhere.length() > 0) > strWhere += " AND " + strNew; > else > strWhere = strNew; > > return true; > } else > return false; > } > > public data getData() { return objData; } > public String getError() { return strError; } > > public String getTable() { return strTable; } > public String getWhere() { return strWhere; } > public int getCount() { > int iCurr = -1; > int iLast = -1; > > try { > iCurr = sqlResults.getRow(); > sqlResults.last(); > iLast = sqlResults.getRow(); > sqlResults.absolute(iCurr); > } > catch (Exception e) { strError = "Exception > Error: " + e; } > > return iLast; > } > > // Methods > ///////////////////////////////////////////////////////////////// > public boolean load() { > String strQuery = ""; > > System.out.println("jPublish.Data.manager.load()"); > > // Build the Query > strQuery = strQuery + "SELECT * "; > strQuery = strQuery + " FROM " + strTable; > if(strWhere.length() > 0) > strQuery = strQuery + " WHERE " + strWhere; > > // Get Results > try { > sqlResults = > sqlStatement.executeQuery(strQuery); > } > > // Get Errors > catch (Exception e) { > strError = "Exception error: " + e; > return false; > } > > return true; > } > > public boolean loadFrom(String strTable, String strColumn) { > String strQuery = ""; > > // Build the Query > strQuery = strQuery + "SELECT " + this.strTable + ".* "; > strQuery = strQuery + " FROM " + strTable + ", > " + this.strTable; > strQuery = strQuery + " WHERE " + strTable + > "." + strColumn; > strQuery = strQuery + " = " + this.strTable + ".id;"; > > // Get Results > try { > sqlResults = > sqlStatement.executeQuery(strQuery); > } > > // Get Errors > catch (Exception e) { > strError = "Exception error: " + e; > return false; > } > > return true; > } > > public boolean next() { > try { return sqlResults.next(); } > catch (Exception e) { > strError = "Exception error: " + e; > return false; > } > } > > public boolean save() { > // Create Varibles > updates objUpdates = objData.getUpdates(); > Object[] arrKeys = objUpdates.getKeys(); > > try { > // Update Record > for(int iCnt = 0; iCnt < arrKeys.length; iCnt++) > > sqlResults.updateString(arrKeys[iCnt].toString(), > > objUpdates.get(arrKeys[iCnt].toString())); > > // Write Changes > if(objData.getID() > 0) > sqlResults.updateRow(); > else > sqlResults.insertRow(); > } > > // Update Errors > catch (Exception e) { > // Set Error > strError = "Exception error: " + e; > return false; > } > > return true; > } > // Abstract Functions > ////////////////////////////////////////////////////// > // These must be implimented since the extended object > only know the > tables. > public abstract boolean fill(); > } > > --- DATA.DATA --- > package jPublish.Data; > > public abstract class data extends Object { > // Data Menebers > /////////////////////////////////////////////////////////// > protected manager objManager; > > // Update Tracking > protected updates objUpdates; > > // Data > protected long lID; > > // Constructors > //////////////////////////////////////////////////////////// > data () { > objUpdates = new updates(); > } > > // Properties > ////////////////////////////////////////////////////////////// > public boolean setManager(manager manNew) { > if(manNew != null) { > objManager = manNew; > return true; > } > > return false; > } > > public boolean setLoaded() { return objUpdates.setUpdated(); } > > public manager getManager() { return objManager; } > public updates getUpdates() { return objUpdates; } > > // Data Properties > public boolean setID(long lNew) { > if(lNew > 0) { > lID = lNew; > objUpdates.set("id", Long.toString(lNew)); > return true; > } > > return false; > } > > public long getID() { return lID; } > } > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
