Virtual organizations from roles & crashing activeSync
Hi,
we're playing with virtual organizations generated from roles. When some identity (User) has any role which is used in codition of some virtual organization, ActiveSync fails with this exeption if modifies waveset.roles:
2007-01-04T17:14:22.651+0100: Error processing updates
2007-01-04T17:14:22.652+0100: There was an error in activesync processing.
2007-01-04T17:14:22.653+0100: java.lang.NullPointerException
at com.waveset.recon.ReconUtil.findResourceInfo(ReconUtil.java:1399)
at com.waveset.recon.ReconUtil.getUsersWithResourceAccount(ReconUtil.java:1380)
at com.waveset.sync.IAPIImpl.getUsersWithResourceAccount(IAPIImpl.java:1805)
at com.waveset.sync.IAPIImpl.getUsersWithResourceAccount(IAPIImpl.java:1826)
at com.waveset.sync.IAPIImpl.buildEventWithCorrelation(IAPIImpl.java:1262)
at com.waveset.sync.IAPIImpl.buildEvent(IAPIImpl.java:1239)
at com.waveset.sync.IAPIFactory.getIAPI(IAPIFactory.java:138)
at com.waveset.adapter.iapi.IAPIFactoryImpl.getIAPI(IAPIFactoryImpl.java:88)
at com.waveset.adapter.iapi.IAPIFactory.getIAPI(IAPIFactory.java:324)
at com.waveset.adapter.DatabaseTableResourceAdapter.processUpdates(DatabaseTableResourceAdapter.java:2077)
at com.waveset.adapter.DatabaseTableResourceAdapter.poll(DatabaseTableResourceAdapter.java:1721)
at com.waveset.task.SARunner.doRealWork(SARunner.java:288)
at com.waveset.task.Executor.execute(Executor.java:154)
at com.waveset.task.TaskThread.run(TaskThread.java:132)
When the User has no such role (no role used for generating users for some organization), ActiveSync can change waveset.roles without problems.
Is it a bug? Can be workarounded?
Resource form in activeSync:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Configuration PUBLIC'waveset.dtd''waveset.dtd'>
<Configuration name='Resource CRO2 Form' wstype='UserForm'>
<Extension>
<Form name='Resource CRO2 Form' objectLocationID='objectName=Resource+CRO2+Form&isBegin=true&objectPath=0&objectType=UserForm'>
<Display class='EditForm'/>
<Field name='waveset.roles'>
<Expansion>
<list>
<s>Dep FAV</s>
<s>People</s>
</list>
</Expansion>
</Field>
<Field name='password.password'>
<Expansion>
<s>dsuifew8743kx8q3</s>
</Expansion>
</Field>
</Form>
</Extension>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
</Configuration>
The condition:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Rule PUBLIC'waveset.dtd''waveset.dtd'>
<Rule name='User Members Dep Simple Rule'>
<RuleArgument name='depname'/>
<new class='com.waveset.object.AttributeCondition'>
<s>role</s>
<s>contains</s>
<concat>
<s>Dep </s>
<ref>depname</ref>
</concat>
</new>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
</Rule>
Rule in virtual organization:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Rule PUBLIC'waveset.dtd''waveset.dtd'>
<Rule authType='UserMembersRule' name='Department FAV'>
<rule name='User Members Dep Simple Rule'>
<argument name='depname' value='FAV'/>
</rule>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
<Properties>
<Property name='editorOriginalName' value='Department FAV'/>
</Properties>
</Rule>
Thanks for help,
Milan

