Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » EclipseLink » NPE in AbstractRecord.get() after failed insert
NPE in AbstractRecord.get() after failed insert [message #760619] Sat, 03 December 2011 10:38 Go to next message
Mark Rotteveel is currently offline Mark Rotteveel
Messages: 6
Registered: July 2009
Location: Delft
Junior Member
I am one of the developers of the Firebird JDBC driver (Jaybird). One of our users reported a NPE in EclipseLink with a project they are working on. I have trouble pinpointing the cause of this error. I hope somebody with knowledge of the inner-workings of EclipseLink can help me out to find out if this problem is caused by Jaybird, if this is a problem in EclipseLink itself or something else.

The error is a NullPointerException which is triggered in org.eclipse.persistence.internal.sessions.AbstractRecord#get(DatabaseField)

Reproduction steps are:
1) User creates a movie with a duplicate title (enter an already existing title and any year, then press 'Sauvegarder')
=> This triggers a unique constraint violation (expected)
2) User then creates a movie with a new (not yet existing) title
=> The new movie is saved (only visible if you rerun the project or access the database in another way)
3) System then refreshes the list of movies
=> This triggers a NullPointerException

I have tried to walk through the code, but I get lost in the complexity of EclipseLink. I have seen this is caused by the classIndicatorField in org.eclipse.persistence.descriptors.InheritancePolicy being null, but I have no idea why it is null. So I hope somebody can give me a hand here.

The reproduction project is available at tracker.firebirdsql.org/browse/JDBC-199 in the attached file CineProg.zip, the database is in the file CINEPROG.FDB. To install and run this project this you will need to install Firebird server, available at www.firebirdsql.org/en/server-packages/

The easiest way to setup the project is to use NetBeans 7 and Glassfish 3.1 and install the maven project from the zip. Then update src/main/setup/glassfish-resources.xml with the location of CINEPROG.FDB on your machine (property databaseName)

The project uses EclipseLink 2.2.0 by default, but I have also tried it with EclipseLink 2.3.1.

The reported error (against EclipseLink 2.3.1) is:
WARNING: A system exception occurred during an invocation on EJB MovieEJB method public java.util.List fr.cinematheque.dao.AbstractFacade.findAll()
javax.ejb.EJBException
	at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194)
	at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092)
	at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4880)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
	at $Proxy152.findAll(Unknown Source)
	at fr.cinematheque.dao.__EJB31_Generated__MovieEJB__Intf____Bean__.findAll(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:418)
	at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
	at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1400)
	at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
	at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
	at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
	at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
	at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
	at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
	at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
	at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
	at org.eclipse.persistence.internal.sessions.AbstractRecord.get(AbstractRecord.java:276)
	at org.eclipse.persistence.descriptors.InheritancePolicy.classFromRow(InheritancePolicy.java:336)
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:485)
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:456)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:723)
	at org.eclipse.persistence.queries.ReadAllQuery.registerResultInUnitOfWork(ReadAllQuery.java:742)
	at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:423)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1080)
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:808)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1040)
	at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:383)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1126)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2842)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1521)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1503)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1477)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:484)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:741)
	at fr.cinematheque.dao.AbstractFacade.findAll(AbstractFacade.java:41)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
	at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
	at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367)
	at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
	at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371)
	at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339)
	at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
	... 44 more

[Updated on: Sat, 03 December 2011 10:39]

Report message to a moderator

Re: NPE in AbstractRecord.get() after failed insert [message #760931 is a reply to message #760619] Mon, 05 December 2011 11:07 Go to previous messageGo to next message
Chris Delahunt is currently offline Chris Delahunt
Messages: 1016
Registered: July 2009
Senior Member
I don't know how to get at the mentioned CineProg.zip, can you post the entities involved in the query, and the code creating and executing the query? It would also help to turn EclipseLink logging on and show the logs starting with the constraint violation. If you are stepping through the EclipseLink code in a debugger, can you check that the descriptor causing the problems is for the movies entity, and that it should have inheritance?

Best Regards,
Chris
Re: NPE in AbstractRecord.get() after failed insert [message #761015 is a reply to message #760931] Mon, 05 December 2011 14:24 Go to previous messageGo to next message
Mark Rotteveel is currently offline Mark Rotteveel
Messages: 6
Registered: July 2009
Location: Delft
Junior Member
Chris Delahunt wrote on Mon, 05 December 2011 17:07
I don't know how to get at the mentioned CineProg.zip, can you post the entities involved in the query, and the code creating and executing the query? It would also help to turn EclipseLink logging on and show the logs starting with the constraint violation. If you are stepping through the EclipseLink code in a debugger, can you check that the descriptor causing the problems is for the movies entity, and that it should have inheritance?

I will try to step through the code again later this week, but as I said the complexity of EclipseLink makes it hard for me to pinpoint where the problem is introduced: upto now I have only found where the NPE is thrown which unfortunately does not help much.

As the project only has a Movie entity, so there should not be any other entity for EclipseLink to load.

The code is attached at the URL mentioned in my first post: tracker.firebirdsql.org/browse/JDBC-199 (as I am new to this forum I am not yet allowed to post actual hyperlinks)

I can't easily post the code as it is relatively large for a reproduction case: I tried the reduce it further by removing the ApplicationServer and web part but keeping the same sequence of events, but then the error no longer occurs.
Re: NPE in AbstractRecord.get() after failed insert [message #761016 is a reply to message #760931] Mon, 05 December 2011 14:24 Go to previous messageGo to next message
Mark Rotteveel is currently offline Mark Rotteveel
Messages: 6
Registered: July 2009
Location: Delft
Junior Member
For some reason every post I do is done twice :(

[Updated on: Mon, 05 December 2011 14:28]

Report message to a moderator

Re: NPE in AbstractRecord.get() after failed insert [message #761037 is a reply to message #761016] Mon, 05 December 2011 14:49 Go to previous messageGo to next message
James Sutherland is currently offline James Sutherland
Messages: 1939
Registered: July 2009
Location: Ottawa, Canada
Senior Member

My guess is that something is calling getInheritancePolicy() on the EclipseLink descriptor. This actually triggers EclipseLink to enable inheritance on the descriptor, which leads to the null-pointer. Any usage of getInheritancePolicy() must first check hasInheritance() to avoid this.

If the application is not calling this, then perhaps it is a bug somewhere in EclipseLink this is getting called without the check.


James : Wiki : Book : Blog : Twitter
Re: NPE in AbstractRecord.get() after failed insert [message #761038 is a reply to message #761016] Mon, 05 December 2011 14:49 Go to previous messageGo to next message
James is currently offline James
Messages: 272
Registered: July 2009
Senior Member
My guess is that something is calling getInheritancePolicy() on the EclipseLink descriptor. This actually triggers EclipseLink to enable inheritance on the descriptor, which leads to the null-pointer. Any usage of getInheritancePolicy() must first check hasInheritance() to avoid this.

If the application is not calling this, then perhaps it is a bug somewhere in EclipseLink this is getting called without the check.

--
James : http://wiki.eclipse.org/EclipseLink : http://en.wikibooks.org/wiki/Java_Persistence : http://java-persistence-performance.blogspot.com/
Re: NPE in AbstractRecord.get() after failed insert [message #762939 is a reply to message #761038] Thu, 08 December 2011 15:54 Go to previous messageGo to next message
Mark Rotteveel is currently offline Mark Rotteveel
Messages: 6
Registered: July 2009
Location: Delft
Junior Member
James wrote on Mon, 05 December 2011 20:49
My guess is that something is calling getInheritancePolicy() on the EclipseLink descriptor. This actually triggers EclipseLink to enable inheritance on the descriptor, which leads to the null-pointer. Any usage of getInheritancePolicy() must first check hasInheritance() to avoid this.

If the application is not calling this, then perhaps it is a bug somewhere in EclipseLink this is getting called without the check.


It looks like you are right: when an object is successfully saved hasInheritance() is called, when saving fails because of the unique key constraint, then at some point getInheritancePolicy() is called (see the stacktrace below)

It looks like Flex is the culprit here. When it sends the error message back it serializes the Exception (DatabaseException) and all objects (including SQLCall which contains an InsertObjectQuery which contains the descriptor) in it using a custom serialization protocol. During serialization it calls all methods it considers property-getters (including getInheritancePolicy()).

However I think the implementation of ClassDescriptor#getInheritancePolicy() in EclipseLink is questionable. I would expect that at the time the RelationDescriptor is created, it is known whether it has inheritance or not. I would also expect a method called getInheritancePolicy() not to have side-effects; and if it would really need to have side effects, then only if there really is need for inheritance; especially because hasInheritance() is simply inheritancePolicy != null

"http-thread-pool-8080(4)"
org.eclipse.persistence.descriptors.ClassDescriptor.getInheritancePolicy(ClassDescriptor.java:2078)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
flex.messaging.io.BeanProxy$BeanProperty.get(BeanProxy.java:825)
flex.messaging.io.BeanProxy.getBeanValue(BeanProxy.java:199)
flex.messaging.io.BeanProxy.getValue(BeanProxy.java:173)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:601)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:257)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:602)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:257)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:602)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:257)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:602)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:257)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:602)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:257)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:602)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:257)
flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:602)
flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532)
flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207)
flex.messaging.io.amf.Amf0Output.writeObject(Amf0Output.java:206)
flex.messaging.io.amf.AmfMessageSerializer.writeObject(AmfMessageSerializer.java:196)
flex.messaging.io.amf.AmfMessageSerializer.writeBody(AmfMessageSerializer.java:186)
flex.messaging.io.amf.AmfMessageSerializer.writeMessage(AmfMessageSerializer.java:142)
flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:198)
flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)
javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
com.sun.grizzly.ContextTask.run(ContextTask.java:71)
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
java.lang.Thread.run(Thread.java:662)

Re: NPE in AbstractRecord.get() after failed insert [message #762942 is a reply to message #761037] Thu, 08 December 2011 15:54 Go to previous message
Mark Rotteveel is currently offline Mark Rotteveel
Messages: 6
Registered: July 2009
Location: Delft
Junior Member
Once again: a duplicate...

[Updated on: Thu, 08 December 2011 16:20]

Report message to a moderator

Previous Topic:NPE and other unmotivated exceptions
Next Topic:Mapping / history table with active entry marked
Goto Forum:
  


Current Time: Thu Jul 31 07:42:30 EDT 2014

Powered by FUDForum. Page generated in 0.01758 seconds