Hi Anil, the problem should be solved with revision 782529, if not, let me know. Thanks for reporting,
Regards, Hans On Mon, 2009-06-08 at 01:07 -0400, Anil Patel wrote: > Hans, > Mods in this commit are causing checkout process to break. I am > getting following error. > > 2009-06-08 00:48:37,975 (http-0.0.0.0-8443-3) > [ CallService.java:247:ERROR] > ---- exception report > ---------------------------------------------------------- > Exception: org.ofbiz.service.GenericServiceException > Message: Service [updatePerson] target threw an unexpected exception > (null) > ---- cause > --------------------------------------------------------------------- > Exception: java.lang.NullPointerException > Message: null > ---- stack trace > --------------------------------------------------------------- > java.lang.NullPointerException > org.ofbiz.party.party.PartyServices.updatePerson(PartyServices.java:306) > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > sun > .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: > 39) > > Its because null value for statusId field is passed to service. Please > look into it and suggest the fix. > > Regards > Anil Patel > > > Begin forwarded message: > > > From: hans...@apache.org > > Date: June 4, 2009 10:33:08 AM EDT > > To: comm...@ofbiz.apache.org > > Subject: svn commit: r781752 - in /ofbiz/trunk/applications/party: > > data/PartyTypeData.xml src/org/ofbiz/party/party/PartyServices.java > > Reply-To: dev@ofbiz.apache.org > > > > Author: hansbak > > Date: Thu Jun 4 14:33:07 2009 > > New Revision: 781752 > > > > URL: http://svn.apache.org/viewvc?rev=781752&view=rev > > Log: > > disable related userlogins when a party is disabled, status changes > > makes now use of separate service, als make re-activate party possible > > > > Modified: > > ofbiz/trunk/applications/party/data/PartyTypeData.xml > > ofbiz/trunk/applications/party/src/org/ofbiz/party/party/ > > PartyServices.java > > > > Modified: ofbiz/trunk/applications/party/data/PartyTypeData.xml > > URL: > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/data/PartyTypeData.xml?rev=781752&r1=781751&r2=781752&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/applications/party/data/PartyTypeData.xml (original) > > +++ ofbiz/trunk/applications/party/data/PartyTypeData.xml Thu Jun 4 > > 14:33:07 2009 > > @@ -297,7 +297,8 @@ > > <StatusItem description="Enabled" sequenceId="01" > > statusCode="ENABLED" statusId="PARTY_ENABLED" > > statusTypeId="PARTY_STATUS"/> > > <StatusItem description="Disabled" sequenceId="99" > > statusCode="DISABLED" statusId="PARTY_DISABLED" > > statusTypeId="PARTY_STATUS"/> > > <StatusValidChange condition="" statusId="PARTY_ENABLED" > > statusIdTo="PARTY_DISABLED" transitionName="Disable"/> > > - > > + <StatusValidChange condition="" statusId="PARTY_DISABLED" > > statusIdTo="PARTY_ENABLED" transitionName="Re-Enable"/> > > + > > <StatusType description="Case" hasTable="N" parentTypeId="" > > statusTypeId="CASE_STATUS"/> > > > > <StatusType description="Communication Event" hasTable="N" > > parentTypeId="" statusTypeId="COM_EVENT_STATUS"/> > > > > Modified: ofbiz/trunk/applications/party/src/org/ofbiz/party/party/ > > PartyServices.java > > URL: > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/src/org/ofbiz/party/party/PartyServices.java?rev=781752&r1=781751&r2=781752&view=diff > > = > > = > > = > > = > > = > > = > > = > > = > > ====================================================================== > > --- ofbiz/trunk/applications/party/src/org/ofbiz/party/party/ > > PartyServices.java (original) > > +++ ofbiz/trunk/applications/party/src/org/ofbiz/party/party/ > > PartyServices.java Thu Jun 4 14:33:07 2009 > > @@ -211,22 +211,40 @@ > > try { > > GenericValue party = delegator.findByPrimaryKey("Party", > > UtilMisc.toMap("partyId", partyId)); > > > > - // check that status is defined as a valid change > > - GenericValue statusValidChange = > > delegator.findByPrimaryKey("StatusValidChange", > > UtilMisc.toMap("statusId", party.getString("statusId"), > > "statusIdTo", statusId)); > > - if (statusValidChange == null) { > > - String errorMsg = "Cannot change party status from > > " + party.getString("statusId") + " to " + statusId; > > - Debug.logWarning(errorMsg, module); > > - return ServiceUtil.returnError(errorMsg); > > + if (party.get("statusId") == null) { // old records > > + party.set("statusId", "PARTY_ENABLED"); > > } > > > > - // record the oldStatusId and change the party status > > - String oldStatusId = party.getString("statusId"); > > - party.set("statusId", statusId); > > - party.store(); > > + String oldStatusId = party.getString("statusId"); > > + if (!party.getString("statusId").equals(statusId)) { > > > > - // record this status change in PartyStatus table > > - GenericValue partyStatus = > > delegator.makeValue("PartyStatus", UtilMisc.toMap("partyId", > > partyId, "statusId", statusId, "statusDate", statusDate)); > > - partyStatus.create(); > > + // check that status is defined as a valid change > > + GenericValue statusValidChange = > > delegator.findByPrimaryKey("StatusValidChange", > > UtilMisc.toMap("statusId", party.getString("statusId"), > > "statusIdTo", statusId)); > > + if (statusValidChange == null) { > > + String errorMsg = "Cannot change party status > > from " > > + party.getString("statusId") + " to " + statusId; > > + Debug.logWarning(errorMsg, module); > > + return ServiceUtil.returnError(errorMsg); > > + } > > + > > + party.set("statusId", statusId); > > + party.store(); > > + > > + // record this status change in PartyStatus table > > + GenericValue partyStatus = > > delegator.makeValue("PartyStatus", UtilMisc.toMap("partyId", > > partyId, "statusId", statusId, "statusDate", statusDate)); > > + partyStatus.create(); > > + > > + // disable all userlogins for this user when the new > > status is disabled > > + if (("PARTY_DISABLED").equals(statusId)) { > > + List <GenericValue> userLogins = > > delegator.findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId)); > > + for(GenericValue userLogin : userLogins) { > > + if > > (!"N".equals(userLogin.getString("enabled"))) { > > + userLogin.set("enabled", "N"); > > + > > userLogin.set("disabledDateTime", > > UtilDateTime.nowTimestamp()); > > + userLogin.store(); > > + } > > + } > > + } > > + } > > > > Map<String, Object> results = ServiceUtil.returnSuccess(); > > results.put("oldStatusId", oldStatusId); > > @@ -246,6 +264,7 @@ > > public static Map<String, Object> updatePerson(DispatchContext > > ctx, Map<String, ? extends Object> context) { > > Map<String, Object> result = FastMap.newInstance(); > > GenericDelegator delegator = ctx.getDelegator(); > > + LocalDispatcher dispatcher = ctx.getDispatcher(); > > Locale locale = (Locale) context.get("locale"); > > > > String partyId = getPartyId(context); > > @@ -267,10 +286,15 @@ > > if (person == null || party == null) { > > return > > ServiceUtil.returnError(UtilProperties.getMessage(resource, > > "person.update.not_found", locale)); > > } > > + > > + // update status by separate service > > + String oldStatusId = party.getString("statusId"); > > > > person.setNonPKFields(context); > > party.setNonPKFields(context); > > > > + party.set("statusId", oldStatusId); > > + > > try { > > person.store(); > > party.store(); > > @@ -278,6 +302,15 @@ > > Debug.logWarning(e.getMessage(), module); > > return > > ServiceUtil.returnError(UtilProperties.getMessage(resource, > > "person.update.write_failure", new Object[] { e.getMessage() }, > > locale)); > > } > > + > > + if (!context.get("statusId").equals(oldStatusId)) { > > + try { > > + dispatcher.runSync("setPartyStatus", > > UtilMisc.toMap("partyId", partyId, "statusId", > > context.get("statusId"), "userLogin", context.get("userLogin"))); > > + } catch (GenericServiceException e) { > > + Debug.logWarning(e.getMessage(), module); > > + return > > ServiceUtil.returnError(UtilProperties.getMessage(resource, > > "person.update.write_failure", new Object[] { e.getMessage() }, > > locale)); > > + } > > + } > > > > result.put(ModelService.RESPONSE_MESSAGE, > > ModelService.RESPOND_SUCCESS); > > result.put(ModelService.SUCCESS_MESSAGE, > > UtilProperties.getMessage(resource, "person.update.success", locale)); > > @@ -399,6 +432,7 @@ > > public static Map<String, Object> > > updatePartyGroup(DispatchContext ctx, Map<String, ? extends Object> > > context) { > > Map<String, Object> result = FastMap.newInstance(); > > GenericDelegator delegator = ctx.getDelegator(); > > + LocalDispatcher dispatcher = ctx.getDispatcher(); > > Locale locale = (Locale) context.get("locale"); > > > > String partyId = getPartyId(context); > > @@ -425,8 +459,12 @@ > > return ServiceUtil.returnError(errMsg); > > } > > > > + > > + // update status by separate service > > + String oldStatusId = party.getString("statusId"); > > partyGroup.setNonPKFields(context); > > party.setNonPKFields(context); > > + party.set("statusId", oldStatusId); > > > > try { > > partyGroup.store(); > > @@ -438,6 +476,15 @@ > > return ServiceUtil.returnError(errMsg); > > } > > > > + if (!context.get("statusId").equals(oldStatusId)) { > > + try { > > + dispatcher.runSync("setPartyStatus", > > UtilMisc.toMap("partyId", partyId, "statusId", > > context.get("statusId"), "userLogin", context.get("userLogin"))); > > + } catch (GenericServiceException e) { > > + Debug.logWarning(e.getMessage(), module); > > + return > > ServiceUtil.returnError(UtilProperties.getMessage(resource, > > "person.update.write_failure", new Object[] { e.getMessage() }, > > locale)); > > + } > > + } > > + > > result.put(ModelService.RESPONSE_MESSAGE, > > ModelService.RESPOND_SUCCESS); > > return result; > > } > > > > > -- Antwebsystems.com: Quality OFBiz services for competitive rates