You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/06/14 16:00:02 UTC
[11/15] syncope git commit: [SYNCOPE-862] Features complete
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
index 302a798..46e6700 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
@@ -15,55 +15,51 @@
# specific language governing permissions and limitations
# under the License.
#
-# notifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f
+# notifications=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
notifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f
-# notification.templates=\u0428\u0430\u0431\u043b\u043e\u043d\u044b
+# notification.templates=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd\u00d1\u008b
notification.templates=\u0428\u0430\u0431\u043b\u043e\u043d\u044b
-# sender=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c
+# sender=\u00d0\u009e\u00d1\u0082\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00b8\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008c
sender=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c
-# template=\u0428\u0430\u0431\u043b\u043e\u043d
+# template=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd
template=\u0428\u0430\u0431\u043b\u043e\u043d
-# traceLevel=\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
+# traceLevel=\u00d0\u009b\u00d0\u00be\u00d0\u00b3\u00d0\u00b8\u00d1\u0080\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
traceLevel=\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
-# notification=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
+# notification=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
notification=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# about=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e
+# about=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5 \u00d0\u00be
about=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e
-# events=\u0421\u043e\u0431\u044b\u0442\u0438\u044f
+# events=\u00d0\u00a1\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d1\u008f
events=\u0421\u043e\u0431\u044b\u0442\u0438\u044f
-# selfAsRecipient=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
+# selfAsRecipient=\u00d0\u0092\u00d0\u00ba\u00d0\u00bb\u00d1\u008e\u00d1\u0087\u00d0\u00b8\u00d1\u0082\u00d1\u008c \u00d0\u00b2 \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u0083\u00d1\u0087\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b8 \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9, \u00d0\u00be \u00d0\u00ba\u00d0\u00be\u00d1\u0082\u00d0\u00be\u00d1\u0080\u00d1\u008b\u00d1\u0085 \u00d1\u0080\u00d0\u00b0\u00d1\u0081\u00d1\u0081\u00d1\u008b\u00d0\u00bb\u00d0\u00b0\u00d0\u00b5\u00d1\u0082\u00d1\u0081\u00d1\u008f \u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
selfAsRecipient=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# recipientAttrType=\u0422\u0438\u043f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-recipientAttrType=\u0422\u0438\u043f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# recipientAttrName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-recipientAttrName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# checkRecipients=\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
+# checkRecipients=\u00d0\u009f\u00d0\u00be\u00d0\u00b8\u00d1\u0081\u00d0\u00ba \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u0083\u00d1\u0087\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
checkRecipients=\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# checkAbout=\u041e\u0431\u043e \u0432\u0441\u0451\u043c
+# checkAbout=\u00d0\u009e\u00d0\u00b1\u00d0\u00be \u00d0\u00b2\u00d1\u0081\u00d1\u0091\u00d0\u00bc
checkAbout=\u041e\u0431\u043e \u0432\u0441\u0451\u043c
-# userFilter=\u0424\u0438\u043b\u044c\u0442\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
+# userFilter=\u00d0\u00a4\u00d0\u00b8\u00d0\u00bb\u00d1\u008c\u00d1\u0082\u00d1\u0080 \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
userFilter=\u0424\u0438\u043b\u044c\u0442\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
-# userFilterWarning=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
+# userFilterWarning=\u00d0\u009d\u00d0\u00b5 \u00d0\u00b8\u00d1\u0081\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d1\u0083\u00d0\u00b9\u00d1\u0082\u00d0\u00b5 \u00d1\u008d\u00d1\u0082\u00d0\u00be\u00d1\u0082 \u00d1\u0084\u00d0\u00b8\u00d0\u00bb\u00d1\u008c\u00d1\u0082\u00d1\u0080, \u00d0\u00b5\u00d1\u0081\u00d0\u00bb\u00d0\u00b8 \u00d1\u0081\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d0\u00b5 \u00d0\u00bd\u00d0\u00b5 \u00d0\u00bf\u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d0\u00bd\u00d0\u00b0\u00d0\u00b7\u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b5\u00d0\u00bd\u00d0\u00be \u00d0\u00b4\u00d0\u00bb\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
userFilterWarning=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
-# userNotifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
+# userNotifications=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f \u00d0\u00b4\u00d0\u00bb\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
userNotifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
-# userNotificationsWarning=\u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0436\u043e\u043a, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
+# userNotificationsWarning=\u00d0\u009d\u00d0\u00b5 \u00d1\u0083\u00d1\u0081\u00d1\u0082\u00d0\u00b0\u00d0\u00bd\u00d0\u00b0\u00d0\u00b2\u00d0\u00bb\u00d0\u00b8\u00d0\u00b2\u00d0\u00b0\u00d0\u00b9\u00d1\u0082\u00d0\u00b5 \u00d1\u008d\u00d1\u0082\u00d0\u00be\u00d1\u0082 \u00d1\u0084\u00d0\u00bb\u00d0\u00b0\u00d0\u00b6\u00d0\u00be\u00d0\u00ba, \u00d0\u00b5\u00d1\u0081\u00d0\u00bb\u00d0\u00b8 \u00d1\u0081\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d0\u00b5 \u00d0\u00bd\u00d0\u00b5 \u00d0\u00bf\u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d0\u00bd\u00d0\u00b0\u00d0\u00b7\u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b5\u00d0\u00bd\u00d0\u00be \u00d0\u00b4\u00d0\u00bb\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
userNotificationsWarning=\u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
-# roleFilter=\u0424\u0438\u043b\u044c\u0442\u0440 \u0440\u043e\u043b\u0435\u0439
+# roleFilter=\u00d0\u00a4\u00d0\u00b8\u00d0\u00bb\u00d1\u008c\u00d1\u0082\u00d1\u0080 \u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
roleFilter=\u0424\u0438\u043b\u044c\u0442\u0440 \u0440\u043e\u043b\u0435\u0439
-# roleFilterWarning=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0440\u043e\u043b\u0435\u0439
+# roleFilterWarning=\u00d0\u009d\u00d0\u00b5 \u00d0\u00b8\u00d1\u0081\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d1\u0083\u00d0\u00b9\u00d1\u0082\u00d0\u00b5 \u00d1\u008d\u00d1\u0082\u00d0\u00be\u00d1\u0082 \u00d1\u0084\u00d0\u00b8\u00d0\u00bb\u00d1\u008c\u00d1\u0082\u00d1\u0080, \u00d0\u00b5\u00d1\u0081\u00d0\u00bb\u00d0\u00b8 \u00d1\u0081\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d0\u00b5 \u00d0\u00bd\u00d0\u00b5 \u00d0\u00bf\u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d0\u00bd\u00d0\u00b0\u00d0\u00b7\u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b5\u00d0\u00bd\u00d0\u00be \u00d0\u00b4\u00d0\u00bb\u00d1\u008f \u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
roleFilterWarning=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0440\u043e\u043b\u0435\u0439
-# roleNotifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u043e\u043b\u0435\u0439
+# roleNotifications=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f \u00d0\u00bd\u00d0\u00b0 \u00d0\u00be\u00d1\u0081\u00d0\u00bd\u00d0\u00be\u00d0\u00b2\u00d0\u00b5 \u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
roleNotifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u043e\u043b\u0435\u0439
-# roleNotificationsWarning=\u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0436\u043e\u043a, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0440\u043e\u043b\u0435\u0439
+# roleNotificationsWarning=\u00d0\u009d\u00d0\u00b5 \u00d1\u0083\u00d1\u0081\u00d1\u0082\u00d0\u00b0\u00d0\u00bd\u00d0\u00b0\u00d0\u00b2\u00d0\u00bb\u00d0\u00b8\u00d0\u00b2\u00d0\u00b0\u00d0\u00b9\u00d1\u0082\u00d0\u00b5 \u00d1\u008d\u00d1\u0082\u00d0\u00be\u00d1\u0082 \u00d1\u0084\u00d0\u00bb\u00d0\u00b0\u00d0\u00b6\u00d0\u00be\u00d0\u00ba, \u00d0\u00b5\u00d1\u0081\u00d0\u00bb\u00d0\u00b8 \u00d1\u0081\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d0\u00b5 \u00d0\u00bd\u00d0\u00b5 \u00d0\u00bf\u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d0\u00bd\u00d0\u00b0\u00d0\u00b7\u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b5\u00d0\u00bd\u00d0\u00be \u00d0\u00b4\u00d0\u00bb\u00d1\u008f \u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9
roleNotificationsWarning=\u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0440\u043e\u043b\u0435\u0439
-# isActive=\u0410\u043a\u0442\u0438\u0432\u043d\u043e
+# isActive=\u00d0\u0090\u00d0\u00ba\u00d1\u0082\u00d0\u00b8\u00d0\u00b2\u00d0\u00bd\u00d0\u00be
isActive=\u0410\u043a\u0442\u0438\u0432\u043d\u043e
-# checkUserAbout=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438
+# checkUserAbout=\u00d0\u009f\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b8
checkUserAbout=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438
-# checkRoleAbout=\u0420\u043e\u043b\u0438
+# checkRoleAbout=\u00d0\u00a0\u00d0\u00be\u00d0\u00bb\u00d0\u00b8
checkRoleAbout=\u0420\u043e\u043b\u0438
-# active=\u0410\u043a\u0442\u0438\u0432\u043d\u043e
+# active=\u00d0\u0090\u00d0\u00ba\u00d1\u0082\u00d0\u00b8\u00d0\u00b2\u00d0\u00bd\u00d0\u00be
active=\u0410\u043a\u0442\u0438\u0432\u043d\u043e
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.html
index 2aa106b..ea3ddc4 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.html
@@ -27,15 +27,16 @@ under the License.
wicket:id="mappingContainer">
<tbody>
<tr>
- <th><wicket:message key="entity"/></th>
- <th><wicket:message key="intMappingTypes"/></th>
- <th><wicket:message key="intAttrNames"/></th>
- <th><wicket:message key="extAttrNames"/></th>
+ <th>
+ <wicket:message key="intAttrName"/>
+ <span id="intAttrNameInfo" wicket:id="intAttrNameInfo" class="glyphicon glyphicon-info-sign"></span>
+ </th>
+ <th><wicket:message key="extAttrName"/></th>
<th><i class="fa fa-repeat"></i></th>
<th><i class="fa fa-magic"></i></th>
<th>
<wicket:message key="mandatoryCondition"/>
- <span id="popover" wicket:id="jexlInfo" class="glyphicon glyphicon-info-sign"></span>
+ <span id="jexlInfo" wicket:id="jexlInfo" class="glyphicon glyphicon-info-sign"></span>
</th>
<th><wicket:message key="connObjectKey"/></th>
<th><label wicket:id="passwordLabel"/></th>
@@ -44,13 +45,7 @@ under the License.
</tr>
<tr wicket:id="mappings">
<td>
- <span wicket:id="entities">[entities]</span>
- </td>
- <td>
- <span wicket:id="intMappingTypes">[intMappingTypes]</span>
- </td>
- <td>
- <span wicket:id="intAttrNames">[intAttrNames]</span>
+ <span wicket:id="intAttrName">[intAttrNames]</span>
</td>
<td>
<span wicket:id="extAttrName">[extAttrName]</span>
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
index 51201d4..d9e6f1f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
@@ -20,8 +20,7 @@ __ACCOUNT__=ACCOUNT
__GROUP__=GROUP
auxClasses=Auxiliary Classes
-extAttrNames=External attributes
-intMappingTypes=Internal mapping types
+extAttrName=External attribute
entity=Entity
groupSchema=Role Schema
connObjectKey=Remote Key
@@ -32,7 +31,7 @@ purpose=Purpose
mappingUserSchema=Mapping User Schema
mappingGroupSchema=Mapping Role Schema
delete=Delete
-intAttrNames=Internal attributes
+intAttrName=Internal attribute
enforceMandatoryCondition=Enforce mandatory condition
fieldName=Field name
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
index bf69414..abaf81f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
@@ -20,8 +20,7 @@ __ACCOUNT__=ACCOUNT
__GROUP__=GROUP
auxClasses=Classi Ausiliarie
-extAttrNames=Attributi esterni
-intMappingTypes=Tipo mapping interno
+extAttrName=Attributo esterno
entity=Entità
groupSchema=Schema Ruolo
connObjectKey=Chiave remota
@@ -32,7 +31,7 @@ purpose=Scopo
mappingUserSchema=Mapping User Schema
mappingGroupSchema=Mapping Role Schema
delete=Rimuovi
-intAttrNames=Attributi interni
+intAttrName=Attributo interno
enforceMandatoryCondition=Abilita mandatory condition
fieldName=Nome campo
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
index edf80c1..ec9a6b6 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
@@ -20,8 +20,7 @@ __ACCOUNT__=ACCOUNT
__GROUP__=GROUP
auxClasses=Classes Auxiliares
-extAttrNames=Atributos Externos
-intMappingTypes=Tipos internos de mapeamentos
+extAttrName=Atributo Externo
entity=Entidade
groupSchema=Esquema de Fun\u00e7\u00e3o
connObjectKey=Remote Key
@@ -32,7 +31,7 @@ purpose=Prop\u00f3sito
mappingUserSchema=Esquema de mapeamento de usu\u00e1rio
mappingGroupSchema=Esquema de mapeamento de fun\u00e7\u00e3o
delete=Excluir
-intAttrNames=Atributos internos
+intAttrName=Atributo interno
enforceMandatoryCondition=Aplicar condi\u00e7\u00e3o obrigat\u00f3ria
fieldName=Nome do Campo
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
index ca685ce..6733ef9 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
@@ -27,9 +27,7 @@ __GROUP__=\u0413\u0420\u0423\u041f\u041f\u0410
auxClasses=\u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b
# extAttrNames=\u00d0\u0092\u00d0\u00bd\u00d0\u00b5\u00d1\u0088\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5 \u00d0\u00b0\u00d1\u0082\u00d1\u0080\u00d0\u00b8\u00d0\u00b1\u00d1\u0083\u00d1\u0082\u00d1\u008b
-extAttrNames=\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b
-# intMappingTypes=\u00d0\u00a2\u00d0\u00b8\u00d0\u00bf \u00d0\u00b2\u00d0\u00bd\u00d1\u0083\u00d1\u0082\u00d1\u0080\u00d0\u00b5\u00d0\u00bd\u00d0\u00bd\u00d0\u00b5\u00d0\u00b3\u00d0\u00be \u00d0\u00bc\u00d0\u00b0\u00d0\u00bf\u00d0\u00bf\u00d0\u00b8\u00d0\u00bd\u00d0\u00b3\u00d0\u00b0
-intMappingTypes=\u0422\u0438\u043f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0430
+extAttrName=\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b
# entity=\u00d0\u009e\u00d0\u00b1\u00d1\u008a\u00d0\u00b5\u00d0\u00ba\u00d1\u0082
entity=\u041e\u0431\u044a\u0435\u043a\u0442
# groupSchema=\u00d0\u0090\u00d1\u0082\u00d1\u0080\u00d0\u00b8\u00d0\u00b1\u00d1\u0083\u00d1\u0082 \u00d0\u00b3\u00d1\u0080\u00d1\u0083\u00d0\u00bf\u00d0\u00bf\u00d1\u008b
@@ -50,7 +48,7 @@ mappingGroupSchema=\u041c\u0430\u043f\u043f\u0438\u043d\u0433 \u0430\u0442\u0440
# delete=\u00d0\u00a3\u00d0\u00b4\u00d0\u00b0\u00d0\u00bb\u00d0\u00b8\u00d1\u0082\u00d1\u008c
delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
# intAttrNames=\u00d0\u0092\u00d0\u00bd\u00d1\u0083\u00d1\u0082\u00d1\u0080\u00d0\u00b5\u00d0\u00bd\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5 \u00d0\u00b0\u00d1\u0082\u00d1\u0080\u00d0\u00b8\u00d0\u00b1\u00d1\u0083\u00d1\u0082\u00d1\u008b
-intAttrNames=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b
+intAttrName=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b
# enforceMandatoryCondition=\u00d0\u009e\u00d0\u00b1\u00d1\u008f\u00d0\u00b7\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008c\u00d0\u00bd\u00d1\u008b\u00d0\u00b9 (\u00d0\u00bf\u00d1\u0080\u00d0\u00b8\u00d0\u00bd\u00d1\u0083\u00d0\u00b4\u00d0\u00b8\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008c\u00d0\u00bd\u00d0\u00be)
enforceMandatoryCondition=\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 (\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e)
# fieldName=\u00d0\u009d\u00d0\u00b0\u00d0\u00b7\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5 \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008f
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
index d0bf7d4..81a445a 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
@@ -33,7 +33,7 @@ import org.apache.commons.lang3.tuple.Pair;
@XmlRootElement(name = "anyObject")
@XmlType
-public class AnyObjectTO extends AnyTO implements RelatableTO, GroupableTO {
+public class AnyObjectTO extends AnyTO implements GroupableRelatableTO {
private static final long serialVersionUID = 8841697496476959639L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableRelatableTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableRelatableTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableRelatableTO.java
new file mode 100644
index 0000000..09bc7e6
--- /dev/null
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableRelatableTO.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.common.lib.to;
+
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.tuple.Pair;
+
+public interface GroupableRelatableTO {
+
+ Map<String, MembershipTO> getMembershipMap();
+
+ List<MembershipTO> getMemberships();
+
+ List<String> getDynGroups();
+
+ Map<Pair<String, String>, RelationshipTO> getRelationshipMap();
+
+ List<RelationshipTO> getRelationships();
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
deleted file mode 100644
index 7b6a824..0000000
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.to;
-
-import java.util.List;
-import java.util.Map;
-
-public interface GroupableTO {
-
- Map<String, MembershipTO> getMembershipMap();
-
- List<MembershipTO> getMemberships();
-
- List<String> getDynGroups();
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
deleted file mode 100644
index 1914c13..0000000
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.to;
-
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.lang3.tuple.Pair;
-
-public interface RelatableTO {
-
- Map<Pair<String, String>, RelationshipTO> getRelationshipMap();
-
- List<RelationshipTO> getRelationships();
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
index 77fd1c9..4ec8181 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
@@ -38,7 +38,7 @@ import org.apache.syncope.common.lib.types.AnyTypeKind;
@XmlRootElement(name = "user")
@XmlType
-public class UserTO extends AnyTO implements RelatableTO, GroupableTO {
+public class UserTO extends AnyTO implements GroupableRelatableTO {
private static final long serialVersionUID = 7791304495192615740L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
index 915d8ff..361c4e9 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
@@ -50,7 +50,6 @@ import org.apache.syncope.core.provisioning.api.Connector;
import org.apache.syncope.core.provisioning.api.ConnectorFactory;
import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
-import org.apache.syncope.core.provisioning.java.MappingManagerImpl;
import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
@@ -62,6 +61,7 @@ import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.VirSchema;
import org.apache.syncope.core.persistence.api.entity.resource.Provision;
import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeUtil;
import org.identityconnectors.framework.common.objects.ConnectorObject;
@@ -276,7 +276,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
}
// 2. build connObjectKeyItem
- MappingItem connObjectKeyItem = MappingManagerImpl.getConnObjectKeyItem(init.getRight());
+ MappingItem connObjectKeyItem = MappingUtils.getConnObjectKeyItem(init.getRight());
if (connObjectKeyItem == null) {
throw new NotFoundException(
"ConnObjectKey mapping for " + init.getMiddle() + " " + anyKey + " on resource '" + key + "'");
@@ -296,7 +296,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
Connector connector = connFactory.getConnector(init.getLeft());
ConnectorObject connectorObject = connector.getObject(init.getRight().getObjectClass(),
new Uid(connObjectKeyValue),
- MappingManagerImpl.buildOperationOptions(mapItems));
+ MappingUtils.buildOperationOptions(mapItems));
if (connectorObject == null) {
throw new NotFoundException(
"Object " + connObjectKeyValue + " with class " + init.getRight().getObjectClass()
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
index 2fb56da..9490c32 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
@@ -37,7 +37,6 @@ import org.apache.syncope.common.lib.report.ReportletConf;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
-import org.apache.syncope.core.provisioning.java.MappingManagerImpl;
import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
@@ -59,6 +58,7 @@ import org.apache.syncope.core.persistence.api.entity.user.User;
import org.apache.syncope.core.provisioning.api.Connector;
import org.apache.syncope.core.provisioning.api.ConnectorFactory;
import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeBuilder;
import org.identityconnectors.framework.common.objects.ConnectorObject;
@@ -271,7 +271,7 @@ public class ReconciliationReportlet extends AbstractReportlet {
AnyUtils anyUtils = anyUtilsFactory.getInstance(any);
for (final ExternalResource resource : anyUtils.getAllResources(any)) {
Provision provision = resource.getProvision(any.getType());
- MappingItem connObjectKeyItem = MappingManagerImpl.getConnObjectKeyItem(provision);
+ MappingItem connObjectKeyItem = MappingUtils.getConnObjectKeyItem(provision);
final String connObjectKeyValue = connObjectKeyItem == null
? StringUtils.EMPTY
: mappingManager.getConnObjectKeyValue(any, provision);
@@ -280,7 +280,7 @@ public class ReconciliationReportlet extends AbstractReportlet {
Connector connector = connFactory.getConnector(resource);
ConnectorObject connectorObject = connector.getObject(provision.getObjectClass(),
new Uid(connObjectKeyValue),
- MappingManagerImpl.buildOperationOptions(provision.getMapping().getItems().iterator()));
+ MappingUtils.buildOperationOptions(provision.getMapping().getItems().iterator()));
if (connectorObject == null) {
// 2. not found on resource?
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
index 6a51d79..76ce8ed 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
@@ -25,7 +25,7 @@ import org.apache.syncope.core.persistence.api.entity.Schema;
public interface SchemaDAO<S extends Schema> extends DAO<S> {
- S find(String name);
+ S find(String key);
List<S> findByAnyTypeClasses(Collection<AnyTypeClass> anyTypeClasses);
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
index b13b19d..99b9d22 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
@@ -19,6 +19,7 @@
package org.apache.syncope.core.persistence.jpa.entity;
import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
@@ -75,15 +76,15 @@ public class JPAAnyUtils implements AnyUtils {
private static void initFieldNames(final Class<?> entityClass, final Set<String> keys) {
List<Class<?>> classes = ClassUtils.getAllSuperclasses(entityClass);
- if (!classes.contains(JPAUser.class)) {
- classes.add(JPAUser.class);
- }
+ classes.add(entityClass);
for (Class<?> clazz : classes) {
for (Field field : clazz.getDeclaredFields()) {
- if (!Collection.class.isAssignableFrom(field.getType())
+ if (!Modifier.isStatic(field.getModifiers())
+ && !field.getName().startsWith("pc")
+ && !Collection.class.isAssignableFrom(field.getType())
&& !Map.class.isAssignableFrom(field.getType())) {
- keys.add(field.getName());
+ keys.add("id".equals(field.getName()) ? "key" : field.getName());
}
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAMappingItem.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAMappingItem.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAMappingItem.java
index 7c89dec..47dac59 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAMappingItem.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAMappingItem.java
@@ -52,13 +52,13 @@ public class JPAMappingItem extends AbstractGeneratedKeyEntity implements Mappin
@ManyToOne
private JPAMapping mapping;
- @Column(nullable = true)
+ @NotNull
private String intAttrName;
/**
* Target resource's field to be mapped.
*/
- @Column(nullable = true)
+ @NotNull
private String extAttrName;
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
index 99a8ec8..b8f2cab 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
@@ -23,115 +23,19 @@ import java.util.Set;
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.collections4.IterableUtils;
import org.apache.commons.collections4.Predicate;
-import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.lib.types.EntityViolationType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
-import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
-import org.apache.syncope.core.persistence.api.entity.VirSchema;
import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
import org.identityconnectors.framework.common.objects.ObjectClass;
public class ExternalResourceValidator extends AbstractValidator<ExternalResourceCheck, ExternalResource> {
- private static final AnyUtilsFactory ANY_UTILS_FACTORY = new JPAAnyUtilsFactory();
-
- private boolean isValid(final MappingItem item, final ConstraintValidatorContext context) {
- if (StringUtils.isBlank(item.getExtAttrName())) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping, item + " - extAttrName is null")).
- addPropertyNode("extAttrName").addConstraintViolation();
-
- return false;
- }
-
- if (item.getPurpose() == null) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping, item + " - purpose is null")).
- addPropertyNode("purpose").addConstraintViolation();
-
- return false;
- }
-
- if (StringUtils.isBlank(item.getIntAttrName())) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping, item + " - intAttrName is null")).
- addPropertyNode("intAttrName").addConstraintViolation();
-
- return false;
- }
-
- IntAttrName intAttrName = null;
- try {
- intAttrName = IntAttrNameParser.parse(
- item.getIntAttrName(),
- ANY_UTILS_FACTORY,
- item.getMapping().getProvision().getAnyType().getKind());
- } catch (IllegalArgumentException e) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping, item + " - " + e.getMessage())).
- addPropertyNode("intAttrName").addConstraintViolation();
-
- return false;
- }
-
- if (intAttrName.getSchemaType() == SchemaType.DERIVED
- && item.getPurpose() != MappingPurpose.PROPAGATION) {
-
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping,
- " - only " + MappingPurpose.PROPAGATION.name() + " allowed for derived")).
- addPropertyNode("purpose").addConstraintViolation();
-
- return false;
- }
-
- if (intAttrName.getSchemaType() == SchemaType.VIRTUAL) {
- if (item.getPurpose() != MappingPurpose.PROPAGATION) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping,
- " - only " + MappingPurpose.PROPAGATION.name() + " allowed for virtual")).
- addPropertyNode("purpose").addConstraintViolation();
-
- return false;
- }
-
- if (item.getMapping() == null) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping,
- " - need to explicitly set mapping for further checks")).
- addPropertyNode("mapping").addConstraintViolation();
-
- return false;
- }
-
- VirSchema schema = ApplicationContextProvider.getBeanFactory().getBean(VirSchemaDAO.class).
- find(item.getIntAttrName());
- if (schema != null && schema.getProvision().equals(item.getMapping().getProvision())) {
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping,
- " - no need to map virtual schema on linking resource")).
- addPropertyNode("intAttrName").addConstraintViolation();
-
- return false;
- }
- }
-
- return true;
- }
-
- private boolean isValid(final AnyType anyType, final Mapping mapping, final ConstraintValidatorContext context) {
+ private boolean isValid(final Mapping mapping, final ConstraintValidatorContext context) {
if (mapping == null) {
return true;
}
@@ -154,8 +58,6 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
int passwords = 0;
for (MappingItem item : mapping.getItems()) {
- isValid &= isValid(item, context);
-
if (item.isPassword()) {
passwords++;
}
@@ -232,7 +134,7 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
if (provision.getObjectClass() != null) {
objectClasses.add(provision.getObjectClass().getObjectClassValue());
}
- return isValid(provision.getAnyType(), provision.getMapping(), context);
+ return isValid(provision.getMapping(), context);
}
});
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
index e08833f..47636de 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
@@ -159,32 +159,6 @@ public class ResourceTest extends AbstractTest {
resourceDAO.save(resource);
}
- @Test(expected = IllegalArgumentException.class)
- public void saveInvalidConnObjectKeyMapping() {
- ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
- resource.setKey("ws-target-resource-basic-save-invalid");
-
- ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
- resource.setConnector(connector);
-
- Provision provision = entityFactory.newEntity(Provision.class);
- provision.setAnyType(anyTypeDAO.findUser());
- provision.setObjectClass(ObjectClass.ACCOUNT);
- provision.setResource(resource);
- resource.add(provision);
-
- Mapping mapping = entityFactory.newEntity(Mapping.class);
- mapping.setProvision(provision);
- provision.setMapping(mapping);
-
- MappingItem connObjectKey = entityFactory.newEntity(MappingItem.class);
- connObjectKey.setConnObjectKey(true);
- mapping.setConnObjectKeyItem(connObjectKey);
-
- // save the resource
- resourceDAO.save(resource);
- }
-
@Test(expected = InvalidEntityException.class)
public void saveInvalidMappingExtAttr() {
ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
@@ -274,21 +248,13 @@ public class ResourceTest extends AbstractTest {
MappingItem virtualMapItem = entityFactory.newEntity(MappingItem.class);
virtualMapItem.setIntAttrName("virtualReadOnly");
virtualMapItem.setExtAttrName("TEST");
- virtualMapItem.setPurpose(MappingPurpose.BOTH);
+ virtualMapItem.setPurpose(MappingPurpose.PROPAGATION);
virtualMapItem.setMapping(mapping);
mapping.add(virtualMapItem);
ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
resource.setConnector(connector);
- try {
- resourceDAO.save(resource);
- fail();
- } catch (InvalidEntityException e) {
- assertNotNull(e);
- }
-
- virtualMapItem.setPurpose(MappingPurpose.PROPAGATION);
resourceDAO.save(resource);
}
@@ -358,33 +324,4 @@ public class ResourceTest extends AbstractTest {
assertTrue(e.hasViolation(EntityViolationType.InvalidKey));
}
}
-
- @Test(expected = InvalidEntityException.class)
- public void issueSYNCOPE645() {
- ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
- resource.setKey("ws-target-resource-basic-save-invalid");
-
- ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
- resource.setConnector(connector);
-
- Provision provision = entityFactory.newEntity(Provision.class);
- provision.setAnyType(anyTypeDAO.findUser());
- provision.setObjectClass(ObjectClass.ACCOUNT);
- provision.setResource(resource);
- resource.add(provision);
-
- Mapping mapping = entityFactory.newEntity(Mapping.class);
- mapping.setProvision(provision);
- provision.setMapping(mapping);
-
- final MappingItem item = entityFactory.newEntity(MappingItem.class);
- item.setIntAttrName("icon");
- item.setExtAttrName("icon");
- item.setPurpose(MappingPurpose.BOTH);
- mapping.setConnObjectKeyItem(item);
-
- // save the resource
- ExternalResource actual = resourceDAO.save(resource);
- assertNotNull(actual);
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
index efe2349..614033c 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
@@ -295,6 +295,7 @@ public class ResourceTest extends AbstractTest {
int origMapItems = csv.getProvision(anyTypeDAO.findUser()).getMapping().getItems().size();
MappingItem newMapItem = entityFactory.newEntity(MappingItem.class);
+ newMapItem.setIntAttrName("TEST");
newMapItem.setExtAttrName("TEST");
newMapItem.setPurpose(MappingPurpose.PROPAGATION);
csv.getProvision(anyTypeDAO.findUser()).getMapping().add(newMapItem);
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index 2ff3310..621ed82 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -898,10 +898,7 @@ under the License.
intAttrName="csvuserid" mandatoryCondition="true"
connObjectKey="1" password="0" purpose="PROPAGATION"/>
<MappingItem id="63151b89-2eb3-4980-a682-0215d54ab4a2" extAttrName="theirgroup" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
- intAttrName="rderToBePropagated" mandatoryCondition="false"
- connObjectKey="0" password="0" purpose="PROPAGATION"/>
- <MappingItem id="b6079a7b-ac40-481d-81c9-2a292bab0092" extAttrName="membership" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
- intAttrName="mderToBePropagated" mandatoryCondition="false"
+ intAttrName="groups[root].rderToBePropagated" mandatoryCondition="false"
connObjectKey="0" password="0" purpose="PROPAGATION"/>
<Provision id="1b53c74e-6a63-49ef-b2f1-96eeb7f1bbb8" resource_id="ws-target-resource-update-resetsynctoken" anyType_id="USER" objectClass="__ACCOUNT__"
@@ -920,10 +917,10 @@ under the License.
<Mapping id="ae1c77c3-2f1d-4258-ad06-710bb09041a9" provision_id="8b938d63-aa92-448c-89a8-a685fc0a67c8"
connObjectLink="'uid=' + username + ',ou=people,o=isp'"/>
<MappingItem id="9ff7d686-452c-4cec-a475-c1137c5d88c7" connObjectKey="1" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
- extAttrName="cn" intAttrName="Username" intAttrName="username"
+ extAttrName="cn" intAttrName="username"
mandatoryCondition="true" purpose="BOTH"/>
<MappingItem id="73d97083-cfda-44e6-be62-3f9ac558b5eb" connObjectKey="0" password="1" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
- extAttrName="__PASSWORD__" intAttrName="Password" intAttrName="password"
+ extAttrName="__PASSWORD__" intAttrName="password"
mandatoryCondition="true" purpose="BOTH"/>
<MappingItem id="cf0a222c-36ea-41e6-987c-7908614ccd23" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
extAttrName="sn" intAttrName="surname"
@@ -961,7 +958,7 @@ under the License.
extAttrName="cn" intAttrName="name"
mandatoryCondition="true" purpose="BOTH"/>
<MappingItem id="2" connObjectKey="0" password="0" mapping_id="128412c8-be4f-4d7b-8bed-5ab89134f718"
- extAttrName="owner" intAttrName="owner"
+ extAttrName="owner" intAttrName="userOwner"
mandatoryCondition="false" purpose="BOTH"/>
<MappingItem id="3" connObjectKey="0" password="0" mapping_id="128412c8-be4f-4d7b-8bed-5ab89134f718"
extAttrName="description" intAttrName="title"
@@ -985,7 +982,7 @@ under the License.
extAttrName="SURNAME" intAttrName="surname"
mandatoryCondition="false" password="0" purpose="BOTH"/>
<MappingItem id="3ac0ecaf-d9a1-4fc1-9ae9-84dc34576810" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
- extAttrName="USERNAME" intAttrName="Username" intAttrName="username"
+ extAttrName="USERNAME" intAttrName="username"
mandatoryCondition="false" password="0" purpose="BOTH"/>
<MappingItem id="e7215305-93c9-460b-b862-46f7b60de72d" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
extAttrName="EMAIL" intAttrName="userId"
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
index 3d8d0a5..ba726c6 100644
--- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
@@ -155,13 +155,13 @@ we are happy to inform you that the password request was execute successfully fo
</body>
</html>"/>
- <Notification id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1"
+ <Notification id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" active="1" recipientAttrName="email" selfAsRecipient="1"
sender="admin@syncope.apache.org" subject="Password Reset request" template_id="requestPasswordReset"
traceLevel="FAILURES"/>
<AnyAbout id="0d4e37a1-a4f4-4865-afcb-4be01da3da53" anyType_id="USER" notification_id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" filter="token!=$null"/>
<Notification_events notification_id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
- <Notification id="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1"
+ <Notification id="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" active="1" recipientAttrName="email" selfAsRecipient="1"
sender="admin@syncope.apache.org" subject="Password Reset successful" template_id="confirmPasswordReset"
traceLevel="FAILURES"/>
<Notification_events notification_id="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrName.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrName.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrName.java
new file mode 100644
index 0000000..1dfa654
--- /dev/null
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrName.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.provisioning.api;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.SchemaType;
+
+public class IntAttrName {
+
+ private AnyTypeKind anyTypeKind;
+
+ private String field;
+
+ private SchemaType schemaType;
+
+ private String schemaName;
+
+ private String enclosingGroup;
+
+ private String relatedAnyObject;
+
+ private String membershipOfGroup;
+
+ public AnyTypeKind getAnyTypeKind() {
+ return anyTypeKind;
+ }
+
+ public void setAnyTypeKind(final AnyTypeKind anyTypeKind) {
+ this.anyTypeKind = anyTypeKind;
+ }
+
+ public String getField() {
+ return field;
+ }
+
+ public void setField(final String field) {
+ this.field = field;
+ }
+
+ public SchemaType getSchemaType() {
+ return schemaType;
+ }
+
+ public void setSchemaType(final SchemaType schemaType) {
+ this.schemaType = schemaType;
+ }
+
+ public String getSchemaName() {
+ return schemaName;
+ }
+
+ public void setSchemaName(final String schemaName) {
+ this.schemaName = schemaName;
+ }
+
+ public String getEnclosingGroup() {
+ return enclosingGroup;
+ }
+
+ public void setEnclosingGroup(final String enclosingGroup) {
+ this.enclosingGroup = enclosingGroup;
+ }
+
+ public String getRelatedAnyObject() {
+ return relatedAnyObject;
+ }
+
+ public void setRelatedAnyObject(final String relatedAnyObject) {
+ this.relatedAnyObject = relatedAnyObject;
+ }
+
+ public String getMembershipOfGroup() {
+ return membershipOfGroup;
+ }
+
+ public void setMembershipOfGroup(final String membershipOfGroup) {
+ this.membershipOfGroup = membershipOfGroup;
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
deleted file mode 100644
index 4beb5ce..0000000
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.provisioning.api;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.core.persistence.api.entity.AnyUtils;
-import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
-
-public final class IntAttrNameParser {
-
- private static final Pattern ENCLOSING_GROUP_PATTERN = Pattern.compile("^groups\\[[\\w]+\\]\\.[\\w]+");
-
- private static final Pattern RELATED_ANY_OBJECT_PATTERN = Pattern.compile("^anyObjects\\[[\\w]+\\]\\.[\\w]+");
-
- private static final Pattern MEMBERSHIP_PATTERN = Pattern.compile("^\\[[\\w]+\\]\\.[\\w]+");
-
- public static class IntAttrName {
-
- private AnyTypeKind anyTypeKind;
-
- private String field;
-
- private SchemaType schemaType;
-
- private String schemaName;
-
- private String enclosingGroup;
-
- private String relatedAnyObject;
-
- private String membershipOfGroup;
-
- public AnyTypeKind getAnyTypeKind() {
- return anyTypeKind;
- }
-
- public String getField() {
- return field;
- }
-
- public SchemaType getSchemaType() {
- return schemaType;
- }
-
- public String getSchemaName() {
- return schemaName;
- }
-
- public String getEnclosingGroup() {
- return enclosingGroup;
- }
-
- public String getRelatedAnyObject() {
- return relatedAnyObject;
- }
-
- public String getMembershipOfGroup() {
- return membershipOfGroup;
- }
-
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(field, ToStringStyle.MULTI_LINE_STYLE);
- }
-
- }
-
- private static void setFieldOrSchemaName(
- final String fieldOrSchemaName, final AnyUtils anyUtils, final IntAttrName result) {
-
- if (anyUtils.isFieldName(fieldOrSchemaName)) {
- result.field = fieldOrSchemaName;
- } else {
- result.schemaName = fieldOrSchemaName;
- }
- }
-
- public static IntAttrName parse(
- final String intAttrName,
- final AnyUtilsFactory anyUtilsFactory,
- final AnyTypeKind provisionAnyTypeKind) {
-
- IntAttrName result = new IntAttrName();
-
- if (intAttrName.indexOf('.') == -1) {
- result.anyTypeKind = provisionAnyTypeKind;
- setFieldOrSchemaName(intAttrName, anyUtilsFactory.getInstance(provisionAnyTypeKind), result);
- } else {
- Matcher matcher = ENCLOSING_GROUP_PATTERN.matcher(intAttrName);
- if (matcher.matches()) {
- result.anyTypeKind = AnyTypeKind.GROUP;
- result.enclosingGroup = matcher.group(1);
- setFieldOrSchemaName(matcher.group(2), anyUtilsFactory.getInstance(AnyTypeKind.GROUP), result);
- } else {
- matcher = RELATED_ANY_OBJECT_PATTERN.matcher(intAttrName);
- if (matcher.matches()) {
- result.anyTypeKind = AnyTypeKind.ANY_OBJECT;
- result.relatedAnyObject = matcher.group(1);
- setFieldOrSchemaName(matcher.group(2), anyUtilsFactory.getInstance(AnyTypeKind.ANY_OBJECT), result);
- } else {
- matcher = MEMBERSHIP_PATTERN.matcher(intAttrName);
- if (matcher.matches()) {
- result.anyTypeKind = AnyTypeKind.USER;
- result.membershipOfGroup = matcher.group(1);
- setFieldOrSchemaName(matcher.group(2), anyUtilsFactory.getInstance(AnyTypeKind.USER), result);
- } else {
- throw new IllegalArgumentException("Unparsable expression: " + intAttrName);
- }
- }
- }
- }
-
- return result;
- }
-
- private IntAttrNameParser() {
- // private constructor for static utility class
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
index 99c1ba8..8d0be03 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
@@ -41,14 +41,15 @@ public interface MappingManager {
String getConnObjectKeyValue(Any<?> any, Provision provision);
/**
- * Get attribute values for the given {@link MappingItem} and any objects.
+ * Get attribute values for the given {@link MappingItem} and any object.
*
* @param provision provision information
* @param mapItem mapping item
- * @param anys any objects
+ * @param intAttrName int attr name
+ * @param any any object
* @return attribute values.
*/
- List<PlainAttrValue> getIntValues(Provision provision, MappingItem mapItem, List<Any<?>> anys);
+ List<PlainAttrValue> getIntValues(Provision provision, MappingItem mapItem, IntAttrName intAttrName, Any<?> any);
/**
* Prepare attributes for sending to a connector instance.
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java
index db66766..d8cb012 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java
@@ -36,13 +36,13 @@ public interface MappingItemTransformer {
* Invoked while preparing attribute values to be sent out to external resource during propagation.
*
* @param mappingItem mapping item
- * @param anys any objects
+ * @param any any object
* @param values original values
* @return transformed values
*/
List<PlainAttrValue> beforePropagation(
MappingItem mappingItem,
- List<Any<?>> anys,
+ Any<?> any,
List<PlainAttrValue> values);
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
index 1a2bcc4..83a97e6 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
@@ -35,10 +35,11 @@ import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
import org.apache.syncope.core.provisioning.api.Connector;
import org.apache.syncope.core.provisioning.api.TimeoutException;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
import org.apache.syncope.core.provisioning.api.pushpull.ReconciliationFilterBuilder;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
import org.identityconnectors.common.security.GuardedByteArray;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.framework.api.APIConfiguration;
@@ -479,7 +480,7 @@ public class ConnectorFacadeProxy implements Connector {
}
}, new ArrayList<SortKey>(orderBy.size())));
- builder.setAttributesToGet(MappingManagerImpl.buildOperationOptions(mapItems).getAttributesToGet());
+ builder.setAttributesToGet(MappingUtils.buildOperationOptions(mapItems).getAttributesToGet());
search(objectClass, filter, handler, builder.build());
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/IntAttrNameParser.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/IntAttrNameParser.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/IntAttrNameParser.java
new file mode 100644
index 0000000..13af60a
--- /dev/null
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/IntAttrNameParser.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.provisioning.java;
+
+import org.apache.syncope.core.provisioning.api.IntAttrName;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
+import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.Schema;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+public class IntAttrNameParser {
+
+ private static final Pattern ENCLOSING_GROUP_PATTERN = Pattern.compile("^groups\\[([\\w]+)\\]\\.([\\w]+)");
+
+ private static final Pattern RELATED_ANY_OBJECT_PATTERN = Pattern.compile("^anyObjects\\[([\\w]+)\\]\\.([\\w]+)");
+
+ private static final Pattern MEMBERSHIP_PATTERN = Pattern.compile("^memberships\\[([\\w]+)\\]\\.([\\w]+)");
+
+ @Autowired
+ private PlainSchemaDAO plainSchemaDAO;
+
+ @Autowired
+ private DerSchemaDAO derSchemaDAO;
+
+ @Autowired
+ private VirSchemaDAO virSchemaDAO;
+
+ @Autowired
+ private AnyUtilsFactory anyUtilsFactory;
+
+ private SchemaType find(final String key) {
+ Schema schema = plainSchemaDAO.find(key);
+ if (schema == null) {
+ schema = derSchemaDAO.find(key);
+ if (schema == null) {
+ schema = virSchemaDAO.find(key);
+ if (schema == null) {
+ return null;
+ } else {
+ return SchemaType.VIRTUAL;
+ }
+ } else {
+ return SchemaType.DERIVED;
+ }
+ } else {
+ return SchemaType.PLAIN;
+ }
+ }
+
+ private void setFieldOrSchemaName(
+ final String fieldOrSchemaName,
+ final AnyTypeKind anyTypeKind,
+ final IntAttrName result) {
+
+ if (anyUtilsFactory.getInstance(anyTypeKind).isFieldName(fieldOrSchemaName)) {
+ result.setField(fieldOrSchemaName);
+ } else {
+ result.setSchemaType(find(fieldOrSchemaName));
+ result.setSchemaName(fieldOrSchemaName);
+ }
+ }
+
+ @Transactional(readOnly = true)
+ public IntAttrName parse(final String intAttrName, final AnyTypeKind provisionAnyTypeKind) {
+ IntAttrName result = new IntAttrName();
+
+ if (intAttrName.indexOf('.') == -1) {
+ result.setAnyTypeKind(provisionAnyTypeKind);
+ setFieldOrSchemaName(intAttrName, result.getAnyTypeKind(), result);
+ } else {
+ Matcher matcher = ENCLOSING_GROUP_PATTERN.matcher(intAttrName);
+ if (matcher.matches()) {
+ result.setAnyTypeKind(AnyTypeKind.GROUP);
+ result.setEnclosingGroup(matcher.group(1));
+ setFieldOrSchemaName(matcher.group(2), result.getAnyTypeKind(), result);
+ } else {
+ matcher = RELATED_ANY_OBJECT_PATTERN.matcher(intAttrName);
+ if (matcher.matches()) {
+ result.setAnyTypeKind(AnyTypeKind.ANY_OBJECT);
+ result.setRelatedAnyObject(matcher.group(1));
+ setFieldOrSchemaName(matcher.group(2), result.getAnyTypeKind(), result);
+ } else {
+ matcher = MEMBERSHIP_PATTERN.matcher(intAttrName);
+ if (matcher.matches()) {
+ result.setAnyTypeKind(AnyTypeKind.USER);
+ result.setMembershipOfGroup(matcher.group(1));
+ setFieldOrSchemaName(matcher.group(2), result.getAnyTypeKind(), result);
+ } else {
+ throw new IllegalArgumentException("Unparsable expression: " + intAttrName);
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+}