1 package com.atlassian.core.ofbiz.osuser;
2
3 import com.atlassian.core.ofbiz.util.CoreTransactionUtil;
4 import com.opensymphony.module.propertyset.PropertySet;
5 import com.opensymphony.user.EntityNotFoundException;
6 import com.opensymphony.user.User;
7 import com.opensymphony.user.UserManager;
8 import com.opensymphony.user.provider.ofbiz.OFBizCredentialsProvider;
9 import org.apache.log4j.Category;
10 import org.ofbiz.core.entity.GenericEntityException;
11 import org.ofbiz.core.entity.GenericTransactionException;
12 import org.ofbiz.core.util.UtilMisc;
13
14 import java.util.Collection;
15 import java.util.Iterator;
16
17
18
19
20
21
22
23 public class CoreOFBizCredentialsProvider extends OFBizCredentialsProvider
24 {
25 private static final Category log = Category.getInstance(CoreOFBizCredentialsProvider.class);
26
27 public boolean remove(String name)
28 {
29 boolean began = false;
30 try
31 {
32 began = CoreTransactionUtil.begin();
33 log.debug("trying to remove properties for: " + name);
34 User user = UserManager.getInstance().getUser(name);
35 PropertySet props = user.getPropertySet();
36 Iterator keyIter = props.getKeys().iterator();
37 while (keyIter.hasNext())
38 {
39 props.remove((String) keyIter.next());
40 }
41 user.getProfileProvider().flushCaches();
42
43 log.debug("trying to remove groups for: " + name);
44 Collection userGroups = user.getGroups();
45
46 if (userGroups != null)
47 {
48 for (Iterator iterator = userGroups.iterator(); iterator.hasNext();)
49 {
50 user.getAccessProvider().removeFromGroup(name, (String) iterator.next());
51 }
52 }
53 user.getAccessProvider().flushCaches();
54
55 log.debug("trying to remove user: " + name);
56 clearUserCache(name);
57 clearAllCache();
58
59 getDelegator().removeByAnd(userEntity, UtilMisc.toMap("name", name));
60
61
62 CoreTransactionUtil.commit(began);
63
64 return true;
65 }
66 catch (GenericEntityException e)
67 {
68 log.error("Could not remove user: " + name, e);
69 try
70 {
71 CoreTransactionUtil.rollback(began);
72 }
73 catch (GenericTransactionException e1)
74 {
75 log.error("Could not remove user: " + name, e1);
76 return false;
77 }
78 return false;
79 }
80 catch (EntityNotFoundException e)
81 {
82 log.error("Could not remove user: " + name, e);
83 try
84 {
85 CoreTransactionUtil.rollback(began);
86 }
87 catch (GenericTransactionException e1)
88 {
89 log.error("Could not remove user: " + name, e1);
90 return false;
91 }
92 return false;
93 }
94 }
95 }