[midPoint] get extended attribute in notification
Steklac Michal
Michal_Steklac at datalan.sk
Thu May 14 19:59:43 CEST 2015
Hi,
it works. Thanks for your example.
Best regards,
MiSo
On Ut, 2015-05-12 at 10:55 +0200, Pavol Mederly wrote:
> Hello MiSo,
>
>
>
> basic.getExtensionPropertyValue(requestee, NS_FOO, INTERNSHIP_NAME)
> should work in 3.0. I've just looked in the sources.
>
>
>
> You could even leave out NS_FOO from this call (by replacing with an
> empty string), and it should still work.
>
>
>
> Actually I'm quite surprised that the call results in null. Could you
> try to log the value of the requestee object? Use something like this:
>
>
>
> log.info("Requestee = {}", requestee.asPrismObject().debugDump());
>
>
>
> Best regards,
>
> Pavol
>
>
>
>
>
>
> ______________________________________________________________________
> From: "Steklac Michal" <Michal_Steklac at datalan.sk>
> To: "midPoint General Discussion" <midpoint at lists.evolveum.com>
> Sent: Sunday, May 10, 2015 7:23:06 PM
> Subject: Re: [midPoint] get extended attribute in notification
>
>
> Hi,
>
> I modified the code
> ...
> INTERNSHIP_NAME = 'internship';
> INTERNSHIP_QNAME = new QName(NS_FOO, INTERNSHIP_NAME);
> INTERNSHIP_PATH = new
> ItemPath(com.evolveum.midpoint.xml.ns._public.common.common_3.UserType.F_EXTENSION, INTERNSHIP_QNAME);
> log.info("delta.findPropertyDelta(INTERNSHIP_PATH) != null " +
> (delta.findPropertyDelta(INTERNSHIP_PATH)!=null));
> if (delta.findPropertyDelta(INTERNSHIP_PATH)!=null) {
> log.info("internship="+basic.getExtensionPropertyValue(requestee,
> NS_FOO, INTERNSHIP_NAME));
> }
> ...
> it works better. Only when I call
> basic.getExtensionPropertyValue(requestee, NS_FOO, INTERNSHIP_NAME)
> get null. It is possible get value for extension property in midpoint
> 3.0??
>
> Thanks,
> MiSo
>
> On Po, 2015-05-04 at 20:10 +0200, Pavol Mederly wrote:
> Hello,
>
> 3.0 is quite old, and many things work differently there.
>
> In particular, ItemPath(String... names) constructor is not
> available; you have to provide the QNames.
>
> So, something like this:
>
> INTERNSHIP_QNAME = new QName(NS_FOO, INTERNSHIP_PATH)
> INTERNSHIP_PATH = new
> ItemPath( com.evolveum.midpoint.xml.ns._public.common.common_3.UserType.F_EXTENSION, INTERNSHIP_QNAME)
> ...
>
> should be needed.
>
> But I'm not sure if the other methods would work. (They
> probably will.)
>
> If possible, upgrade to 3.1.1. :-)
>
> Best regards,
> Pavol
>
> On 4. 5. 2015 19:56, Steklac Michal wrote:
>
> Hi,
>
> when call this code i got exception
> ...
> INTERNSHIP_NAME = 'internship';
> log.info('INTERNSHIP_NAME='+INTERNSHIP_NAME);
> INTERNSHIP_PATH = new ItemPath('extension',
> INTERNSHIP_NAME);
> log.info('INTERNSHIP_PATH='+INTERNSHIP_PATH.toString());
> log.info("delta.findPropertyDelta(INTERNSHIP_PATH) !=
> null " + (delta.findPropertyDelta(INTERNSHIP_PATH)!
> =null));
> if (delta.findPropertyDelta(INTERNSHIP_PATH)!=null) {
>
> log.info("internship="+basic.getExtensionPropertyValue(requestee, NS_FOO, INTERNSHIP_NAME));
> }
> ...
> 2015-05-04 19:46:41,976 [RESOURCEOBJECTCHANGELISTENER]
> [midPointScheduler_Worker-4] INFO
> (com.evolveum.midpoint.expression):
> INTERNSHIP_NAME=internship
> 2015-05-04 19:46:41,980 [RESOURCEOBJECTCHANGELISTENER]
> [midPointScheduler_Worker-4] ERROR
> (com.evolveum.midpoint.model.common.expression.script.ScriptExpression): Expression error: groovy.lang.GroovyRuntimeE
> xception: Could not find matching constructor for:
> com.evolveum.midpoint.prism.path.ItemPath(java.lang.String, java.lang.String) (new) event filter expression
> com.evolveum.midpoint.util.exception.ExpressionEvaluationException: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.evolveum.midpoint.prism.path.ItemPath(java.lang.String, ja
> va.lang.String) (new) event filter expression
> at
> com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator.evaluate(Jsr223ScriptEvaluator.java:124) ~[model-common-3.0.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.ScriptExpression.evaluate(ScriptExpression.java:108) ~[model-common-3.0.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.ScriptExpressionEvaluator.transformSingleValue(ScriptExpressionEvaluator.java:58) [model-common-3.0.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator.evaluateScriptExpression(AbstractValueTransformationExpressionEvaluator.java:276) [model-comm
> on-3.0.jar:na]
>
> I try it in midpoint 3.0.
>
> Thanks,
> MiSo
>
> On Po, 2015-05-04 at 12:38 +0200, Pavol Mederly
> wrote:
> Miso,
>
> the problem is primarily in this line:
>
> QName USER_INTERNSHIP_QNAME = new
> QName(NS_FOO, "internship", "extension");
>
> because what is required, is not simply a
> QName, but a two-name item path
> (extension/internship). You have to use new
> ItemPath(...) constructor to create the path.
> Arguments are either QNames or (when there is
> no ambiguity) simple strings.
>
> This code works - note that I've put the code
> into <subjectExpression> just as an example.
> Tested with 'piracy' sample - changes names to
> match your situation.
>
> <notificationConfiguration>
> <handler>
> <simpleUserNotifier>
> <subjectExpression>
> <script>
> <code>
> import
> javax.xml.namespace.QName
> import
> com.evolveum.midpoint.prism.path.ItemPath
> import
> com.evolveum.midpoint.prism.delta.ObjectDelta
> import
> com.evolveum.midpoint.notifications.api.events.ModelEvent
>
> NS_FOO =
> 'http://whatever.com/my'
> INTERNSHIP_NAME =
> 'shipName'
> INTERNSHIP_PATH = new
> ItemPath('extension', INTERNSHIP_NAME)
>
> delta = ((ModelEvent)
> event).getSummarizedFocusDeltas()
>
>
> log.info("delta.findPropertyDelta(INTERNSHIP_PATH) != null " + (delta.findPropertyDelta(INTERNSHIP_PATH)!=null))
> if
> (delta.findPropertyDelta(INTERNSHIP_PATH)!
> =null) {
>
> log.info("internship="+basic.getExtensionPropertyValue(requestee, NS_FOO, INTERNSHIP_NAME))
> }
>
> 'abcdef'
> </code>
> </script>
> </subjectExpression>
> <transport>mail</transport>
> </simpleUserNotifier>
> </handler>
> <mail>
> <debug>false</debug>
> <redirectToFile>d:\midpoint\home
> \mail-notifications.log</redirectToFile>
> </mail>
> </notificationConfiguration>
>
> Best regards,
> Pavol
>
> On 3. 5. 2015 15:52, Steklac Michal wrote:
>
> Hi,
>
> I made an example in which obtains the
> value of the attribute family name and
> attribute internship. Attribute value
> family name received. When I trying to
> get the value for attribute
> internship, then I get null.
>
> ----------------------------------------------------------------------
> * code to get family name
> ...
> def NS_FOO =
> 'http://midpoint.evolveum.com/xml/ns/test/foo-1.xsd';
> delta =
> ObjectDelta.summarize(((ModelEvent)
> event).getUserDeltas());
> if(delta != null){
> log.info("delta = " +
> delta.toString());
> QName USER_FAMILYNAME_QNAME = new
> QName(NS_FOO,"familyName");
> if(delta.findPropertyDelta(USER_FAMILYNAME_QNAME)!=null){
> log.info("familyname="+requestee.getFamilyName());
> }
> }
> ...
> * output
> ...
> 2015-05-03 15:24:43,391
> [RESOURCEOBJECTCHANGELISTENER]
> [midPointScheduler_Worker-5] INFO
> (com.evolveum.midpoint.expression):
> delta =
> ObjectDelta(UserType:cbd8aee0-802e-43ef-a1c7-30cb79c811f0,MODIFY: Property
> Delta( / fullName, REPLACE),
> PropertyDelta( / familyName, REPLACE),
> PropertyDelta(metadata /
> {.../common/common-3}modifyChannel,
> REPLACE), PropertyDelta(metadata /
> {.../common/common-3}modifyTimestamp,
> REPLA
> CE), ReferenceDelta(metadata /
> {.../common/common-3}modifierRef,
> REPLACE))
> 2015-05-03 15:24:43,397
> [RESOURCEOBJECTCHANGELISTENER]
> [midPointScheduler_Worker-5] INFO
> (com.evolveum.midpoint.expression):
> familyname=Malá
> ...
> ----------------------------------------------------------------------
>
> ----------------------------------------------------------------------
> * code to get intership, which is
> extension attribute
> ...
> def NS_FOO =
> 'http://midpoint.evolveum.com/xml/ns/test/foo-1.xsd';
> delta =
> ObjectDelta.summarize(((ModelEvent)
> event).getUserDeltas());
> if(delta != null){
> log.info("delta = " +
> delta.toString());
> QName USER_INTERNSHIP_QNAME = new
> QName(NS_FOO, "internship",
> "extension");
> log.info("delta.findPropertyDelta(USER_INTERNSHIP_QNAME)!=null " + (delta.findPropertyDelta(USER_INTERNSHIP_QNAME)!=null).toString());
> if(delta.findPropertyDelta(USER_INTERNSHIP_QNAME)!=null){
> log.info("internship="+basic.getExtensionPropertyValue(requestee, 'http://evolveum.com/my', 'internship'));
> }
> }
> ...
> * output
> ...
> 2015-05-03 15:32:57,490
> [RESOURCEOBJECTCHANGELISTENER]
> [midPointScheduler_Worker-4] INFO
> (com.evolveum.midpoint.expression):
> delta =
> ObjectDelta(UserType:cbd8aee0-802e-43ef-a1c7-30cb79c811f0,MODIFY: Property
> Delta(extension / internship,
> REPLACE), PropertyDelta(metadata /
> {.../common/common-3}modifyChannel,
> REPLACE), PropertyDelta(metadata /
> {.../common/common-3}modifyTimestamp,
> REPLACE), ReferenceDelta(metadata
> / {.../common/common-3}modifierRef,
> REPLACE))
> 2015-05-03 15:32:57,491
> [RESOURCEOBJECTCHANGELISTENER]
> [midPointScheduler_Worker-4] INFO
> (com.evolveum.midpoint.expression):
> delta.findPropertyDelta(USER_INTERNSHIP_QNAME)!=null false
> ...
> ----------------------------------------------------------------------
>
> Please tell me what I'm doing wrong.
>
> Thanks,
> Miso
>
> On So, 2015-05-02 at 20:51 +0000,
> Steklac Michal wrote:
> Hi,
>
> i have extend schema with
> attribute internship. It is
> possible get their value in
> notification.
>
> This works for me for
> attribute givenName
> ...
> QName USER_GIVENNAME_QNAME =
> new QName(NS_FOO,"givenName");
>
> if(delta.findPropertyDelta(USER_GIVENNAME_QNAME)!=null){
> attr = attr
> +'\nmeno='+requestee.getGivenName();
> }
> ...
>
> Thanks
> MiSo
>
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
>
>
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
>
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
>
>
>
More information about the midPoint
mailing list