Foren
modelListener overridden method get previous data.
Tanaji M. Londhe, geändert vor 11 Jahren.
modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
Hi,
Here I extend myclass using BaseModelListener class override some method like.
@Override
public void onAfterUpdate(User model) throws ModelListenerException {.........}
In this method i try to access Organization which related the User using --------> list = model.getOrganizations();
But here always I am getting previous value of a organization.
How sholud i get selected organization in a listener.
Here I extend myclass using BaseModelListener class override some method like.
@Override
public void onAfterUpdate(User model) throws ModelListenerException {.........}
In this method i try to access Organization which related the User using --------> list = model.getOrganizations();
But here always I am getting previous value of a organization.
How sholud i get selected organization in a listener.
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
Can anybody help me, its urgent requirement plz.
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
Hi,
I update my server from 6.1.0 to 6.1.1
I have similar with Organization listener for custom field in onAfterUpdate() mtd. But in new version of a liferay 6.1.1 the issue is resolve.
Now i get updated value for custom field in onAfterUpdate() mtd.
But for UserListener issue is not solve till now. list = model.getOrganizations(); Still I am gettting old value for organization.
I update my server from 6.1.0 to 6.1.1
I have similar with Organization listener for custom field in onAfterUpdate() mtd. But in new version of a liferay 6.1.1 the issue is resolve.
Now i get updated value for custom field in onAfterUpdate() mtd.
But for UserListener issue is not solve till now. list = model.getOrganizations(); Still I am gettting old value for organization.
David H Nebinger, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Liferay Legend Beiträge: 14919 Beitrittsdatum: 02.09.06 Neueste Beiträge
you do not need to override listeners, all listeners for a particular model will get invoked.
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
Hi David,
Thanks for your reply.
You are saying is complete right, but here my requirement is to add some other functionality which is related to non-liferay DB. (like performing CRUD operation on non-liferay DB.)
So thats why I override User and Organization listeners in my code using hook.
But my problem is updating user's Organization through control panel.
I am not getting updated value of select org for particular user in my overriden listener ---
@Override
public void onAfterUpdate(User model) throws ModelListenerException {
System.out.println("onAfterUpdate()"+model.getUserId());
try {
List<Organization> orgList = model.getOrganizations();
for (Iterator iterator = orgList.iterator(); iterator.hasNext();) {
Organization organization = (Organization) iterator.next();
System.out.println("User Organization : "+organization.getName());
// here i am getting old(previous) value of a Organization, when i update any user.
}
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
super.onAfterUpdate(model);
}
Thanks for your reply.
You are saying is complete right, but here my requirement is to add some other functionality which is related to non-liferay DB. (like performing CRUD operation on non-liferay DB.)
So thats why I override User and Organization listeners in my code using hook.
But my problem is updating user's Organization through control panel.
I am not getting updated value of select org for particular user in my overriden listener ---
@Override
public void onAfterUpdate(User model) throws ModelListenerException {
System.out.println("onAfterUpdate()"+model.getUserId());
try {
List<Organization> orgList = model.getOrganizations();
for (Iterator iterator = orgList.iterator(); iterator.hasNext();) {
Organization organization = (Organization) iterator.next();
System.out.println("User Organization : "+organization.getName());
// here i am getting old(previous) value of a Organization, when i update any user.
}
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
super.onAfterUpdate(model);
}
Nikhil Nishchal, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 177 Beitrittsdatum: 22.06.12 Neueste Beiträge
On model change try to reindex organization manually and then check.
Hope if re-indexing issue then this may be solve.
and then again get organization by organizationId.
Hope if re-indexing issue then this may be solve.
Indexer indexer = IndexerRegistryUtil.getIndexer(Organization.class);
indexer.reindex(organization);
and then again get organization by organizationId.
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
I perform re-indexing in my code but its not working.
Gaurav Jain, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 145 Beitrittsdatum: 31.01.11 Neueste Beiträge
Once I had similar problems, but don't remember exactly either it was for User or for CalEvent model.
But on checking the source, I found that modelListeners are being invoked by persistenceImpl class methods. For taking User instance: updateUser method of userLocalServiceImpl calls userPersistance update method which further invokes model listeners on this model. And in userLocalServiceImpl updateUser method it further performs more operations like expando, contact etc after the persistance update has been done.
In my case, I remember that I solved my problem by calling model listener of assetEntry and checking user /calEvent instance there instead of calling user model listener.
But I might not be completely right !!
But on checking the source, I found that modelListeners are being invoked by persistenceImpl class methods. For taking User instance: updateUser method of userLocalServiceImpl calls userPersistance update method which further invokes model listeners on this model. And in userLocalServiceImpl updateUser method it further performs more operations like expando, contact etc after the persistance update has been done.
In my case, I remember that I solved my problem by calling model listener of assetEntry and checking user /calEvent instance there instead of calling user model listener.
But I might not be completely right !!
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
In my case, I remember that I solved my problem by calling model listener of assetEntry and checking user /calEvent instance there instead of calling user model listener.
Hi Gaurav,
I am not getting this part, can you elaborate this thing.
Hi Gaurav,
I am not getting this part, can you elaborate this thing.
Gaurav Jain, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 145 Beitrittsdatum: 31.01.11 Neueste BeiträgeTanaji M. Londhe:
Hi Gaurav,
I am not getting this part, can you elaborate this thing.
You may try following:
Instead of applying model listener on Organization; apply on AssetEntry. And then onAfterUpdate of it, you can detect if that assetEntry is of type Organization, then execute your code.
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
can you explain me how to get Organization type from assetEntry?
Gaurav Jain, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 145 Beitrittsdatum: 31.01.11 Neueste Beiträgepublic class CustomAssetEntryListener extends BaseModelListener<assetentry>{
@Override
public void onAfterUpdate(AssetEntry assetEntry)
throws ModelListenerException {
long orgClassNameId=ClassNameLocalServiceUtil.getClassNameId(Organization.class);
if(assetEntry.getClassNameId()==orgClassNameId){
// Your code goes here
}
super.onAfterUpdate(assetEntry);
}</assetentry>
Tanaji M. Londhe, geändert vor 11 Jahren.
RE: modelListener overridden method get previous data.
Regular Member Beiträge: 194 Beitrittsdatum: 25.04.12 Neueste Beiträge
Thanks Gaurav, Its working fine.