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/01/14 18:18:33 UTC
[2/2] syncope git commit: [SYNCOPE-746] Almost done: item in left
menu under 'Extensions' does not remain active after click
[SYNCOPE-746] Almost done: item in left menu under 'Extensions' does not remain active after click
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/7cb3c322
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/7cb3c322
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/7cb3c322
Branch: refs/heads/master
Commit: 7cb3c322e08eaf4fcb94c02485962ce92f98a00d
Parents: 9536ffa
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Jan 14 18:18:16 2016 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Jan 14 18:18:16 2016 +0100
----------------------------------------------------------------------
.../client/console/annotations/ExtPage.java | 48 +++++
.../console/annotations/ExtensionPanel.java | 34 ----
.../client/console/commons/Constants.java | 2 +-
.../init/ClassPathScanImplementationLookup.java | 55 ++++--
.../client/console/pages/AbstractExtPage.java | 34 ++++
.../syncope/client/console/pages/BasePage.java | 36 +++-
.../client/console/pages/CamelRoutes.java | 30 ---
.../syncope/client/console/pages/Logs.java | 6 +-
.../syncope/client/console/pages/Roles.java | 9 +-
.../client/console/pages/SecurityQuestions.java | 31 +--
.../console/panels/AbstractExtensionPanel.java | 34 ----
.../panels/AbstractSearchResultPanel.java | 1 -
.../console/panels/AnyTypeClassesPanel.java | 2 +-
.../client/console/panels/AnyTypePanel.java | 5 +-
.../console/panels/RealmSidebarPanel.java | 2 -
.../console/panels/RelationshipTypePanel.java | 9 +-
.../client/console/panels/SchemaTypePanel.java | 4 +-
.../console/panels/SecurityQuestionsPanel.java | 20 +-
.../console/rest/AnyObjectRestClient.java | 3 -
.../client/console/rest/RoleRestClient.java | 2 -
.../console/topology/TopologyTogglePanel.java | 2 -
.../client/console/wizards/any/StatusPanel.java | 11 +-
.../syncope/client/console/pages/BasePage.html | 7 +-
.../client/console/pages/BasePopupPage.html | 5 -
.../client/console/pages/CamelRoutes.html | 39 ----
.../client/console/pages/SecurityQuestions.html | 1 -
.../panels/AbstractSearchResultPanel.html | 1 +
.../syncope/client/console/panels/Realm.html | 11 +-
.../console/pages/CamelRouteModalPage.java | 93 ---------
.../client/console/pages/CamelRoutesPage.java | 102 ++++++++++
.../console/pages/CamelRoutesPopupPage.java | 76 +++++++
.../client/console/panels/CamelRoutePanel.java | 176 -----------------
.../client/console/panels/CamelRoutesPanel.java | 196 +++++++++++++++++++
.../console/rest/CamelRouteRestClient.java | 55 ------
.../console/rest/CamelRoutesRestClient.java | 55 ++++++
.../console/pages/CamelRouteModalPage.html | 66 -------
.../pages/CamelRouteModalPage.properties | 17 --
.../pages/CamelRouteModalPage_it.properties | 17 --
.../pages/CamelRouteModalPage_pt_BR.properties | 17 --
.../client/console/pages/CamelRoutesPage.html | 43 ++++
.../console/pages/CamelRoutesPage.properties | 17 ++
.../console/pages/CamelRoutesPage_it.properties | 17 ++
.../pages/CamelRoutesPage_pt_BR.properties | 17 ++
.../console/pages/CamelRoutesPopupPage.html | 66 +++++++
.../pages/CamelRoutesPopupPage.properties | 19 ++
.../pages/CamelRoutesPopupPage_it.properties | 19 ++
.../pages/CamelRoutesPopupPage_pt_BR.properties | 19 ++
.../client/console/panels/CamelRoutePanel.html | 28 ---
.../client/console/panels/CamelRoutesPanel.html | 23 +++
.../fit/console/reference/AbstractITCase.java | 10 +-
.../fit/console/reference/BaseITCase.java | 7 -
51 files changed, 866 insertions(+), 733 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtPage.java b/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtPage.java
new file mode 100644
index 0000000..32587c9
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtPage.java
@@ -0,0 +1,48 @@
+/*
+ * 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.client.console.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface ExtPage {
+
+ /**
+ * @return the label shown under the "Extensions" menu item, on the left pane
+ */
+ String label();
+
+ /**
+ * @return the icon shown next to the label, under the "Extensions" menu item, on the left pane;
+ * check https://fortawesome.github.io/Font-Awesome/icons/ for more
+ */
+ String icon() default "fa-circle-o";
+
+ /**
+ * @return the priority used to determine the display order under the "Extensions" menu item, on the left pane; the
+ * higher value, the higher rank
+ */
+ int priority() default 0;
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtensionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtensionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtensionPanel.java
deleted file mode 100644
index 5546d65..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/annotations/ExtensionPanel.java
+++ /dev/null
@@ -1,34 +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.client.console.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target({ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface ExtensionPanel {
-
- String value();
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
index e172bd4..60a1f58 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
@@ -58,7 +58,7 @@ public final class Constants {
public static final String PREF_ANYTYPE_PAGINATOR_ROWS = "anytype.paginator.rows";
- public static final String PREF_SECURITY_QUESTIONS_PAGINATOR_ROWS = "secutiry.questions.paginator.rows";
+ public static final String PREF_SECURITY_QUESTIONS_PAGINATOR_ROWS = "security.questions.paginator.rows";
public static final String PREF_RELATIONSHIPTYPE_PAGINATOR_ROWS = "relationshiptype.painator.rows";
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java b/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
index 5ec7e58..67bbe20 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
@@ -21,11 +21,13 @@ package org.apache.syncope.client.console.init;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.panels.AbstractExtensionPanel;
+import org.apache.syncope.client.console.pages.AbstractExtPage;
import org.apache.syncope.client.console.annotations.BinaryPreview;
+import org.apache.syncope.client.console.annotations.ExtPage;
import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.wicket.markup.html.form.preview.AbstractBinaryPreviewer;
import org.slf4j.Logger;
@@ -43,18 +45,18 @@ public class ClassPathScanImplementationLookup {
private List<Class<? extends AbstractBinaryPreviewer>> previewers;
- private List<Class<? extends AbstractExtensionPanel>> extPanels;
+ private List<Class<? extends AbstractExtPage>> extPages;
@SuppressWarnings("unchecked")
public void load() {
pages = new ArrayList<>();
previewers = new ArrayList<>();
- extPanels = new ArrayList<>();
+ extPages = new ArrayList<>();
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AssignableTypeFilter(BasePage.class));
scanner.addIncludeFilter(new AssignableTypeFilter(AbstractBinaryPreviewer.class));
- scanner.addIncludeFilter(new AssignableTypeFilter(AbstractExtensionPanel.class));
+ scanner.addIncludeFilter(new AssignableTypeFilter(AbstractExtPage.class));
for (BeanDefinition bd : scanner.findCandidateComponents(StringUtils.EMPTY)) {
try {
@@ -62,12 +64,19 @@ public class ClassPathScanImplementationLookup {
bd.getBeanClassName(), ClassUtils.getDefaultClassLoader());
boolean isAbsractClazz = Modifier.isAbstract(clazz.getModifiers());
- if (BasePage.class.isAssignableFrom(clazz) && !isAbsractClazz) {
- pages.add((Class<? extends BasePage>) clazz);
- } else if (AbstractBinaryPreviewer.class.isAssignableFrom(clazz) && !isAbsractClazz) {
- previewers.add((Class<? extends AbstractBinaryPreviewer>) clazz);
- } else if (AbstractExtensionPanel.class.isAssignableFrom(clazz) && !isAbsractClazz) {
- extPanels.add((Class<? extends AbstractExtensionPanel>) clazz);
+ if (!isAbsractClazz) {
+ if (AbstractExtPage.class.isAssignableFrom(clazz)) {
+ if (clazz.isAnnotationPresent(ExtPage.class)) {
+ extPages.add((Class<? extends AbstractExtPage>) clazz);
+ } else {
+ LOG.error("Could not find annotation {} in {}, ignoring",
+ ExtPage.class.getName(), clazz.getName());
+ }
+ } else if (BasePage.class.isAssignableFrom(clazz)) {
+ pages.add((Class<? extends BasePage>) clazz);
+ } else if (AbstractBinaryPreviewer.class.isAssignableFrom(clazz)) {
+ previewers.add((Class<? extends AbstractBinaryPreviewer>) clazz);
+ }
}
} catch (Throwable t) {
LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
@@ -75,10 +84,28 @@ public class ClassPathScanImplementationLookup {
}
pages = Collections.unmodifiableList(pages);
previewers = Collections.unmodifiableList(previewers);
- extPanels = Collections.unmodifiableList(extPanels);
+
+ Collections.sort(extPages, new Comparator<Class<? extends AbstractExtPage>>() {
+
+ @Override
+ public int compare(
+ final Class<? extends AbstractExtPage> o1,
+ final Class<? extends AbstractExtPage> o2) {
+
+ int prio1 = o1.getAnnotation(ExtPage.class).priority();
+ int prio2 = o2.getAnnotation(ExtPage.class).priority();
+
+ return prio1 > prio2
+ ? 1
+ : prio1 == prio2
+ ? 0
+ : -1;
+ }
+ });
+ extPages = Collections.unmodifiableList(extPages);
LOG.debug("Binary previewers found: {}", previewers);
- LOG.debug("Extension panels found: {}", extPanels);
+ LOG.debug("Extension pages found: {}", extPages);
}
public Class<? extends AbstractBinaryPreviewer> getPreviewerClass(final String mimeType) {
@@ -103,8 +130,8 @@ public class ClassPathScanImplementationLookup {
return previewers;
}
- public List<Class<? extends AbstractExtensionPanel>> getExtPanelClasses() {
- return extPanels;
+ public List<Class<? extends AbstractExtPage>> getExtPageClasses() {
+ return extPages;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractExtPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractExtPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractExtPage.java
new file mode 100644
index 0000000..1a8949d
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractExtPage.java
@@ -0,0 +1,34 @@
+/*
+ * 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.client.console.pages;
+
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public abstract class AbstractExtPage extends BasePage {
+
+ private static final long serialVersionUID = 4627828052717627159L;
+
+ public AbstractExtPage() {
+ super();
+ }
+
+ public AbstractExtPage(final PageParameters parameters) {
+ super(parameters);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index a684735..c3228be 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -20,14 +20,18 @@ package org.apache.syncope.client.console.pages;
import org.apache.syncope.client.console.SyncopeConsoleApplication;
import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.annotations.ExtPage;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.NotificationAwareComponent;
+import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
+import org.apache.syncope.client.console.init.ConsoleInitializer;
import org.apache.syncope.client.console.panels.NotificationPanel;
import org.apache.syncope.client.console.rest.UserWorkflowRestClient;
import org.apache.syncope.client.console.topology.Topology;
import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -43,6 +47,8 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -165,9 +171,33 @@ public class BasePage extends WebPage implements NotificationAwareComponent, IAj
liContainer.add(new BookmarkablePageLink<>("notifications", Notifications.class));
MetaDataRoleAuthorizationStrategy.authorize(liContainer, WebPage.RENDER, StandardEntitlement.NOTIFICATION_LIST);
- liContainer = new WebMarkupContainer(getLIContainerId("camelroutes"));
- add(liContainer);
- liContainer.add(new BookmarkablePageLink<>("camelroutes", CamelRoutes.class));
+ ClassPathScanImplementationLookup classPathScanImplementationLookup =
+ (ClassPathScanImplementationLookup) SyncopeConsoleApplication.get().
+ getServletContext().getAttribute(ConsoleInitializer.CLASSPATH_LOOKUP);
+ ListView<Class<? extends AbstractExtPage>> extPages = new ListView<Class<? extends AbstractExtPage>>(
+ "extPages", classPathScanImplementationLookup.getExtPageClasses()) {
+
+ private static final long serialVersionUID = 4949588177564901031L;
+
+ @Override
+ protected void populateItem(final ListItem<Class<? extends AbstractExtPage>> item) {
+ WebMarkupContainer liContainer = new WebMarkupContainer("extPageLI");
+ item.add(liContainer);
+
+ BookmarkablePageLink<?> link = new BookmarkablePageLink<>("extPage", item.getModelObject());
+ liContainer.add(link);
+
+ ExtPage ann = item.getModelObject().getAnnotation(ExtPage.class);
+
+ link.add(new Label("extPageLabel", ann.label()));
+
+ Label extPageIcon = new Label("extPageIcon");
+ extPageIcon.add(new AttributeModifier("class", "fa " + ann.icon()));
+ link.add(extPageIcon);
+ }
+ };
+ extPages.setOutputMarkupId(true);
+ add(extPages);
add(new Label("domain", SyncopeConsoleSession.get().getDomain()));
add(new BookmarkablePageLink<Page>("logout", Logout.class));
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java
deleted file mode 100644
index cdb6915..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.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.client.console.pages;
-
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-public class CamelRoutes extends BasePage {
-
- private static final long serialVersionUID = -1100228004207271271L;
-
- public CamelRoutes(final PageParameters parameters) {
- super(parameters);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
index c3d61fd..6823583 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
@@ -35,15 +35,13 @@ public class Logs extends BasePage {
private static final long serialVersionUID = -1100228004207271271L;
- private final AjaxBootstrapTabbedPanel<ITab> tabbedPanel;
-
public Logs(final PageParameters parameters) {
super(parameters);
final WebMarkupContainer content = new WebMarkupContainer("content");
content.add(new Label("header", getString("header_title")));
content.setOutputMarkupId(true);
- tabbedPanel = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList());
+ AjaxBootstrapTabbedPanel<ITab> tabbedPanel = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList());
content.add(tabbedPanel);
add(content);
@@ -51,7 +49,7 @@ public class Logs extends BasePage {
private List<ITab> buildTabList() {
- final List<ITab> tabs = new ArrayList<>();
+ final List<ITab> tabs = new ArrayList<>(2);
tabs.add(new AbstractTab(new Model<>("Core")) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
index 8f7e7f1..913fd71 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
@@ -41,13 +41,14 @@ public class Roles extends BasePage {
content.setOutputMarkupId(true);
add(content);
- final WizardMgtPanel<RoleHandler> roleSearchResultPanel
- = new RoleSearchResultPanel.Builder(getPageReference()) {
+ WizardMgtPanel<RoleHandler> roleSearchResultPanel =
+ new RoleSearchResultPanel.Builder(getPageReference()) {
private static final long serialVersionUID = -5960765294082359003L;
- }.addNewItemPanelBuilder(new RoleWizardBuilder(BaseModal.CONTENT_ID, new RoleTO(), getPageReference()), true)
- .build("roles");
+ }.disableCheckBoxes().addNewItemPanelBuilder(
+ new RoleWizardBuilder(BaseModal.CONTENT_ID, new RoleTO(), getPageReference()), true).
+ build("roles");
content.add(roleSearchResultPanel);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
index 2247b35..40dce7c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
@@ -19,10 +19,6 @@
package org.apache.syncope.client.console.pages;
import org.apache.syncope.client.console.panels.SecurityQuestionsPanel;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.to.SecurityQuestionTO;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -31,10 +27,6 @@ public class SecurityQuestions extends BasePage {
private static final long serialVersionUID = 931085006718655535L;
- private final SecurityQuestionsPanel securityQuestionsPanel;
-
- private final BaseModal<SecurityQuestionTO> securityQuestionModal;
-
public SecurityQuestions(final PageParameters parameters) {
super(parameters);
@@ -43,29 +35,10 @@ public class SecurityQuestions extends BasePage {
content.setOutputMarkupId(true);
add(content);
- securityQuestionModal = new BaseModal<>("securityQuestionModal");
- addWindowWindowClosedCallback(securityQuestionModal);
- add(securityQuestionModal);
-
- securityQuestionsPanel = new SecurityQuestionsPanel("securityQuestionPanel", getPageReference());
+ SecurityQuestionsPanel securityQuestionsPanel =
+ new SecurityQuestionsPanel("securityQuestionPanel", getPageReference());
securityQuestionsPanel.setOutputMarkupId(true);
content.add(securityQuestionsPanel);
}
-
- private void addWindowWindowClosedCallback(final BaseModal<?> modal) {
- modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
-
- private static final long serialVersionUID = 8804221891699487139L;
-
- @Override
- public void onClose(final AjaxRequestTarget target) {
- target.add(securityQuestionsPanel);
- modal.show(false);
-
- ((BasePage) getPage()).getNotificationPanel().refresh(target);
- }
- }
- );
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractExtensionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractExtensionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractExtensionPanel.java
deleted file mode 100644
index 87af2ff..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractExtensionPanel.java
+++ /dev/null
@@ -1,34 +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.client.console.panels;
-
-import org.apache.wicket.PageReference;
-import org.apache.wicket.markup.html.panel.Panel;
-
-public abstract class AbstractExtensionPanel extends Panel {
-
- private static final long serialVersionUID = 4627828052717627159L;
-
- protected PageReference pageref;
-
- public AbstractExtensionPanel(final String id, final PageReference pageref) {
- super(id);
- this.pageref = pageref;
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
index 0c21416..a3291b0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
@@ -92,7 +92,6 @@ public abstract class AbstractSearchResultPanel<
protected final BasePage page;
protected AbstractSearchResultPanel(final String id, final Builder<T, W, E> builder) {
-
super(id, true);
setOutputMarkupId(true);
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
index 382958a..e4fca73 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
@@ -74,7 +74,7 @@ public class AnyTypeClassesPanel extends AbstractTypesPanel<AnyTypeClassTO, AnyT
protected WizardMgtPanel<AnyTypeClassTO> newInstance(final String id) {
return new AnyTypeClassesPanel(id, this);
}
- });
+ }.disableCheckBoxes());
this.addNewItemPanelBuilder(new AbstractModalPanelBuilder<AnyTypeClassTO>(
BaseModal.CONTENT_ID, new AnyTypeClassTO(), pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
index 85cac81..b7caf9c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
@@ -18,9 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import static org.apache.syncope.client.console.panels.AbstractModalPanel.LOG;
-import static org.apache.wicket.Component.ENABLE;
-
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -77,7 +74,7 @@ public class AnyTypePanel extends AbstractTypesPanel<AnyTypeTO, AnyTypeProvider>
protected WizardMgtPanel<AnyTypeTO> newInstance(final String id) {
return new AnyTypePanel(id, this);
}
- });
+ }.disableCheckBoxes());
this.addNewItemPanelBuilder(new AbstractModalPanelBuilder<AnyTypeTO>(
BaseModal.CONTENT_ID, new AnyTypeTO(), pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmSidebarPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmSidebarPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmSidebarPanel.java
index f1a6fee..6436354 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmSidebarPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmSidebarPanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import static org.apache.wicket.Component.ENABLE;
-
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
index 0bafa60..64570d6 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypePanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import static org.apache.syncope.client.console.panels.AbstractModalPanel.LOG;
-
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -76,7 +74,7 @@ public class RelationshipTypePanel extends AbstractTypesPanel<RelationshipTypeTO
protected WizardMgtPanel<RelationshipTypeTO> newInstance(final String id) {
return new RelationshipTypePanel(id, this);
}
- });
+ }.disableCheckBoxes());
this.addNewItemPanelBuilder(new AbstractModalPanelBuilder<RelationshipTypeTO>(
BaseModal.CONTENT_ID, new RelationshipTypeTO(), pageRef) {
@@ -188,8 +186,7 @@ public class RelationshipTypePanel extends AbstractTypesPanel<RelationshipTypeTO
final RelationshipTypeTO relationshipTypeTO = model.getObject();
- final ActionLinksPanel.Builder<Serializable> actionLinks
- = ActionLinksPanel.builder(page.getPageReference());
+ ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(page.getPageReference());
actionLinks.setDisableIndicator(true);
actionLinks.addWithRoles(new ActionLink<Serializable>() {
@@ -198,7 +195,7 @@ public class RelationshipTypePanel extends AbstractTypesPanel<RelationshipTypeTO
@Override
public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
send(RelationshipTypePanel.this, Broadcast.EXACT,
- new AjaxWizard.EditItemActionEvent<RelationshipTypeTO>(model.getObject(), target));
+ new AjaxWizard.EditItemActionEvent<>(model.getObject(), target));
}
}, ActionLink.ActionType.EDIT, StandardEntitlement.RELATIONSHIPTYPE_UPDATE).addWithRoles(
new ActionLink<Serializable>() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 97ab195..95c0d29 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import static org.apache.syncope.client.console.panels.AbstractModalPanel.LOG;
-
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -107,7 +105,7 @@ public class SchemaTypePanel extends AbstractTypesPanel<AbstractSchemaTO, Schema
protected WizardMgtPanel<AbstractSchemaTO> newInstance(final String id) {
return new SchemaTypePanel(id, schemaType, this);
}
- });
+ }.disableCheckBoxes());
this.schemaType = schemaType;
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
index 0fe8bdd..64b71da 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import static org.apache.wicket.Component.ENABLE;
-
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import java.io.Serializable;
import java.lang.reflect.Field;
@@ -36,7 +34,7 @@ import org.apache.syncope.client.console.commons.SearchableDataProvider;
import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.panels.SecurityQuestionsPanel.SecurityQuestionsProvider;
-import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.rest.SecurityQuestionRestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
@@ -60,12 +58,12 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
public class SecurityQuestionsPanel extends AbstractSearchResultPanel<
- SecurityQuestionTO, SecurityQuestionTO, SecurityQuestionsProvider, BaseRestClient> {
+ SecurityQuestionTO, SecurityQuestionTO, SecurityQuestionsProvider, SecurityQuestionRestClient> {
private static final long serialVersionUID = 3323019773236588850L;
public SecurityQuestionsPanel(final String id, final PageReference pageRef) {
- super(id, new Builder<SecurityQuestionTO, SecurityQuestionTO, BaseRestClient>(null, pageRef) {
+ super(id, new Builder<SecurityQuestionTO, SecurityQuestionTO, SecurityQuestionRestClient>(null, pageRef) {
private static final long serialVersionUID = 8769126634538601689L;
@@ -73,7 +71,7 @@ public class SecurityQuestionsPanel extends AbstractSearchResultPanel<
protected WizardMgtPanel<SecurityQuestionTO> newInstance(final String id) {
return new SecurityQuestionsPanel(id, this);
}
- });
+ }.disableCheckBoxes());
this.addNewItemPanelBuilder(new AbstractModalPanelBuilder<SecurityQuestionTO>(
BaseModal.CONTENT_ID, new SecurityQuestionTO(), pageRef) {
@@ -105,8 +103,10 @@ public class SecurityQuestionsPanel extends AbstractSearchResultPanel<
MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, ENABLE, StandardEntitlement.SECURITY_QUESTION_CREATE);
}
- public SecurityQuestionsPanel(
- final String id, final Builder<SecurityQuestionTO, SecurityQuestionTO, BaseRestClient> builder) {
+ private SecurityQuestionsPanel(
+ final String id,
+ final Builder<SecurityQuestionTO, SecurityQuestionTO, SecurityQuestionRestClient> builder) {
+
super(id, builder);
}
@@ -188,8 +188,6 @@ public class SecurityQuestionsPanel extends AbstractSearchResultPanel<
public void populateItem(final Item<ICellPopulator<SecurityQuestionTO>> item, final String componentId,
final IModel<SecurityQuestionTO> model) {
- final SecurityQuestionTO securityQuestionTO = model.getObject();
-
final ActionLinksPanel.Builder<Serializable> actionLinks =
ActionLinksPanel.builder(page.getPageReference());
actionLinks.setDisableIndicator(true);
@@ -213,7 +211,7 @@ public class SecurityQuestionsPanel extends AbstractSearchResultPanel<
public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
try {
SyncopeConsoleSession.get().getService(SecurityQuestionService.class
- ).delete(securityQuestionTO.getKey());
+ ).delete(model.getObject().getKey());
info(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
index 57a973d..b23d9fe 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
@@ -18,9 +18,6 @@
*/
package org.apache.syncope.client.console.rest;
-import static org.apache.syncope.client.console.rest.BaseRestClient.getService;
-import static org.apache.syncope.client.console.rest.BaseRestClient.toOrderBy;
-
import java.util.List;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.SyncopeClientException;
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
index a2ec369..1da57a7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.rest;
-import static org.apache.syncope.client.console.rest.BaseRestClient.getService;
-
import java.util.ArrayList;
import java.util.List;
import org.apache.syncope.common.lib.to.RoleTO;
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
index dc3a6d4..360fbc7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.topology;
-import static org.apache.wicket.Component.ENABLE;
-
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import java.text.MessageFormat;
import org.apache.syncope.client.console.commons.Constants;
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
index 77f9355..a0064b1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
@@ -18,9 +18,6 @@
*/
package org.apache.syncope.client.console.wizards.any;
-import static org.apache.syncope.client.console.commons.status.Status.ACTIVE;
-import static org.apache.syncope.client.console.commons.status.Status.SUSPENDED;
-
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
@@ -219,8 +216,8 @@ public class StatusPanel extends Panel implements IHeaderContributor {
@Override
protected boolean statusCondition(final StatusBean bean) {
- final Pair<ConnObjectTO, ConnObjectTO> pair
- = getConnObjectTO(bean.getAnyKey(), bean.getResourceName(), connObjects);
+ final Pair<ConnObjectTO, ConnObjectTO> pair =
+ getConnObjectTO(bean.getAnyKey(), bean.getResourceName(), connObjects);
return pair != null && pair.getRight() != null;
}
@@ -244,8 +241,8 @@ public class StatusPanel extends Panel implements IHeaderContributor {
remoteObjectFragment.add(
new Label("resource", new ResourceModel(bean.getResourceName(), bean.getResourceName())));
- final Pair<ConnObjectTO, ConnObjectTO> res
- = getConnObjectTO(bean.getAnyKey(), bean.getResourceName(), connObjects);
+ final Pair<ConnObjectTO, ConnObjectTO> res =
+ getConnObjectTO(bean.getAnyKey(), bean.getResourceName(), connObjects);
remoteObjectFragment.add(new ConnObjectPanel("remoteObject", res == null ? null : res));
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
index 7bae94e..84f9060 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
@@ -31,7 +31,6 @@ under the License.
<link href="css/AdminLTE_plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
<link href="css/AdminLTE_skins/skin-green.css" rel="stylesheet" type="text/css" />
<link href="css/syncopeConsole.css" rel="stylesheet" type="text/css" />
- <link href="css/fieldstyle.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="webjars/bootbox/${bootbox.version}/bootbox.js"></script>
</head>
@@ -112,8 +111,10 @@ under the License.
</li>
<li class="treeview">
<a href="#"><i class="fa fa-puzzle-piece"></i><span>Extensions</span> <i class="fa fa-angle-left pull-right"></i></a>
- <ul class="treeview-menu">
- <li wicket:id="camelroutesLI"><a href="#" wicket:id="camelroutes"><i class="fa fa-circle-o"></i>Camel Routes</a></li>
+ <ul class="treeview-menu" wicket:id="extPages">
+ <li wicket:id="extPageLI">
+ <a href="#" wicket:id="extPage"><i wicket:id="extPageIcon"></i><span wicket:id="extPageLabel"/></a>
+ </li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePopupPage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePopupPage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePopupPage.html
index 04500bd..2d9bca1 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePopupPage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePopupPage.html
@@ -20,11 +20,6 @@ under the License.
<head>
<title></title>
- <link rel="stylesheet" type="text/css" href="webjars/jquery-ui/${jquery-ui.version}/themes/base/minified/jquery-ui.min.css" media="all"/>
- <link rel="stylesheet" type="text/css" href="css/jquery-ui.css" media="all"/>
- <link rel="stylesheet" type="text/css" href="css/style.css" media="all"/>
- <link rel="stylesheet" type="text/css" href="css/fieldstyle.css" media="all"/>
-
<style type="text/css">
table.palette td.header {
background:url("images/ui-bg_glass_75_e6e6e6_1x400.png")
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/resources/org/apache/syncope/client/console/pages/CamelRoutes.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/CamelRoutes.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/CamelRoutes.html
deleted file mode 100644
index 6553da1..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/CamelRoutes.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<!--
-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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
-
- <section class="content-header">
- <h1>
- Camel Routes
- <small>Work in progress</small>
- </h1>
- </section>
-
- <section class="content">
- <div class="progress progress active" style="margin:100px">
- <div style="width: 70%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="20" role="progressbar" class="progress-bar progress-bar-success progress-bar-striped">
- <span class="sr-only">20% Complete</span>
- </div>
- </div>
- </section>
-
- </wicket:extend>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
index 77d0675..5ada5a2 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
@@ -37,6 +37,5 @@ under the License.
</div>
</div>
</div>
- <div wicket:id="securityQuestionModal"></div>
</wicket:extend>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.html
index c7677df..ec13467 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.html
@@ -40,6 +40,7 @@ under the License.
</form>
</div>
</div>
+ <wicket:child/>
</wicket:extend>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
index 9a6f9ef..0755e3e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
@@ -17,13 +17,8 @@ KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
- <body>
- <wicket:panel>
- <div wicket:id="tabbedPanel"></div>
- </wicket:panel>
- </body>
+ <wicket:panel>
+ <div wicket:id="tabbedPanel"></div>
+ </wicket:panel>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRouteModalPage.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRouteModalPage.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRouteModalPage.java
deleted file mode 100644
index 29db354..0000000
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRouteModalPage.java
+++ /dev/null
@@ -1,93 +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.client.console.pages;
-
-import java.io.Serializable;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.AbstractModalPanel;
-import org.apache.syncope.client.console.rest.CamelRouteRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.CamelRouteTO;
-import org.apache.syncope.common.lib.types.CamelEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-
-public class CamelRouteModalPage<T extends Serializable> extends AbstractModalPanel<T> {
-
- private static final long serialVersionUID = -1438441210568592931L;
-
- private final CamelRouteRestClient restClient = new CamelRouteRestClient();
-
- public CamelRouteModalPage(
- final BaseModal<T> modal,
- final PageReference pageRef,
- final CamelRouteTO routeTO,
- final boolean createFlag) {
-
- super(modal, pageRef);
-
- Form<CamelRouteTO> routeForm = new Form<>("routeDefForm");
-
- TextArea<String> routeDefArea = new TextArea<>("content", new PropertyModel<String>(routeTO, "content"));
-
- routeForm.add(routeDefArea);
- routeForm.setModel(new CompoundPropertyModel<>(routeTO));
-
- AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<>(getString(SUBMIT)), routeForm) {
-
- private static final long serialVersionUID = -958724007591692537L;
-
- @Override
- protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- try {
- restClient.update(routeTO.getKey(), ((CamelRouteTO) form.getModelObject()).getContent());
- info(getString(Constants.OPERATION_SUCCEEDED));
-
- // Uncomment with something similar once SYNCOPE-156 is completed
- // Configuration callerPage = (Configuration) pageRef.getPage();
- // callerPage.setModalResult(true);
- modal.close(target);
- } catch (SyncopeClientException scee) {
- error(getString(Constants.ERROR) + ": " + scee.getMessage());
- }
- modal.getNotificationPanel().refresh(target);
- }
-
- @Override
- protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- modal.getNotificationPanel().refresh(target);
- }
-
- };
-
- MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, CamelEntitlement.ROUTE_UPDATE);
- routeForm.add(submit);
-
- this.add(routeForm);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPage.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPage.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPage.java
new file mode 100644
index 0000000..81dfbb3
--- /dev/null
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPage.java
@@ -0,0 +1,102 @@
+/*
+ * 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.client.console.pages;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.CamelEntitlement;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.syncope.client.console.annotations.ExtPage;
+import org.apache.syncope.client.console.panels.CamelRoutesPanel;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+@ExtPage(label = "Camel Routes", icon = "fa-road", priority = 100)
+public class CamelRoutesPage extends AbstractExtPage {
+
+ private static final long serialVersionUID = 1965360932245590233L;
+
+ public static final String PREF_CAMEL_ROUTES_PAGINATOR_ROWS = "camel.routes.paginator.rows";
+
+ private final CamelRoutesRestClient restClient = new CamelRoutesRestClient();
+
+ public CamelRoutesPage(final PageParameters parameters) {
+ super(parameters);
+
+ WebMarkupContainer content = new WebMarkupContainer("content");
+ content.setOutputMarkupId(true);
+ content.add(new Label("header", getString("header_title")));
+ AjaxBootstrapTabbedPanel<ITab> tabbedPanel = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList());
+ content.add(tabbedPanel);
+
+ MetaDataRoleAuthorizationStrategy.authorize(content, ENABLE, CamelEntitlement.ROUTE_LIST);
+ add(content);
+ }
+
+ private List<ITab> buildTabList() {
+ List<ITab> tabs = new ArrayList<>(3);
+
+ tabs.add(new AbstractTab(new Model<>(AnyTypeKind.USER.name())) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ CamelRoutesPanel panel = new CamelRoutesPanel(panelId, getPageReference(), AnyTypeKind.USER);
+ panel.setEnabled(restClient.isCamelEnabledFor(AnyTypeKind.USER));
+ return panel;
+ }
+ });
+
+ tabs.add(new AbstractTab(new Model<>(AnyTypeKind.GROUP.name())) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ CamelRoutesPanel panel = new CamelRoutesPanel(panelId, getPageReference(), AnyTypeKind.GROUP);
+ panel.setEnabled(restClient.isCamelEnabledFor(AnyTypeKind.GROUP));
+ return panel;
+ }
+ });
+
+ tabs.add(new AbstractTab(new Model<>(AnyTypeKind.ANY_OBJECT.name())) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ CamelRoutesPanel panel = new CamelRoutesPanel(panelId, getPageReference(), AnyTypeKind.ANY_OBJECT);
+ panel.setEnabled(restClient.isCamelEnabledFor(AnyTypeKind.ANY_OBJECT));
+ return panel;
+ }
+ });
+
+ return tabs;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPopupPage.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPopupPage.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPopupPage.java
new file mode 100644
index 0000000..e87443e
--- /dev/null
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutesPopupPage.java
@@ -0,0 +1,76 @@
+/*
+ * 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.client.console.pages;
+
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.CamelRouteTO;
+import org.apache.syncope.common.lib.types.CamelEntitlement;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+
+public class CamelRoutesPopupPage extends BasePopupPage {
+
+ private static final long serialVersionUID = -1438441210568592931L;
+
+ private final CamelRoutesRestClient restClient = new CamelRoutesRestClient();
+
+ public CamelRoutesPopupPage(final CamelRouteTO routeTO) {
+ super();
+
+ Form<CamelRouteTO> routeDefForm = new Form<>("routeDefForm");
+
+ TextArea<String> routeDefArea = new TextArea<>("content", new PropertyModel<String>(routeTO, "content"));
+ routeDefForm.add(routeDefArea);
+ routeDefForm.setModel(new CompoundPropertyModel<>(routeTO));
+
+ AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<>(getString(SUBMIT)), routeDefForm) {
+
+ private static final long serialVersionUID = -958724007591692537L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ try {
+ restClient.update(routeTO.getKey(), ((CamelRouteTO) form.getModelObject()).getContent());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ } catch (SyncopeClientException scee) {
+ error(getString(Constants.ERROR) + ": " + scee.getMessage());
+ }
+ notificationPanel.refresh(target);
+ }
+
+ @Override
+ protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+ notificationPanel.refresh(target);
+ }
+ };
+
+ MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, CamelEntitlement.ROUTE_UPDATE);
+ routeDefForm.add(submit);
+ add(routeDefForm);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutePanel.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutePanel.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutePanel.java
deleted file mode 100644
index bcd5e7a..0000000
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutePanel.java
+++ /dev/null
@@ -1,176 +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.client.console.panels;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.syncope.client.console.annotations.ExtensionPanel;
-import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.rest.CamelRouteRestClient;
-import org.apache.syncope.common.lib.to.CamelRouteTO;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.CamelEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
-import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
-
-@ExtensionPanel("Camel routes")
-public class CamelRoutePanel extends AbstractExtensionPanel {
-
- private static final long serialVersionUID = 1965360932245590233L;
-
- private static final int CAMELROUTE_WIN_HEIGHT = 480;
-
- private static final int CAMELROUTE_WIN_WIDTH = 800;
-
- private CamelRouteRestClient restClient = new CamelRouteRestClient();
-
- private ModalWindow editCamelRouteWin;
-
- public CamelRoutePanel(final String id, final PageReference pageref) {
- super(id, pageref);
-
- editCamelRouteWin = new ModalWindow("editCamelRouteWin");
- editCamelRouteWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- editCamelRouteWin.setInitialHeight(CAMELROUTE_WIN_HEIGHT);
- editCamelRouteWin.setInitialWidth(CAMELROUTE_WIN_WIDTH);
- editCamelRouteWin.setCookieName("editCamelRouteWin-modal");
- add(editCamelRouteWin);
-
- List<IColumn<CamelRouteTO, String>> routeCols = new ArrayList<>();
- routeCols.add(new PropertyColumn<CamelRouteTO, String>(new ResourceModel("key"), "key", "key"));
- routeCols.add(new AbstractColumn<CamelRouteTO, String>(new ResourceModel("actions", "")) {
-
- private static final long serialVersionUID = 2054811145491901166L;
-
- @Override
- public String getCssClass() {
- return "action";
- }
-
- @Override
- public void populateItem(final Item<ICellPopulator<CamelRouteTO>> cellItem, final String componentId,
- final IModel<CamelRouteTO> model) {
-
- // Uncomment with something similar once SYNCOPE-156 is completed
- /* final ActionLinksPanel panel = new
- * ActionLinksPanel(componentId, model, pageref);
- *
- * panel.add(new ActionLink() {
- *
- * private static final long serialVersionUID = -3722207913631435501L;
- *
- * @Override
- * public void onClick(final AjaxRequestTarget target) {
- *
- * editCamelRouteWin.setPageCreator(new ModalWindow.PageCreator() {
- *
- * private static final long serialVersionUID = -7834632442532690940L;
- *
- * @Override
- * public Page createPage() {
- * return new CamelRouteModalPage(pageref, editCamelRouteWin,
- * restClient.read(model.getObject().getKey()), false);
- * }
- *
- * });
- *
- * editCamelRouteWin.show(target);
- * }
- * }, ActionLink.ActionType.EDIT, "CamelRoutes");
- *
- * cellItem.add(panel); */
- }
- });
-
- final AjaxFallbackDefaultDataTable<CamelRouteTO, String> routeTable =
- new AjaxFallbackDefaultDataTable<>("camelRouteTable", routeCols, new CamelRouteProvider(), 50);
-
- WebMarkupContainer routeContainer = new WebMarkupContainer("camelRoutesContainer");
- routeContainer.add(routeTable);
- routeContainer.setOutputMarkupId(true);
- MetaDataRoleAuthorizationStrategy.authorize(routeContainer, ENABLE, CamelEntitlement.ROUTE_LIST);
- add(routeContainer);
- }
-
- private class CamelRouteProvider extends SortableDataProvider<CamelRouteTO, String> {
-
- private static final long serialVersionUID = -2917236020432105949L;
-
- private final SortableDataProviderComparator<CamelRouteTO> comparator;
-
- CamelRouteProvider() {
- setSort("key", SortOrder.ASCENDING);
- comparator = new SortableDataProviderComparator<>(this);
- }
-
- @Override
- public Iterator<? extends CamelRouteTO> iterator(final long first, final long count) {
- List<CamelRouteTO> list = new ArrayList<>();
- if (restClient.isCamelEnabledFor(AnyTypeKind.USER)) {
- list.addAll(restClient.list(AnyTypeKind.USER));
- }
- if (restClient.isCamelEnabledFor(AnyTypeKind.GROUP)) {
- list.addAll(restClient.list(AnyTypeKind.GROUP));
- }
-
- Collections.sort(list, comparator);
-
- return list.subList((int) first, (int) first + (int) count).iterator();
- }
-
- @Override
- public long size() {
- return (restClient.isCamelEnabledFor(AnyTypeKind.USER)
- ? restClient.list(AnyTypeKind.USER).size()
- : 0)
- + (restClient.isCamelEnabledFor(AnyTypeKind.GROUP)
- ? restClient.list(AnyTypeKind.GROUP).size()
- : 0);
- }
-
- @Override
- public IModel<CamelRouteTO> model(final CamelRouteTO route) {
- return new AbstractReadOnlyModel<CamelRouteTO>() {
-
- private static final long serialVersionUID = 774694801558497248L;
-
- @Override
- public CamelRouteTO getObject() {
- return route;
- }
- };
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/7cb3c322/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
new file mode 100644
index 0000000..8ef050d
--- /dev/null
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
@@ -0,0 +1,196 @@
+/*
+ * 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.client.console.panels;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.SearchableDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.pages.CamelRoutesPage;
+import org.apache.syncope.client.console.pages.CamelRoutesPopupPage;
+import org.apache.syncope.client.console.panels.CamelRoutesPanel.CamelRoutesProvider;
+import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.to.CamelRouteTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.CamelEntitlement;
+import org.apache.syncope.common.rest.api.service.CamelRouteService;
+import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+
+public class CamelRoutesPanel extends AbstractSearchResultPanel<
+ CamelRouteTO, CamelRouteTO, CamelRoutesProvider, CamelRoutesRestClient> {
+
+ private static final long serialVersionUID = 3727444742501082182L;
+
+ private static final int CAMELROUTE_WIN_HEIGHT = 480;
+
+ private static final int CAMELROUTE_WIN_WIDTH = 800;
+
+ private final AnyTypeKind anyTypeKind;
+
+ private ModalWindow editCamelRouteWin;
+
+ public CamelRoutesPanel(final String id, final PageReference pageRef, final AnyTypeKind anyTypeKind) {
+ super(id, new Builder<CamelRouteTO, CamelRouteTO, CamelRoutesRestClient>(
+ new CamelRoutesRestClient(), pageRef) {
+
+ private static final long serialVersionUID = 8769126634538601689L;
+
+ @Override
+ protected WizardMgtPanel<CamelRouteTO> newInstance(final String id) {
+ return new CamelRoutesPanel(id, this, anyTypeKind);
+ }
+ }.disableCheckBoxes());
+
+ this.anyTypeKind = anyTypeKind;
+ setFooterVisibility(true);
+ modal.addSumbitButton();
+ modal.size(Modal.Size.Large);
+ initResultTable();
+
+ editCamelRouteWin = new ModalWindow("editCamelRouteWin");
+ editCamelRouteWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
+ editCamelRouteWin.setInitialHeight(CAMELROUTE_WIN_HEIGHT);
+ editCamelRouteWin.setInitialWidth(CAMELROUTE_WIN_WIDTH);
+ editCamelRouteWin.setCookieName("editCamelRouteWin-modal");
+ add(editCamelRouteWin);
+ }
+
+ private CamelRoutesPanel(
+ final String id,
+ final Builder<CamelRouteTO, CamelRouteTO, CamelRoutesRestClient> builder,
+ final AnyTypeKind anyTypeKind) {
+
+ super(id, builder);
+ this.anyTypeKind = anyTypeKind;
+ }
+
+ @Override
+ protected CamelRoutesProvider dataProvider() {
+ return new CamelRoutesProvider(anyTypeKind, rows);
+ }
+
+ @Override
+ protected String paginatorRowsKey() {
+ return CamelRoutesPage.PREF_CAMEL_ROUTES_PAGINATOR_ROWS;
+ }
+
+ @Override
+ protected Collection<ActionLink.ActionType> getBulkActions() {
+ return Collections.<ActionLink.ActionType>emptyList();
+ }
+
+ @Override
+ protected List<IColumn<CamelRouteTO, String>> getColumns() {
+ final List<IColumn<CamelRouteTO, String>> columns = new ArrayList<>();
+ columns.add(new PropertyColumn<CamelRouteTO, String>(new ResourceModel("name"), "name", "name"));
+ columns.add(new AbstractColumn<CamelRouteTO, String>(new ResourceModel("actions", "")) {
+
+ private static final long serialVersionUID = -3503023501954863131L;
+
+ @Override
+ public String getCssClass() {
+ return "action";
+ }
+
+ @Override
+ public void populateItem(final Item<ICellPopulator<CamelRouteTO>> item, final String componentId,
+ final IModel<CamelRouteTO> model) {
+
+ ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(page.getPageReference());
+ actionLinks.setDisableIndicator(true);
+ actionLinks.addWithRoles(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ editCamelRouteWin.setPageCreator(new ModalWindow.PageCreator() {
+
+ private static final long serialVersionUID = -7834632442532690940L;
+
+ @Override
+ public Page createPage() {
+ return new CamelRoutesPopupPage(restClient.read(model.getObject().getKey()));
+ }
+
+ });
+
+ editCamelRouteWin.show(target);
+ }
+ }, ActionLink.ActionType.EDIT, CamelEntitlement.ROUTE_READ);
+ item.add(actionLinks.build(componentId));
+ }
+ });
+
+ return columns;
+
+ }
+
+ protected final class CamelRoutesProvider extends SearchableDataProvider<CamelRouteTO> {
+
+ private static final long serialVersionUID = -185944053385660794L;
+
+ private final AnyTypeKind anyTypeKind;
+
+ private final SortableDataProviderComparator<CamelRouteTO> comparator;
+
+ private CamelRoutesProvider(final AnyTypeKind anyTypeKind, final int paginatorRows) {
+ super(paginatorRows);
+ this.anyTypeKind = anyTypeKind;
+ comparator = new SortableDataProviderComparator<>(this);
+ }
+
+ @Override
+ public Iterator<CamelRouteTO> iterator(final long first, final long count) {
+ List<CamelRouteTO> list = SyncopeConsoleSession.get().getService(CamelRouteService.class).list(anyTypeKind);
+ Collections.sort(list, comparator);
+ return list.subList((int) first, (int) first + (int) count).iterator();
+ }
+
+ @Override
+ public long size() {
+ return SyncopeConsoleSession.get().getService(CamelRouteService.class).list(anyTypeKind).size();
+ }
+
+ @Override
+ public IModel<CamelRouteTO> model(final CamelRouteTO object) {
+ return new CompoundPropertyModel<>(object);
+ }
+ }
+}