cancel
Showing results for 
Search instead for 
Did you mean: 

Null Pointer Error

Former Member
0 Kudos

I have this error:[code]

Application error occurs during processing the request.

Details: java.lang.NullPointerException

at sit.fypj.hrms.beans.MedicalClaimBean.retrieveUserMedicalClaim(MedicalClaimBean.java:319)

at sit.fypj.hrms.servlet.MedicalClaimServlet.processViewRequest(MedicalClaimServlet.java:49)

at sit.fypj.hrms.servlet.MedicalClaimServlet.doGet(MedicalClaimServlet.java:25)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:391)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:265)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:345)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:323)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:865)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:240)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

[/code]

i have try to look at my codes i cannot find any wrong?

Please help me!!!!!!

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

The only place where NPE could be thrown is:

rs.next()

Please investigate your implementation of DataRetriever and the condition when null is returned.

Just guessing - when no result is found or when some error conditoin is met.

Former Member
0 Kudos

MedicalServlet


package sit.fypj.hrms.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sit.fypj.hrms.beans.EmployeeBean;
import sit.fypj.hrms.beans.MedicalClaimBean;

public class MedicalClaimServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		String input = request.getParameter("submit");
		System.out.println(input);
		
		if (input.equals("CREATE"))
			processCreateClaimDetails(request, response);
		else if (input.equals("OVERVIEW"))
			processViewRequest(request, response);
		else if (input.equals("DELETE"))
			processDeleteMedicalClaim(request, response);
	}

	public void doPost(
		HttpServletRequest request,
		HttpServletResponse response)
		throws ServletException, IOException {
	}

	private void processViewRequest(
	HttpServletRequest request,
	HttpServletResponse response)
	throws ServletException, IOException {
	String mySqlJndiName =
		this.getServletContext().getInitParameter("MySql JNDI");

	EmployeeBean s =
		(EmployeeBean) request.getSession().getAttribute("employeeLogin");

	String personnelNo = s.getPersonnelNo();

	ArrayList medicalClaimDetailList =
	MedicalClaimBean.retrieveUserMedicalClaim(
			mySqlJndiName,
			personnelNo);
	request.getSession().setAttribute(
		"medicalClaimList",
		medicalClaimDetailList);
	request.getRequestDispatcher("MedicalClaim.jsp").forward(
		request,
		response);
}
		
	private void processCreateClaimDetails(
		HttpServletRequest request,
		HttpServletResponse response)
		throws ServletException, IOException {
		String mySqlJndiName =
			this.getServletContext().getInitParameter("MySql JNDI");
		
		String billDate = request.getParameter("billDate");
		String plans = request.getParameter("plans");
		String panel = request.getParameter("panel");
		String billNo = request.getParameter("billNo");
		String dependent = request.getParameter("dependent");
		String nric = request.getParameter("nric");
		String totalAmt = "0.00";
		String eeAmt = "0.00";
		String erAmt = "0.00";
		String overclaimAmt = "0.00";
		String status = "To be Accounted";
		String reason = request.getParameter("reason");

		GregorianCalendar current = new GregorianCalendar();
		String day = String.valueOf(current.get(Calendar.DATE));
		String month = String.valueOf(current.get(Calendar.MONTH) + 1);
		String year = String.valueOf(current.get(Calendar.YEAR));
		String claim = day + "." + month + "." + year;
		
		EmployeeBean s =
			(EmployeeBean) request.getSession().getAttribute("employeeLogin");

		String personnelNo = s.getPersonnelNo();

		
		MedicalClaimBean medicalclaimdetail =
			new MedicalClaimBean(
			     claim,
				billDate,
				plans,
				panel,
				billNo,
				dependent,
				nric,
				totalAmt,
				eeAmt,
				erAmt,
				overclaimAmt,
				status,
				reason,
				personnelNo);
		if (medicalclaimdetail.createMedicalClaim(mySqlJndiName)) {
			request.setAttribute("medicalClaim", medicalclaimdetail);
			request.getRequestDispatcher(
				"CreateMedicalClaim.jsp").forward(
				request,
				response);
		}
	}

	private void processDeleteMedicalClaim(
		HttpServletRequest request,
		HttpServletResponse response)
		throws ServletException, IOException {
		String mySqlJndiName =
			this.getServletContext().getInitParameter("MySql JNDI");
			try {
			String[] claimField = request.getParameterValues("claim");
			System.err.println(claimField);
			for (int i = 0; i < claimField.length; i++) {
				String claim = claimField<i>;
				System.err.println("Claim: " + claim);
			MedicalClaimBean record = new MedicalClaimBean();
				record =
					MedicalClaimBean.retrieveMedicalClaim(
						mySqlJndiName,
						claim);
				if (record.getStatus().equals("To be Accounted")) {
					record.deleteMedicalClaimReceipt(mySqlJndiName, claim);
				} else
					request.setAttribute("notDeleted", "true");
			}
			EmployeeBean s =
				(EmployeeBean) request.getSession().getAttribute(
					"employeeLogin");

			String personnelNo= s.getPersonnelNo();

			ArrayList medicalClaimList =
				MedicalClaimBean.retrieveUserMedicalClaim(
					mySqlJndiName,
					personnelNo);

			request.setAttribute("medicalClaimList", medicalClaimList);
			request.setAttribute("deleted", "true");

			request.getRequestDispatcher("MedicalClaim.jsp").forward(
				request,
				response);
		} catch (NumberFormatException e) {
			EmployeeBean s =
				(EmployeeBean) request.getSession().getAttribute(
					"employeeLogin");

			String personnelNo = s.getPersonnelNo();

			ArrayList medicalClaim =
				MedicalClaimBean.retrieveUserMedicalClaim(
					mySqlJndiName,
					personnelNo);

			request.getSession().setAttribute("medicalClaimList", medicalClaim);
			request.setAttribute("noneSelected", "true");
			request.getRequestDispatcher("MedicalClaim.jsp").forward(
				request,
				response);
		} catch (NullPointerException e) {
			EmployeeBean s =
				(EmployeeBean) request.getSession().getAttribute(
					"employeeLogin");

			String personnelNo = s.getPersonnelNo();

			ArrayList medicalClaimList =
				MedicalClaimBean.retrieveUserMedicalClaim(
					mySqlJndiName,
					personnelNo);

			request.getSession().setAttribute("medicalClaimList", medicalClaimList);
			request.setAttribute("noneSelected", "true");
			request.getRequestDispatcher("MedicalClaim.jsp").forward(
				request,
				response);
		}
	}
}

oliver
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi titi,

Sure it's in the method retrieveUserMedicalClaim. Maybe your db result is null when you try to access it. Let me know, which line in the method is 319. It isn't that big, so should be fairly easy to locate.

Regards,

ok

Message was edited by:

Oliver Kohl

Former Member
0 Kudos

MedicalClaim.java


/*
 * Created on Apr 24, 2007
 */
package sit.fypj.hrms.beans;

import sit.fypj.hrms.database.DataRetriever;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class MedicalClaimBean {
	
	private String claim;
	private String billDate;
	private String plans;
	private String panel;
	private String billNo;
	private String dependent;
	private String nric;
	private String totalAmt;
	private String eeAmt;
	private String erAmt;
	private String overclaimAmt;
	private String status;
	private String reason;
	private String personnelNo;

	public MedicalClaimBean() {
	}
	
	

	public MedicalClaimBean(
	    
		String claim,
		String billDate,
		String plans,
		String panel,
		String billNo,
		String dependent,
		String nric,
		String totalAmt,
		String eeAmt,
		String erAmt,
		String overclaimAmt,
		String status,
		String reason,
		String personnelNo) {	
		this.claim = claim;
		this.billDate = billDate;
		this.plans = plans;
		this.panel = panel;
		this.billNo = billNo;
		this.dependent = dependent;
		this.nric = nric;
		this.totalAmt = totalAmt;
		this.eeAmt = eeAmt;
		this.erAmt = erAmt;
		this.overclaimAmt = overclaimAmt;
		this.status = status;
		this.reason = reason;
		this.personnelNo = personnelNo;
	}
	
		public String getBillDate() {
			return billDate;
		}

		public String getBillNo() {
			return billNo;
		}
		
		public String getClaim() {
			return claim;
		}

		public String getDependent() {
			return dependent;
		}

		public String getEeAmt() {
			return eeAmt;
		}

		public String getErAmt() {
			return erAmt;
		}

		public String getNric() {
			return nric;
		}

		public String getOverclaimAmt() {
			return overclaimAmt;
		}

		public String getPanel() {
			return panel;
		}

		public String getPersonnelNo() {
			return personnelNo;
		}

		public String getPlans() {
			return plans;
		}

		public String getReason() {
			return reason;
		}

		public String getStatus() {
			return status;
		}

		public String getTotalAmt() {
			return totalAmt;
		}
		

		
		public void setBillDate(String string) {
			billDate = string;
		}

		public void setBillNo(String string) {
			billNo = string;
		}

		public void setClaim(String string) {
			claim = string;
		}
		
		public void setDependent(String string) {
			dependent = string;
		}

		public void setEeAmt(String string) {
			eeAmt = string;
		}

		public void setErAmt(String string) {
			erAmt = string;
		}

		public void setNric(String string) {
			nric = string;
		}

		public void setOverclaimAmt(String string) {
			overclaimAmt = string;
		}

		public void setPanel(String string) {
			panel = string;
		}

		public void setPersonnelNo(String string) {
			personnelNo = string;
		}

		public void setPlans(String string) {
			plans = string;
		}

		public void setReason(String string) {
			reason = string;
		}

		public void setStatus(String string) {
			status = string;
		}

		public void setTotalAmt(String string) {
			totalAmt = string;
		}

		public boolean createMedicalClaim(String mySqlJndiName) {
			boolean success = false;
			DataRetriever db = new DataRetriever(mySqlJndiName);
			String sql =
				"INSERT INTO MedicalClaimReceipt(claim, billDate, plans, panel, billNo, dependent, nric, totalAmt, eeAmt, erAmt, overclaimAmt, status, reason, personnelNo)";
			sql += " values('"
				+ claim
				+ "', '"
				+ billDate
				+ "', '"
				+ plans
				+ "', '"
				+ panel
				+ "', '"
				+ billNo
				+ "', '"
				+ dependent
				+ "', '"
				+ nric
				+ "', '"
				+ totalAmt
				+ "', '"
				+ eeAmt
				+ "', '"
				+ erAmt
				+ "', '"
				+ overclaimAmt
				+ "', '"
				+ status
				+ "', '"
				+ reason
				+ "', '"
				+ personnelNo
				+ "');";
			System.err.println(sql);
			if (db.execUpdateQuery(sql) == 1) {
				System.err.println(sql);
				success = true;
			}
			System.err.println(success);
			return success;
		}

		public boolean deleteMedicalClaimReceipt(
			String mySqlJndiName,
			String claim) {
			boolean success = false;
			DataRetriever db = new DataRetriever(mySqlJndiName);
			String sql =
				"DELETE from MedicalClaimReceipt where claim = '" + claim + "'";

			if (db.execUpdateQuery(sql) == 1) {
				System.err.println(sql);
				success = true;
			}
			db.terminate();
			return success;
		}

		public static ArrayList retrieveAllMedical(String mySqlJndiName) {
			ArrayList list = new ArrayList();
			DataRetriever db = new DataRetriever(mySqlJndiName);
			try {
				ResultSet rs =
					db.execSelectQuery("Select * from MedicalClaimReceipt");
				while (rs.next()) {
					MedicalClaimBean s =
						new MedicalClaimBean(
					        rs.getString(1),
					 		rs.getString(2),
							rs.getString(3),
							rs.getString(4),
							rs.getString(5),
							rs.getString(6),
							rs.getString(7),
							rs.getString(8),
							rs.getString(9),
							rs.getString(10),
							rs.getString(11),
							rs.getString(12),
							rs.getString(13),
							rs.getString(14));
					list.add(s);
				}
				db.terminate();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			return list;
		}

		public static MedicalClaimBean retrieveMedicalClaim(
			String mySqlJndiName,
	        String claim) {
			MedicalClaimBean m = new MedicalClaimBean();
			DataRetriever db = new DataRetriever(mySqlJndiName);
			try {
				ResultSet rs =
					db.execSelectQuery(
						"Select * from MedicalClaimReceipt where claim = '"
							+ claim
							+ "'");
				while (rs.next()) {
					m =
						new MedicalClaimBean(
					rs.getString(1),
					rs.getString(2),
					rs.getString(3),
					rs.getString(4),
					rs.getString(5),
					rs.getString(6),
					rs.getString(7),
					rs.getString(8),
					rs.getString(9),
					rs.getString(10),
					rs.getString(11),
					rs.getString(12),
					rs.getString(13),
					rs.getString(14));
				}
				db.terminate();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			return m;
		}
		public static ArrayList retrieveUserMedicalClaim(
			String mySqlJndiName,
			String personnelNo) {
			ArrayList list = new ArrayList();
			DataRetriever db = new DataRetriever(mySqlJndiName);
			try {
				ResultSet rs =
					db.execSelectQuery(
						"Select * from MedicalClaimReceipt where personnelNo = '"
							+ personnelNo
							+ "'");
				while (rs.next()) {
					MedicalClaimBean medicalClaim =
						new MedicalClaimBean(
					rs.getString(1),
			rs.getString(2),
			rs.getString(3),
			rs.getString(4),
			rs.getString(5),
			rs.getString(6),
			rs.getString(7),
			rs.getString(8),
			rs.getString(9),
			rs.getString(10),
			rs.getString(11),
			rs.getString(12),
			rs.getString(13),
			rs.getString(14));
					list.add(medicalClaim);
				}
				db.terminate();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			return list;
			}
			
	 public static ArrayList retrieveMedicalsClaim(
			String mySqlJndiName,
			String claim) {
			ArrayList list = new ArrayList();
			DataRetriever db = new DataRetriever(mySqlJndiName);
			try {
				ResultSet rs =
					db.execSelectQuery(
						"Select * from 	MedicalClaimReceipt where claim = '"
							+ claim
							+ "'");
				while (rs.next()) {
					MedicalClaimBean medicalClaimList =
						new MedicalClaimBean(
					rs.getString(1),
			rs.getString(2),
			rs.getString(3),
			rs.getString(4),
			rs.getString(5),
			rs.getString(6),
			rs.getString(7),
			rs.getString(8),
			rs.getString(9),
			rs.getString(10),
			rs.getString(11),
			rs.getString(12),
			rs.getString(13),
			rs.getString(14));
					list.add(medicalClaimList);
				}
				db.terminate();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			return list;
		}

	

	

	}
	

Former Member
0 Kudos

Hi,

see at method "retrieveUserMedicalClaim()" line number 319. some object was null.

usually NullPointer is thrown, when you try to do some thing with a object which was accidently found to be null.

regards

Vivek Nidhi

oliver
Product and Topic Expert
Product and Topic Expert
0 Kudos

So why not paste the code?

-> MedicalClaimBean.java:319

Regrads,

ok