On 10/05/21 16:11, Martin van Es wrote:
Hi Francesco,
Ok, I can log debug statements!
When I inspect the entity object on any of the available methods for e.g.
org.apache.syncope.core.provisioning.api.pushpull.PushActions it seems to be of
class JPAUser.
Now, what I expect (but maybe I'm completely mistaken) is to be able to
manipulate the JPAUser object as it flows into the target resource. For
example, I expect some get'ers, and set'ers on (internal) attributes so that I
can inspect values, conditionally alter or add them and update the changes back
into the object to be provisioned. I know much of this can be done using
attribute mapping logic in the normal resource configuration, but what if the
logic was a bit more complicated? Are these groovy scripts meant and able to
manipulate attributes as I think they are? I've taken a look at the JPAUser API
documentation[1], and although the class is quite rich and supports e.g.
add(UPlainAttr attr) I don't see ways to get, set or update available
attributes on the object?
You can have a look at what can be done in a PropagationActions class by
looking at matching classes under
https://github.com/apache/syncope/tree/2_1_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation
About PushActions and PullActions you can check
https://github.com/apache/syncope/tree/2_1_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull
HTH
Regards.
[1]
http://syncope.apache.org/apidocs/2.0/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.html
<http://syncope.apache.org/apidocs/2.0/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.html>
Best regards.
Martin
On Mon, May 10, 2021 at 2:19 PM Francesco Chicchiriccò <ilgro...@apache.org
<mailto:ilgro...@apache.org>> wrote:
On 10/05/21 14:05, Martin van Es wrote:
On Mon, May 10, 2021 at 9:07 AM Francesco Chicchiriccò <ilgro...@apache.org
<mailto:ilgro...@apache.org>> wrote:
On 07/05/21 19:50, Martin van Es wrote:
Another question.
How would I print debug (core.log) statements in a Groovy propagation
action script?
Not very related to the subject, but you can find a relevant example
here:
https://github.com/apache/syncope/blob/2_1_X/fit/core-reference/src/test/resources/rest/SearchScript.groovy#L104
<https://github.com/apache/syncope/blob/2_1_X/fit/core-reference/src/test/resources/rest/SearchScript.groovy#L104>
Thx for your input!
This is the output when I blindly add log.info <http://log.info>() to a
test Groovy propagation action script:
11:57:53.811 DEBUG
org.apache.syncope.core.provisioning.java.ConnectorManager - Connector to be
registered:
ConnectorFacadeProxy{connector=org.identityconnectors.framework.impl.api.local.LocalConnectorFacadeImpl@63b8
d810
capabitilies=[UPDATE, DELETE, CREATE, SEARCH, AUTHENTICATE]}
11:57:53.811 DEBUG
org.apache.syncope.core.provisioning.java.ConnectorManager - Successfully
registered bean
connInstance-Master-3229BE00-2A72-4A78-A9BE-002A729A784D-service-cloud
11:57:53.813 DEBUG
org.apache.syncope.core.provisioning.api.job.SchedTaskJobDelegate - Executing
push on JPAExternalResource[service-cloud]
11:57:54.063 DEBUG
org.apache.syncope.core.provisioning.api.pushpull.SyncopeResultHandler -
Pushing USER with key 89b4b6da-1ef3-4720-b4b6-da1ef3072081 towards
JPAExternalResource[service-cloud]
11:57:56.666 ERROR
org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher - While
building JPAImplementation[My_Groovy_PropagationAction]
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
failed:
Script_591aa0a4f0c025faabe5fd7f86d74fb0.groovy: 39: [Static type checking]
- The variable [log] is undeclared.
@ line 39, column 5.
log.info <http://log.info>("Entering " + action + " Script");
^
The main problem here probably is that I'm not a hard-core Java developer
and I'm trying to create a maximum flexibility, zero-compilation identity
synchronisation setup for the team to work with. Simple syncope-console
editable Groovy scripts would help tremendously with that goal!
Sorry, I did not read well that you were not interested in Groovy scripts
for connectors but in Groovy Propagation Actions classes.
You can use Groovy's @Slf4j then:
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.syncope.core.persistence.api.entity.task.PropagationTask
import
org.apache.syncope.core.provisioning.api.propagation.PropagationActions
import org.identityconnectors.framework.common.objects.ConnectorObject
@Slf4j
@CompileStatic
class MyPropagationActions implements PropagationActions {
@Override
void before(PropagationTask task, ConnectorObject beforeObj) {
log.error("About to run {}", task)
}
}
Logging statements will be sent to core.log.
Regards.
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/