logo Alfresco
Version Enterprise 3.4.2

Lorsque l’on définit de nouveau rôles dans la gestion de ses permissions il est fréquent d’observer ce genre de traces dans les log d’Alfresco. Ce n’est à priori pas bloquant mais à répétition on perd de la visibilité dans les logs.

ERROR [org.springframework.extensions.webscripts.AbstractRuntime] Exception from executeScript - redirecting to status template error: 03270128 Wrapped Exception (with status template): 03270625 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js': null
org.springframework.extensions.webscripts.WebScriptException: 03270128 Wrapped Exception (with status template): 03270625 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js': null
...
Caused by: java.lang.NullPointerException
at org.alfresco.repo.site.RoleComparatorImpl.compare(RoleComparatorImpl.java:39)
at org.alfresco.repo.site.RoleComparatorImpl.compare(RoleComparatorImpl.java:24)
at java.util.TreeMap.put(TreeMap.java:530)
at java.util.TreeSet.add(TreeSet.java:238)
at org.alfresco.repo.site.SiteServiceImpl.getMembersRole(SiteServiceImpl.java:1316)
at org.alfresco.repo.site.script.Site.getMembersRole(Site.java:334)
at sun.reflect.GeneratedMethodAccessor648.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.c36._c1(file:/C:/TomcatAlf/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js:40)
at org.mozilla.javascript.gen.c36.call(file:/C:/TomcatAlf/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js)
at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
at org.mozilla.javascript.gen.c36._c0(file:/C:/TomcatAlf/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js:54)
at org.mozilla.javascript.gen.c36.call(file:/C:/TomcatAlf/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js)

Solution

L’erreur vient de la classe RoleComparatorImpl, la map rolePrecedence n’est pas peuplée avec les nouveaux rôles et donc getRolePrecedence().get(first); peut retourner null. Cette map est peuplée par Spring via le fichier de configuration site-services-context.xml, il faut donc y ajouter les nouveaux rôles:

<!--  Site role precedence - higher number - more important role -->
<bean id="siteRoleComparator" class="org.alfresco.repo.site.RoleComparatorImpl" init-method="init">
 <property name="rolePrecedence">
  <map>
   <entry key="MonRole" value="5" />
   <entry key="SiteManager" value="4" />
   <entry key="SiteCollaborator" value="3" />
   <entry key="SiteContributor" value="2" />
   <entry key="SiteConsumer" value="1" />
  </map>
 </property>
</bean>

A vous de jouer !

Publicités