- class JcrProfileListener implements EventListener {
-
- public void onEvent(EventIterator events) {
- try {
- final Map<Name, List<ModificationItem>> modifications = new HashMap<Name, List<ModificationItem>>();
- while (events.hasNext()) {
- Event event = events.nextEvent();
- try {
- if (Event.PROPERTY_CHANGED == event.getType()) {
- Property property = (Property) nodeSession
- .getItem(event.getPath());
- String propertyName = property.getName();
- Node userProfile = property.getParent();
- String username = userProfile.getProperty(
- ARGEO_USER_ID).getString();
- if (propertyToAttributes.containsKey(propertyName)) {
- Name name = usernameMapper.buildDn(username);
- if (!modifications.containsKey(name))
- modifications.put(name,
- new ArrayList<ModificationItem>());
- String value = property.getString();
- ModificationItem mi = jcrToLdap(propertyName,
- value);
- if (mi != null)
- modifications.get(name).add(mi);
- }
- } else if (Event.NODE_ADDED == event.getType()) {
- Node userProfile = nodeSession.getNode(event
- .getPath());
- String username = userProfile.getProperty(
- ARGEO_USER_ID).getString();
- Name name = usernameMapper.buildDn(username);
- for (String propertyName : propertyToAttributes
- .keySet()) {
- if (!modifications.containsKey(name))
- modifications.put(name,
- new ArrayList<ModificationItem>());
- String value = userProfile.getProperty(
- propertyName).getString();
- ModificationItem mi = jcrToLdap(propertyName,
- value);
- if (mi != null)
- modifications.get(name).add(mi);
- }
- }
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot process event "
- + event, e);
- }
- }
-
- for (Name name : modifications.keySet()) {
- List<ModificationItem> userModifs = modifications.get(name);
- int modifCount = userModifs.size();
- ldapTemplate.modifyAttributes(name, userModifs
- .toArray(new ModificationItem[modifCount]));
- if (log.isDebugEnabled())
- log.debug("Mapped " + modifCount + " JCR modification"
- + (modifCount == 1 ? "" : "s") + " to " + name);
- }
- } catch (Exception e) {
- // if (log.isDebugEnabled())
- // e.printStackTrace();
- throw new ArgeoException("Cannot process JCR events ("
- + e.getMessage() + ")", e);
- }
- }
-
- }
+ // class JcrProfileListener implements EventListener {
+ //
+ // public void onEvent(EventIterator events) {
+ // try {
+ // final Map<Name, List<ModificationItem>> modifications = new HashMap<Name,
+ // List<ModificationItem>>();
+ // while (events.hasNext()) {
+ // Event event = events.nextEvent();
+ // try {
+ // if (Event.PROPERTY_CHANGED == event.getType()) {
+ // Property property = (Property) nodeSession
+ // .getItem(event.getPath());
+ // String propertyName = property.getName();
+ // Node userProfile = property.getParent();
+ // String username = userProfile.getProperty(
+ // ARGEO_USER_ID).getString();
+ // if (propertyToAttributes.containsKey(propertyName)) {
+ // Name name = usernameMapper.buildDn(username);
+ // if (!modifications.containsKey(name))
+ // modifications.put(name,
+ // new ArrayList<ModificationItem>());
+ // String value = property.getString();
+ // ModificationItem mi = jcrToLdap(propertyName,
+ // value);
+ // if (mi != null)
+ // modifications.get(name).add(mi);
+ // }
+ // } else if (Event.NODE_ADDED == event.getType()) {
+ // Node userProfile = nodeSession.getNode(event
+ // .getPath());
+ // String username = userProfile.getProperty(
+ // ARGEO_USER_ID).getString();
+ // Name name = usernameMapper.buildDn(username);
+ // for (String propertyName : propertyToAttributes
+ // .keySet()) {
+ // if (!modifications.containsKey(name))
+ // modifications.put(name,
+ // new ArrayList<ModificationItem>());
+ // String value = userProfile.getProperty(
+ // propertyName).getString();
+ // ModificationItem mi = jcrToLdap(propertyName,
+ // value);
+ // if (mi != null)
+ // modifications.get(name).add(mi);
+ // }
+ // }
+ // } catch (RepositoryException e) {
+ // throw new ArgeoException("Cannot process event "
+ // + event, e);
+ // }
+ // }
+ //
+ // for (Name name : modifications.keySet()) {
+ // List<ModificationItem> userModifs = modifications.get(name);
+ // int modifCount = userModifs.size();
+ // ldapTemplate.modifyAttributes(name, userModifs
+ // .toArray(new ModificationItem[modifCount]));
+ // if (log.isDebugEnabled())
+ // log.debug("Mapped " + modifCount + " JCR modification"
+ // + (modifCount == 1 ? "" : "s") + " to " + name);
+ // }
+ // } catch (Exception e) {
+ // // if (log.isDebugEnabled())
+ // // e.printStackTrace();
+ // throw new ArgeoException("Cannot process JCR events ("
+ // + e.getMessage() + ")", e);
+ // }
+ // }
+ //
+ // }