protected Object invokeEJBObjectMethod(Object id, MethodInfo info, Object args[]) throws Exception { Method unadvisedMethod = info.getUnadvisedMethod(); if (unadvisedMethod.getName().equals("getEJBHome")) { if (CurrentRemoteProxyFactory.isSet()) return CurrentRemoteProxyFactory.get(EJB2RemoteProxyFactory.class).createHome(); return this.getInitialContext().lookup(this.getMetaData().getHomeJndiName()); } if (unadvisedMethod.getName().equals("getPrimaryKey")) { return id; } if (unadvisedMethod.getName().equals("isIdentical")) { // object has no identity if (id == null) return false; EJBObject bean = (EJBObject) args[0]; Object primaryKey = bean.getPrimaryKey(); if (primaryKey == null) return false; boolean isIdentical = id.equals(primaryKey); return isIdentical; } if (unadvisedMethod.getName().equals("remove")) { try { destroySession(id); } catch (NoSuchEJBException nsee) { String invokingClassName = unadvisedMethod.getDeclaringClass().getName(); Exception newException = (Exception) this.constructProperNoSuchEjbException(nsee, invokingClassName); throw newException; } return null; } throw new RuntimeException("NYI"); }
public void addMethodInfo(MethodInfo info) { methodInfos.put(info.getHash(), info); }