diff --git a/modules/apps/frontend-data-set/frontend-data-set-admin-web/src/main/java/com/liferay/frontend/data/set/admin/web/internal/portlet/action/ImportSystemDataSetMVCResourceCommand.java b/modules/apps/frontend-data-set/frontend-data-set-admin-web/src/main/java/com/liferay/frontend/data/set/admin/web/internal/portlet/action/ImportSystemDataSetMVCResourceCommand.java index bc8f7ec278d2d2..355ad89d4b486a 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-admin-web/src/main/java/com/liferay/frontend/data/set/admin/web/internal/portlet/action/ImportSystemDataSetMVCResourceCommand.java +++ b/modules/apps/frontend-data-set/frontend-data-set-admin-web/src/main/java/com/liferay/frontend/data/set/admin/web/internal/portlet/action/ImportSystemDataSetMVCResourceCommand.java @@ -9,8 +9,8 @@ import com.liferay.frontend.data.set.SystemFDSEntryRegistry; import com.liferay.frontend.data.set.action.FDSCreationMenu; import com.liferay.frontend.data.set.action.FDSCreationMenuRegistry; -import com.liferay.frontend.data.set.action.FDSItemActionList; -import com.liferay.frontend.data.set.action.FDSItemActionListRegistry; +import com.liferay.frontend.data.set.action.FDSItemsActions; +import com.liferay.frontend.data.set.action.FDSItemsActionsRegistry; import com.liferay.frontend.data.set.admin.web.internal.constants.FDSAdminPortletKeys; import com.liferay.frontend.data.set.model.FDSActionDropdownItem; import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; @@ -42,7 +42,6 @@ import javax.portlet.ResourceResponse; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -113,20 +112,17 @@ protected void doTransactionalCommand( objectEntry.getObjectEntryId(), dataSetActionObjectDefinition.getDefaultLanguageId(), fdsCreationMenu, _portal.getHttpServletRequest(resourceRequest), - _portal.getHttpServletResponse(resourceResponse), dataSetActionObjectDefinition.getObjectDefinitionId()); } - FDSItemActionList fdsItemActionList = - _fdsItemActionListRegistry.getFDSItemActionList(fdsName); + FDSItemsActions fdsItemsActions = + _fdsItemsActionsRegistry.getFDSItemsActions(fdsName); - if (fdsItemActionList != null) { - _addFDSItemActionListObjectEntries( + if (fdsItemsActions != null) { + _addFDSItemsActionsObjectEntries( objectEntry.getObjectEntryId(), dataSetActionObjectDefinition.getDefaultLanguageId(), - fdsItemActionList, - _portal.getHttpServletRequest(resourceRequest), - _portal.getHttpServletResponse(resourceResponse), + fdsItemsActions, _portal.getHttpServletRequest(resourceRequest), dataSetActionObjectDefinition.getObjectDefinitionId()); } @@ -137,12 +133,11 @@ protected void doTransactionalCommand( private void _addFDSCreationMenuObjectEntries( long dataSetId, String defaultLanguageId, FDSCreationMenu fdsCreationMenu, - HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse, long objectDefinitionId) + HttpServletRequest httpServletRequest, long objectDefinitionId) throws Exception { CreationMenu creationMenu = fdsCreationMenu.getCreationMenu( - httpServletRequest, httpServletResponse); + httpServletRequest); List primaryDropdownItems = (List)creationMenu.get("primaryItems"); @@ -200,16 +195,14 @@ private void _addFDSCreationMenuObjectEntries( } } - private void _addFDSItemActionListObjectEntries( + private void _addFDSItemsActionsObjectEntries( long dataSetId, String defaultLanguageId, - FDSItemActionList fdsItemActionList, - HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse, long objectDefinitionId) + FDSItemsActions fdsItemsActions, + HttpServletRequest httpServletRequest, long objectDefinitionId) throws Exception { List fdsActionDropdownItems = - fdsItemActionList.getFDSActionDropdownItems( - httpServletRequest, httpServletResponse); + fdsItemsActions.getFDSActionDropdownItems(httpServletRequest); for (FDSActionDropdownItem fdsActionDropdownItem : fdsActionDropdownItems) { @@ -298,7 +291,7 @@ private Serializable _getOptionalValue(Object value) { private FDSCreationMenuRegistry _fdsCreationMenuRegistry; @Reference - private FDSItemActionListRegistry _fdsItemActionListRegistry; + private FDSItemsActionsRegistry _fdsItemsActionsRegistry; @Reference private JSONFactory _jsonFactory; diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/bnd.bnd b/modules/apps/frontend-data-set/frontend-data-set-api/bnd.bnd index 9acc9ede41be3d..1f6df48e7bb75d 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/bnd.bnd +++ b/modules/apps/frontend-data-set/frontend-data-set-api/bnd.bnd @@ -1,6 +1,6 @@ Bundle-Name: Liferay Frontend Data Set API Bundle-SymbolicName: com.liferay.frontend.data.set.api -Bundle-Version: 17.1.0 +Bundle-Version: 18.0.0 Export-Package:\ com.liferay.frontend.data.set,\ com.liferay.frontend.data.set.action,\ diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionList.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActions.java similarity index 94% rename from modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionList.java rename to modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActions.java index 474947c23120be..19f67b8baa9a10 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionList.java +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActions.java @@ -15,7 +15,7 @@ /** * @author Daniel Sanz */ -public interface FDSBulkActionList { +public interface FDSBulkActions { public List getFDSActionDropdownItems( HttpServletRequest httpServletRequest); diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionListRegistry.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionsRegistry.java similarity index 69% rename from modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionListRegistry.java rename to modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionsRegistry.java index fe7d4f30871bca..8b11d599aeee63 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionListRegistry.java +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionsRegistry.java @@ -8,8 +8,8 @@ /** * @author Daniel Sanz */ -public interface FDSBulkActionListRegistry { +public interface FDSBulkActionsRegistry { - public FDSBulkActionList getFDSBulkActionList(String fdsName); + public FDSBulkActions getFDSBulkActions(String fdsName); } \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionsSerializer.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionsSerializer.java new file mode 100644 index 00000000000000..da841b6ff1f31f --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSBulkActionsSerializer.java @@ -0,0 +1,24 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.action; + +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; + +import java.util.List; + +/** + * @author Daniel Sanz + */ +public interface FDSBulkActionsSerializer + extends FDSSerializer> { + + @Override + public default String getKey() { + return "bulkActions"; + } + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenu.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenu.java index 1548769c8776e8..ceecc6a81c4d9e 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenu.java +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenu.java @@ -7,20 +7,15 @@ import com.liferay.frontend.data.set.FDSEntryItemImportPolicy; import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; -import com.liferay.portal.kernel.exception.PortalException; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; /** * @author Daniel Sanz */ public interface FDSCreationMenu { - public CreationMenu getCreationMenu( - HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse) - throws PortalException; + public CreationMenu getCreationMenu(HttpServletRequest httpServletRequest); public default FDSEntryItemImportPolicy getFDSEntryItemImportPolicy() { return FDSEntryItemImportPolicy.ITEM_PROXY; diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenuSerializer.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenuSerializer.java new file mode 100644 index 00000000000000..d124f9fa25470c --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSCreationMenuSerializer.java @@ -0,0 +1,21 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.action; + +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; + +/** + * @author Daniel Sanz + */ +public interface FDSCreationMenuSerializer extends FDSSerializer { + + @Override + public default String getKey() { + return "creationMenu"; + } + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemActionList.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActions.java similarity index 71% rename from modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemActionList.java rename to modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActions.java index 7a3d85ed2f44bc..6ac5f7e8188a7f 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemActionList.java +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActions.java @@ -7,22 +7,18 @@ import com.liferay.frontend.data.set.FDSEntryItemImportPolicy; import com.liferay.frontend.data.set.model.FDSActionDropdownItem; -import com.liferay.portal.kernel.exception.PortalException; import java.util.List; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; /** * @author Daniel Sanz */ -public interface FDSItemActionList { +public interface FDSItemsActions { public List getFDSActionDropdownItems( - HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse) - throws PortalException; + HttpServletRequest httpServletRequest); public default FDSEntryItemImportPolicy getFDSEntryItemImportPolicy() { return FDSEntryItemImportPolicy.ITEM_PROXY; diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemActionListRegistry.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActionsRegistry.java similarity index 69% rename from modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemActionListRegistry.java rename to modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActionsRegistry.java index ea440f844cdf1b..38d42b58e86b9d 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemActionListRegistry.java +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActionsRegistry.java @@ -8,8 +8,8 @@ /** * @author Daniel Sanz */ -public interface FDSItemActionListRegistry { +public interface FDSItemsActionsRegistry { - public FDSItemActionList getFDSItemActionList(String fdsName); + public FDSItemsActions getFDSItemsActions(String fdsName); } \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActionsSerializer.java b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActionsSerializer.java new file mode 100644 index 00000000000000..4089770cb0cde8 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/action/FDSItemsActionsSerializer.java @@ -0,0 +1,24 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.action; + +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; + +import java.util.List; + +/** + * @author Daniel Sanz + */ +public interface FDSItemsActionsSerializer + extends FDSSerializer> { + + @Override + public default String getKey() { + return "itemsActions"; + } + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/resources/com/liferay/frontend/data/set/action/packageinfo b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/resources/com/liferay/frontend/data/set/action/packageinfo index b1793a21a72389..682b435622a0aa 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-api/src/main/resources/com/liferay/frontend/data/set/action/packageinfo +++ b/modules/apps/frontend-data-set/frontend-data-set-api/src/main/resources/com/liferay/frontend/data/set/action/packageinfo @@ -1 +1 @@ -version 1.1.0 \ No newline at end of file +version 2.0.0 \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSBulkActionsSerializerImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSBulkActionsSerializerImpl.java new file mode 100644 index 00000000000000..e12d092dd10554 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSBulkActionsSerializerImpl.java @@ -0,0 +1,39 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.action.FDSBulkActionsSerializer; +import com.liferay.frontend.data.set.internal.serializer.BaseCustomFDSSerializer; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; + +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.osgi.service.component.annotations.Component; + +/** + * @author Daniel Sanz + */ +@Component( + property = "frontend.data.set.serializer.type=" + FDSSerializer.TYPE_CUSTOM, + service = FDSBulkActionsSerializer.class +) +public class CustomFDSBulkActionsSerializerImpl + extends BaseCustomFDSSerializer implements FDSBulkActionsSerializer { + + @Override + public List serialize( + String fdsName, HttpServletRequest httpServletRequest) { + + // TODO + + return Collections.emptyList(); + } + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSCreationMenuSerializerImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSCreationMenuSerializerImpl.java new file mode 100644 index 00000000000000..dde3152bb220cb --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSCreationMenuSerializerImpl.java @@ -0,0 +1,80 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.action.FDSCreationMenuSerializer; +import com.liferay.frontend.data.set.internal.serializer.BaseCustomFDSSerializer; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItem; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItemBuilder; +import com.liferay.petra.function.transform.TransformUtil; +import com.liferay.portal.kernel.util.Validator; + +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.osgi.service.component.annotations.Component; + +/** + * @author Daniel Sanz + * @author Marko Cikos + */ +@Component( + property = "frontend.data.set.serializer.type=" + FDSSerializer.TYPE_CUSTOM, + service = FDSCreationMenuSerializer.class +) +public class CustomFDSCreationMenuSerializerImpl + extends BaseCustomFDSSerializer implements FDSCreationMenuSerializer { + + @Override + public CreationMenu serialize( + String fdsName, HttpServletRequest httpServletRequest) { + + CreationMenu creationMenu = new CreationMenu(); + + for (DropdownItem dropdownItem : + _getDropdownItems(fdsName, httpServletRequest)) { + + creationMenu.addPrimaryDropdownItem(dropdownItem); + } + + return creationMenu; + } + + private List _getDropdownItems( + String fdsName, HttpServletRequest httpServletRequest) { + + return TransformUtil.transform( + getCreationMenuObjectEntries(fdsName, httpServletRequest), + objectEntry -> { + Map properties = objectEntry.getProperties(); + + return DropdownItemBuilder.putData( + "disableHeader", + String.valueOf(Validator.isNull(properties.get("title"))) + ).putData( + "permissionKey", + String.valueOf(properties.get("permissionKey")) + ).putData( + "size", String.valueOf(properties.get("modalSize")) + ).putData( + "title", String.valueOf(properties.get("title")) + ).setHref( + properties.get("url") + ).setIcon( + String.valueOf(properties.get("icon")) + ).setLabel( + String.valueOf(properties.get("label")) + ).setTarget( + String.valueOf(properties.get("target")) + ).build(); + }); + } + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSItemsActionsSerializerImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSItemsActionsSerializerImpl.java new file mode 100644 index 00000000000000..675237decc17b2 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/CustomFDSItemsActionsSerializerImpl.java @@ -0,0 +1,71 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.action.FDSItemsActionsSerializer; +import com.liferay.frontend.data.set.internal.serializer.BaseCustomFDSSerializer; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.petra.function.transform.TransformUtil; +import com.liferay.portal.kernel.util.Validator; + +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.osgi.service.component.annotations.Component; + +/** + * @author Daniel Sanz + * @author Marko Cikos + */ +@Component( + property = "frontend.data.set.serializer.type=" + FDSSerializer.TYPE_CUSTOM, + service = FDSItemsActionsSerializer.class +) +public class CustomFDSItemsActionsSerializerImpl + extends BaseCustomFDSSerializer implements FDSItemsActionsSerializer { + + @Override + public List serialize( + String fdsName, HttpServletRequest httpServletRequest) { + + return TransformUtil.transform( + getItemsActionsObjectEntries(fdsName, httpServletRequest), + objectEntry -> { + Map properties = objectEntry.getProperties(); + + FDSActionDropdownItem fdsActionDropdownItem = + new FDSActionDropdownItem( + String.valueOf(properties.get("confirmationMessage")), + String.valueOf(properties.get("url")), + String.valueOf(properties.get("icon")), + objectEntry.getExternalReferenceCode(), + String.valueOf(properties.get("label")), + String.valueOf(properties.get("method")), + String.valueOf(properties.get("permissionKey")), + String.valueOf(properties.get("target"))); + + fdsActionDropdownItem.putData( + "disableHeader", + (boolean)Validator.isNull(properties.get("title"))); + fdsActionDropdownItem.putData( + "errorMessage", properties.get("errorMessage")); + fdsActionDropdownItem.putData( + "requestBody", properties.get("requestBody")); + fdsActionDropdownItem.putData( + "size", properties.get("modalSize")); + fdsActionDropdownItem.putData( + "status", properties.get("confirmationMessageType")); + fdsActionDropdownItem.putData( + "successMessage", properties.get("successMessage")); + + return fdsActionDropdownItem; + }); + } + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSBulkActionListRegistryImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSBulkActionsRegistryImpl.java similarity index 64% rename from modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSBulkActionListRegistryImpl.java rename to modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSBulkActionsRegistryImpl.java index c2e7dd23dc9001..fb25a6def08ea5 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSBulkActionListRegistryImpl.java +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSBulkActionsRegistryImpl.java @@ -5,8 +5,8 @@ package com.liferay.frontend.data.set.internal.action; -import com.liferay.frontend.data.set.action.FDSBulkActionList; -import com.liferay.frontend.data.set.action.FDSBulkActionListRegistry; +import com.liferay.frontend.data.set.action.FDSBulkActions; +import com.liferay.frontend.data.set.action.FDSBulkActionsRegistry; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; @@ -21,20 +21,19 @@ /** * @author Daniel Sanz */ -@Component(service = FDSBulkActionListRegistry.class) -public class FDSBulkActionListRegistryImpl - implements FDSBulkActionListRegistry { +@Component(service = FDSBulkActionsRegistry.class) +public class FDSBulkActionsRegistryImpl implements FDSBulkActionsRegistry { @Override - public FDSBulkActionList getFDSBulkActionList(String fdsName) { - ServiceTrackerCustomizerFactory.ServiceWrapper + public FDSBulkActions getFDSBulkActions(String fdsName) { + ServiceTrackerCustomizerFactory.ServiceWrapper serviceWrapper = _serviceTrackerMap.getService(fdsName); if (serviceWrapper == null) { if (_log.isDebugEnabled()) { _log.debug( - "No frontend data set bulk action list is associated " + - "with " + fdsName); + "No frontend data set bulk actions are associated with " + + fdsName); } return null; @@ -46,8 +45,8 @@ public FDSBulkActionList getFDSBulkActionList(String fdsName) { @Activate protected void activate(BundleContext bundleContext) { _serviceTrackerMap = ServiceTrackerMapFactory.openSingleValueMap( - bundleContext, FDSBulkActionList.class, "frontend.data.set.name", - ServiceTrackerCustomizerFactory.serviceWrapper( + bundleContext, FDSBulkActions.class, "frontend.data.set.name", + ServiceTrackerCustomizerFactory.serviceWrapper( bundleContext)); } @@ -57,11 +56,10 @@ protected void deactivate() { } private static final Log _log = LogFactoryUtil.getLog( - FDSBulkActionListRegistryImpl.class); + FDSBulkActionsRegistryImpl.class); private ServiceTrackerMap - > + > _serviceTrackerMap; } \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSItemActionListRegistryImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSItemsActionsRegistryImpl.java similarity index 65% rename from modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSItemActionListRegistryImpl.java rename to modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSItemsActionsRegistryImpl.java index a670d4bc729fae..e98cbae263cc6c 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSItemActionListRegistryImpl.java +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/FDSItemsActionsRegistryImpl.java @@ -5,8 +5,8 @@ package com.liferay.frontend.data.set.internal.action; -import com.liferay.frontend.data.set.action.FDSItemActionList; -import com.liferay.frontend.data.set.action.FDSItemActionListRegistry; +import com.liferay.frontend.data.set.action.FDSItemsActions; +import com.liferay.frontend.data.set.action.FDSItemsActionsRegistry; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; @@ -21,20 +21,19 @@ /** * @author Daniel Sanz */ -@Component(service = FDSItemActionListRegistry.class) -public class FDSItemActionListRegistryImpl - implements FDSItemActionListRegistry { +@Component(service = FDSItemsActionsRegistry.class) +public class FDSItemsActionsRegistryImpl implements FDSItemsActionsRegistry { @Override - public FDSItemActionList getFDSItemActionList(String fdsName) { - ServiceTrackerCustomizerFactory.ServiceWrapper + public FDSItemsActions getFDSItemsActions(String fdsName) { + ServiceTrackerCustomizerFactory.ServiceWrapper serviceWrapper = _serviceTrackerMap.getService(fdsName); if (serviceWrapper == null) { if (_log.isDebugEnabled()) { _log.debug( - "No frontend data set item action list is associated " + - "with " + fdsName); + "No frontend data set items actions are associated with " + + fdsName); } return null; @@ -46,8 +45,8 @@ public FDSItemActionList getFDSItemActionList(String fdsName) { @Activate protected void activate(BundleContext bundleContext) { _serviceTrackerMap = ServiceTrackerMapFactory.openSingleValueMap( - bundleContext, FDSItemActionList.class, "frontend.data.set.name", - ServiceTrackerCustomizerFactory.serviceWrapper( + bundleContext, FDSItemsActions.class, "frontend.data.set.name", + ServiceTrackerCustomizerFactory.serviceWrapper( bundleContext)); } @@ -57,11 +56,11 @@ protected void deactivate() { } private static final Log _log = LogFactoryUtil.getLog( - FDSItemActionListRegistryImpl.class); + FDSItemsActionsRegistryImpl.class); private ServiceTrackerMap > + ServiceTrackerCustomizerFactory.ServiceWrapper> _serviceTrackerMap; } \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSBulkActionsSerializerImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSBulkActionsSerializerImpl.java new file mode 100644 index 00000000000000..28ffbd8eded23a --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSBulkActionsSerializerImpl.java @@ -0,0 +1,49 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.action.FDSBulkActions; +import com.liferay.frontend.data.set.action.FDSBulkActionsRegistry; +import com.liferay.frontend.data.set.action.FDSBulkActionsSerializer; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; + +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * @author Daniel Sanz + */ +@Component( + property = "frontend.data.set.serializer.type=" + FDSSerializer.TYPE_SYSTEM, + service = FDSBulkActionsSerializer.class +) +public class SystemFDSBulkActionsSerializerImpl + implements FDSBulkActionsSerializer { + + @Override + public List serialize( + String fdsName, HttpServletRequest httpServletRequest) { + + FDSBulkActions fdsBulkActions = + _fdsBulkActionsRegistry.getFDSBulkActions(fdsName); + + if (fdsBulkActions == null) { + return Collections.emptyList(); + } + + return fdsBulkActions.getFDSActionDropdownItems(httpServletRequest); + } + + @Reference + private FDSBulkActionsRegistry _fdsBulkActionsRegistry; + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSCreationMenuSerializerImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSCreationMenuSerializerImpl.java new file mode 100644 index 00000000000000..8eba5958bc7d39 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSCreationMenuSerializerImpl.java @@ -0,0 +1,46 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.action.FDSCreationMenu; +import com.liferay.frontend.data.set.action.FDSCreationMenuRegistry; +import com.liferay.frontend.data.set.action.FDSCreationMenuSerializer; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; + +import javax.servlet.http.HttpServletRequest; + +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * @author Daniel Sanz + */ +@Component( + property = "frontend.data.set.serializer.type=" + FDSSerializer.TYPE_SYSTEM, + service = FDSCreationMenuSerializer.class +) +public class SystemFDSCreationMenuSerializerImpl + implements FDSCreationMenuSerializer { + + @Override + public CreationMenu serialize( + String fdsName, HttpServletRequest httpServletRequest) { + + FDSCreationMenu fdsCreationMenu = + _fdsCreationMenuRegistry.getFDSCreationMenu(fdsName); + + if (fdsCreationMenu == null) { + return new CreationMenu(); + } + + return fdsCreationMenu.getCreationMenu(httpServletRequest); + } + + @Reference + private FDSCreationMenuRegistry _fdsCreationMenuRegistry; + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSItemsActionsSerializerImpl.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSItemsActionsSerializerImpl.java new file mode 100644 index 00000000000000..5c6d8513193c5b --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/action/SystemFDSItemsActionsSerializerImpl.java @@ -0,0 +1,49 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.action.FDSItemsActions; +import com.liferay.frontend.data.set.action.FDSItemsActionsRegistry; +import com.liferay.frontend.data.set.action.FDSItemsActionsSerializer; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; + +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * @author Daniel Sanz + */ +@Component( + property = "frontend.data.set.serializer.type=" + FDSSerializer.TYPE_SYSTEM, + service = FDSItemsActionsSerializer.class +) +public class SystemFDSItemsActionsSerializerImpl + implements FDSItemsActionsSerializer { + + @Override + public List serialize( + String fdsName, HttpServletRequest httpServletRequest) { + + FDSItemsActions fdsItemsActions = + _fdsItemsActionsRegistry.getFDSItemsActions(fdsName); + + if (fdsItemsActions == null) { + return Collections.emptyList(); + } + + return fdsItemsActions.getFDSActionDropdownItems(httpServletRequest); + } + + @Reference + private FDSItemsActionsRegistry _fdsItemsActionsRegistry; + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/serializer/BaseCustomFDSSerializer.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/serializer/BaseCustomFDSSerializer.java index 394f729f1fe06a..8b406fbacf05b7 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/serializer/BaseCustomFDSSerializer.java +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/main/java/com/liferay/frontend/data/set/internal/serializer/BaseCustomFDSSerializer.java @@ -31,6 +31,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.TreeSet; import java.util.function.Predicate; @@ -44,6 +45,18 @@ */ public abstract class BaseCustomFDSSerializer { + public Set getCreationMenuObjectEntries( + String externalReferenceCode, HttpServletRequest httpServletRequest) { + + return _getSortedRelatedObjectEntries( + getDataSetObjectDefinition(httpServletRequest), + getDataSetObjectEntry(externalReferenceCode, httpServletRequest), + "creationActionsOrder", + (ObjectEntry objectEntry) -> Objects.equals( + _getType(objectEntry), "creation"), + "dataSetToDataSetActions"); + } + public ObjectDefinition getDataSetObjectDefinition( HttpServletRequest httpServletRequest) { @@ -82,6 +95,18 @@ public Set getDataSetTableSectionObjectEntries( "dataSetToDataSetTableSections"); } + public Set getItemsActionsObjectEntries( + String externalReferenceCode, HttpServletRequest httpServletRequest) { + + return _getSortedRelatedObjectEntries( + getDataSetObjectDefinition(httpServletRequest), + getDataSetObjectEntry(externalReferenceCode, httpServletRequest), + "itemActionsOrder", + (ObjectEntry objectEntry) -> Objects.equals( + _getType(objectEntry), "item"), + "dataSetToDataSetActions"); + } + @Reference protected ObjectDefinitionLocalService dataSetObjectDefinitionLocalService; @@ -193,6 +218,12 @@ private Set _getSortedRelatedObjectEntries( return objectEntries; } + private String _getType(ObjectEntry objectEntry) { + Map properties = objectEntry.getProperties(); + + return GetterUtil.getString(properties.get("type")); + } + private static final Log _log = LogFactoryUtil.getLog( BaseCustomFDSSerializer.class); diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/BaseSystemFDSSerializerTestCase.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/BaseSystemFDSSerializerTestCase.java new file mode 100644 index 00000000000000..6a622900cae5be --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/BaseSystemFDSSerializerTestCase.java @@ -0,0 +1,112 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal; + +import com.liferay.frontend.data.set.SystemFDSEntry; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; +import com.liferay.portal.kernel.module.util.SystemBundleUtil; +import com.liferay.portal.kernel.test.ReflectionTestUtil; +import com.liferay.portal.kernel.util.MapUtil; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.After; +import org.junit.Before; + +import org.mockito.Mockito; + +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; + +/** + * @author Daniel Sanz + */ +public abstract class BaseSystemFDSSerializerTestCase { + + @Before + public void setUp() throws Exception { + bundleContext = SystemBundleUtil.getBundleContext(); + + systemFDSEntryserviceTrackerMap = + ServiceTrackerMapFactory.openSingleValueMap( + bundleContext, SystemFDSEntry.class, "frontend.data.set.name"); + + ReflectionTestUtil.setFieldValue( + systemFDSEntryRegistryImpl, "_serviceTrackerMap", + systemFDSEntryserviceTrackerMap); + } + + @After + public void tearDown() { + systemFDSEntryserviceTrackerMap.close(); + } + + protected ServiceRegistration registerSystemFDSEntry( + String fdsName, String restApplication, String restEndpoint, + String restSchema) { + + return registerSystemFDSEntry( + null, fdsName, restApplication, restEndpoint, restSchema); + } + + protected ServiceRegistration registerSystemFDSEntry( + String additionalURLParameters, String fdsName, String restApplication, + String restEndpoint, String restSchema) { + + return bundleContext.registerService( + SystemFDSEntry.class, + new SystemFDSEntry() { + + @Override + public String getAdditionalAPIURLParameters() { + return additionalURLParameters; + } + + @Override + public String getDescription() { + return ""; + } + + @Override + public String getName() { + return fdsName; + } + + @Override + public String getRESTApplication() { + return restApplication; + } + + @Override + public String getRESTEndpoint() { + return restEndpoint; + } + + @Override + public String getRESTSchema() { + return restSchema; + } + + @Override + public String getTitle() { + return ""; + } + + }, + MapUtil.singletonDictionary("frontend.data.set.name", fdsName)); + } + + protected static BundleContext bundleContext = + SystemBundleUtil.getBundleContext(); + protected static final HttpServletRequest httpServletRequest = Mockito.mock( + HttpServletRequest.class); + protected static final SystemFDSEntryRegistryImpl + systemFDSEntryRegistryImpl = new SystemFDSEntryRegistryImpl(); + protected static ServiceTrackerMap + systemFDSEntryserviceTrackerMap; + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/CustomFDSCreationMenuSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/CustomFDSCreationMenuSerializerImplTest.java new file mode 100644 index 00000000000000..5e5f362373675e --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/CustomFDSCreationMenuSerializerImplTest.java @@ -0,0 +1,179 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.internal.serializer.BaseCustomFDSSerializer; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItem; +import com.liferay.object.rest.dto.v1_0.ObjectEntry; +import com.liferay.portal.kernel.util.ArrayUtil; +import com.liferay.portal.kernel.util.HashMapBuilder; +import com.liferay.portal.test.rule.LiferayUnitTestRule; + +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import org.mockito.Mockito; + +/** + * @author Daniel Sanz + */ +public class CustomFDSCreationMenuSerializerImplTest { + + @ClassRule + @Rule + public static final LiferayUnitTestRule liferayUnitTestRule = + LiferayUnitTestRule.INSTANCE; + + @Before + public void setUp() throws Exception { + _resetSerializer(); + } + + @Test + public void testSerialize() throws Exception { + + // Different creation menu + + _mockFDSCreationMenu("fdsName1", new String[] {"New 1.1", "New 1.2"}); + _mockFDSCreationMenu("fdsName2", new String[] {"New 2"}); + + CreationMenu creationMenu1 = _fdsSerializer.serialize( + "fdsName1", _httpServletRequest); + + Assert.assertEquals(2, _getPrimaryItemsSize(creationMenu1)); + Assert.assertFalse(_containsTitle(creationMenu1, "New 2")); + Assert.assertTrue(_containsTitle(creationMenu1, "New 1.1")); + Assert.assertTrue(_containsTitle(creationMenu1, "New 1.2")); + + CreationMenu creationMenu2 = _fdsSerializer.serialize( + "fdsName2", _httpServletRequest); + + Assert.assertEquals(1, _getPrimaryItemsSize(creationMenu2)); + Assert.assertFalse(_containsTitle(creationMenu2, "New 1.1")); + Assert.assertFalse(_containsTitle(creationMenu2, "New 1.2")); + Assert.assertTrue(_containsTitle(creationMenu2, "New 2")); + + _resetSerializer(); + + // No creation menu + + _mockFDSCreationMenu("fdsName", null); + + Assert.assertTrue( + _fdsSerializer.serialize( + "fdsName", _httpServletRequest + ).isEmpty()); + + _resetSerializer(); + + // Shared creation menu + + String[] titles = {"New A", "New B"}; + + _testSerialize("fdsName1", titles); + _testSerialize("fdsName2", titles); + } + + private boolean _containsTitle(CreationMenu creationMenu, String title) { + for (DropdownItem dropdownItem : + (List)creationMenu.get("primaryItems")) { + + Map data = (Map)dropdownItem.get( + "data"); + + if (title.equals((String)data.get("title"))) { + return true; + } + } + + return false; + } + + private int _getPrimaryItemsSize(CreationMenu creationMenu) { + List dropdownItems = (List)creationMenu.get( + "primaryItems"); + + return dropdownItems.size(); + } + + private void _mockFDSCreationMenu(String fdsName, String[] titles) { + Mockito.when( + _fdsSerializer.serialize(fdsName, _httpServletRequest) + ).thenCallRealMethod(); + + BaseCustomFDSSerializer baseCustomFDSSerializer = + (BaseCustomFDSSerializer)_fdsSerializer; + + if (ArrayUtil.isEmpty(titles)) { + Mockito.when( + baseCustomFDSSerializer.getCreationMenuObjectEntries( + fdsName, _httpServletRequest) + ).thenReturn( + Collections.emptySet() + ); + + return; + } + + Set objectEntries = new HashSet<>(); + + for (String title : titles) { + ObjectEntry objectEntry = new ObjectEntry(); + + objectEntry.setProperties( + HashMapBuilder.put( + "title", (Object)title + ).build()); + + objectEntries.add(objectEntry); + } + + Mockito.when( + baseCustomFDSSerializer.getCreationMenuObjectEntries( + fdsName, _httpServletRequest) + ).thenReturn( + objectEntries + ); + } + + private void _resetSerializer() { + _fdsSerializer = Mockito.mock( + CustomFDSCreationMenuSerializerImpl.class); + } + + private void _testSerialize(String fdsName, String[] titles) + throws Exception { + + _mockFDSCreationMenu(fdsName, titles); + + CreationMenu creationMenu = _fdsSerializer.serialize( + fdsName, _httpServletRequest); + + for (String title : titles) { + Assert.assertTrue(_containsTitle(creationMenu, title)); + } + + Assert.assertEquals(titles.length, _getPrimaryItemsSize(creationMenu)); + } + + private static FDSSerializer _fdsSerializer; + private static final HttpServletRequest _httpServletRequest = Mockito.mock( + HttpServletRequest.class); + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/CustomFDSItemsActionsSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/CustomFDSItemsActionsSerializerImplTest.java new file mode 100644 index 00000000000000..f89cbb372cd746 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/CustomFDSItemsActionsSerializerImplTest.java @@ -0,0 +1,168 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.internal.serializer.BaseCustomFDSSerializer; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItem; +import com.liferay.object.rest.dto.v1_0.ObjectEntry; +import com.liferay.portal.kernel.util.ArrayUtil; +import com.liferay.portal.kernel.util.HashMapBuilder; +import com.liferay.portal.test.rule.LiferayUnitTestRule; + +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import org.mockito.Mockito; + +/** + * @author Daniel Sanz + */ +public class CustomFDSItemsActionsSerializerImplTest { + + @ClassRule + @Rule + public static final LiferayUnitTestRule liferayUnitTestRule = + LiferayUnitTestRule.INSTANCE; + + @Before + public void setUp() throws Exception { + _resetSerializer(); + } + + @Test + public void testSerialize() throws Exception { + + // Different items actions + + _mockFDSItemsActions("fdsName1", new String[] {"New 1.1", "New 1.2"}); + _mockFDSItemsActions("fdsName2", new String[] {"New 2"}); + + List fdsActionDropdownItems1 = + _fdsSerializer.serialize("fdsName1", _httpServletRequest); + + Assert.assertFalse(_containsLabel(fdsActionDropdownItems1, "New 2")); + Assert.assertTrue(fdsActionDropdownItems1.size() == 2); + Assert.assertTrue(_containsLabel(fdsActionDropdownItems1, "New 1.1")); + Assert.assertTrue(_containsLabel(fdsActionDropdownItems1, "New 1.2")); + + List fdsActionDropdownItems2 = + _fdsSerializer.serialize("fdsName2", _httpServletRequest); + + Assert.assertFalse(_containsLabel(fdsActionDropdownItems2, "New 1.1")); + Assert.assertFalse(_containsLabel(fdsActionDropdownItems2, "New 1.2")); + Assert.assertTrue(fdsActionDropdownItems2.size() == 1); + Assert.assertTrue(_containsLabel(fdsActionDropdownItems2, "New 2")); + + _resetSerializer(); + + // No items actions + + _mockFDSItemsActions("fdsName", null); + + Assert.assertTrue( + _fdsSerializer.serialize( + "fdsName", _httpServletRequest + ).isEmpty()); + + _resetSerializer(); + + // Shared items actions + + String[] labels = {"New A", "New B"}; + + _testSerialize("fdsName1", labels); + _testSerialize("fdsName2", labels); + } + + private boolean _containsLabel( + List fdsActionDropdownItems, String label) { + + for (DropdownItem dropdownItem : fdsActionDropdownItems) { + if (label.equals((String)dropdownItem.get("label"))) { + return true; + } + } + + return false; + } + + private void _mockFDSItemsActions(String fdsName, String[] labels) { + Mockito.when( + _fdsSerializer.serialize(fdsName, _httpServletRequest) + ).thenCallRealMethod(); + + BaseCustomFDSSerializer baseCustomFDSSerializer = + (BaseCustomFDSSerializer)_fdsSerializer; + + if (ArrayUtil.isEmpty(labels)) { + Mockito.when( + baseCustomFDSSerializer.getItemsActionsObjectEntries( + fdsName, _httpServletRequest) + ).thenReturn( + Collections.emptySet() + ); + + return; + } + + Set objectEntries = new HashSet<>(); + + for (String label : labels) { + ObjectEntry objectEntry = new ObjectEntry(); + + objectEntry.setProperties( + HashMapBuilder.put( + "label", (Object)label + ).build()); + + objectEntries.add(objectEntry); + } + + Mockito.when( + baseCustomFDSSerializer.getItemsActionsObjectEntries( + fdsName, _httpServletRequest) + ).thenReturn( + objectEntries + ); + } + + private void _resetSerializer() throws Exception { + _fdsSerializer = Mockito.mock( + CustomFDSItemsActionsSerializerImpl.class); + } + + private void _testSerialize(String fdsName, String[] labels) + throws Exception { + + _mockFDSItemsActions(fdsName, labels); + + List fdsActionDropdownItems = + _fdsSerializer.serialize(fdsName, _httpServletRequest); + + for (String label : labels) { + Assert.assertTrue(_containsLabel(fdsActionDropdownItems, label)); + } + + Assert.assertTrue(labels.length == fdsActionDropdownItems.size()); + } + + private static FDSSerializer> _fdsSerializer; + private static final HttpServletRequest _httpServletRequest = Mockito.mock( + HttpServletRequest.class); + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSBulkActionsSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSBulkActionsSerializerImplTest.java new file mode 100644 index 00000000000000..698ea4a29e220e --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSBulkActionsSerializerImplTest.java @@ -0,0 +1,182 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.SystemFDSEntry; +import com.liferay.frontend.data.set.action.FDSBulkActions; +import com.liferay.frontend.data.set.internal.BaseSystemFDSSerializerTestCase; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; +import com.liferay.portal.kernel.test.ReflectionTestUtil; +import com.liferay.portal.kernel.util.ListUtil; +import com.liferay.portal.kernel.util.MapUtil; +import com.liferay.portal.test.rule.LiferayUnitTestRule; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import org.osgi.framework.ServiceRegistration; + +/** + * @author Daniel Sanz + */ +public class SystemFDSBulkActionsSerializerImplTest + extends BaseSystemFDSSerializerTestCase { + + @ClassRule + @Rule + public static final LiferayUnitTestRule liferayUnitTestRule = + LiferayUnitTestRule.INSTANCE; + + @Before + public void setUp() throws Exception { + super.setUp(); + + _bulkActionsServiceTrackerMap = + ServiceTrackerMapFactory.openSingleValueMap( + bundleContext, FDSBulkActions.class, "frontend.data.set.name", + ServiceTrackerCustomizerFactory.serviceWrapper( + bundleContext)); + + ReflectionTestUtil.setFieldValue( + _fdsBulkActionsRegistryImpl, "_serviceTrackerMap", + _bulkActionsServiceTrackerMap); + + ReflectionTestUtil.setFieldValue( + _fdsSerializer, "_fdsBulkActionsRegistry", + _fdsBulkActionsRegistryImpl); + } + + @After + public void tearDown() { + super.tearDown(); + + _bulkActionsServiceTrackerMap.close(); + } + + @Test + public void testSerialize() throws Exception { + + // Different bulk actions + + ServiceRegistration systemFDSEntryServiceRegistration1 = + registerSystemFDSEntry("fdsName1", "/app", "/endpoint", "schema"); + + List fdsActionDropdownItems1 = + ListUtil.fromArray( + new FDSActionDropdownItem( + null, "trash", "delete", "delete", "delete", "delete", + "headless")); + + ServiceRegistration bulkActionsServiceRegistration1 = + _registerFDSBulkActions(fdsActionDropdownItems1, "fdsName1"); + + Assert.assertEquals( + fdsActionDropdownItems1, + _fdsSerializer.serialize("fdsName1", httpServletRequest)); + + ServiceRegistration systemFDSEntryServiceRegistration2 = + registerSystemFDSEntry("fdsName2", "/app", "/endpoint", "schema"); + + List fdsActionDropdownItems2 = + ListUtil.fromArray( + new FDSActionDropdownItem( + null, "cog", "permissions", "permissions", "get", + "permissions", "modal-permissions")); + + ServiceRegistration bulkActionsServiceRegistration2 = + _registerFDSBulkActions(fdsActionDropdownItems2, "fdsName2"); + + Assert.assertEquals( + fdsActionDropdownItems2, + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + Assert.assertNotEquals( + _fdsSerializer.serialize("fdsName1", httpServletRequest), + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + bulkActionsServiceRegistration1.unregister(); + bulkActionsServiceRegistration2.unregister(); + systemFDSEntryServiceRegistration1.unregister(); + systemFDSEntryServiceRegistration2.unregister(); + + // No bulk actions + + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( + "fdsName", "/app", "/endpoint", "schema"); + + Assert.assertTrue( + _fdsSerializer.serialize( + "fdsName", httpServletRequest + ).isEmpty()); + + systemFDSEntryServiceRegistration1.unregister(); + + // Shared bulk actions + + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( + "fdsName1", "/app", "/endpoint", "schema"); + systemFDSEntryServiceRegistration2 = registerSystemFDSEntry( + "fdsName2", "/app", "/endpoint", "schema"); + + fdsActionDropdownItems1 = ListUtil.fromArray( + new FDSActionDropdownItem( + null, "trash", "delete", "delete", "delete", "delete", + "headless")); + + bulkActionsServiceRegistration1 = _registerFDSBulkActions( + fdsActionDropdownItems1, "fdsName1"); + bulkActionsServiceRegistration2 = _registerFDSBulkActions( + fdsActionDropdownItems1, "fdsName2"); + + Assert.assertEquals( + _fdsSerializer.serialize("fdsName1", httpServletRequest), + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + bulkActionsServiceRegistration1.unregister(); + bulkActionsServiceRegistration2.unregister(); + systemFDSEntryServiceRegistration1.unregister(); + systemFDSEntryServiceRegistration2.unregister(); + } + + private ServiceRegistration _registerFDSBulkActions( + List fdsActionDropdownItems, String fdsName) { + + return bundleContext.registerService( + FDSBulkActions.class, + new FDSBulkActions() { + + @Override + public List getFDSActionDropdownItems( + HttpServletRequest httpServletRequest) { + + return fdsActionDropdownItems; + } + + }, + MapUtil.singletonDictionary("frontend.data.set.name", fdsName)); + } + + private static ServiceTrackerMap + > + _bulkActionsServiceTrackerMap; + private static final FDSBulkActionsRegistryImpl + _fdsBulkActionsRegistryImpl = new FDSBulkActionsRegistryImpl(); + private static final FDSSerializer> + _fdsSerializer = new SystemFDSBulkActionsSerializerImpl(); + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSCreationMenuSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSCreationMenuSerializerImplTest.java new file mode 100644 index 00000000000000..73916eb53faaf9 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSCreationMenuSerializerImplTest.java @@ -0,0 +1,183 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.SystemFDSEntry; +import com.liferay.frontend.data.set.action.FDSCreationMenu; +import com.liferay.frontend.data.set.internal.BaseSystemFDSSerializerTestCase; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenuBuilder; +import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItemBuilder; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; +import com.liferay.portal.kernel.test.ReflectionTestUtil; +import com.liferay.portal.kernel.util.MapUtil; +import com.liferay.portal.test.rule.LiferayUnitTestRule; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import org.osgi.framework.ServiceRegistration; + +/** + * @author Daniel Sanz + */ +public class SystemFDSCreationMenuSerializerImplTest + extends BaseSystemFDSSerializerTestCase { + + @ClassRule + @Rule + public static final LiferayUnitTestRule liferayUnitTestRule = + LiferayUnitTestRule.INSTANCE; + + @Before + public void setUp() throws Exception { + super.setUp(); + + _creationMenuServiceTrackerMap = + ServiceTrackerMapFactory.openSingleValueMap( + bundleContext, FDSCreationMenu.class, "frontend.data.set.name", + ServiceTrackerCustomizerFactory.serviceWrapper( + bundleContext)); + + ReflectionTestUtil.setFieldValue( + _fdsCreationMenuRegistryImpl, "_serviceTrackerMap", + _creationMenuServiceTrackerMap); + + ReflectionTestUtil.setFieldValue( + _fdsSerializer, "_fdsCreationMenuRegistry", + _fdsCreationMenuRegistryImpl); + } + + @After + public void tearDown() { + super.tearDown(); + + _creationMenuServiceTrackerMap.close(); + } + + @Test + public void testSerialize() throws Exception { + + // Different creation menu + + ServiceRegistration systemFDSEntryServiceRegistration1 = + registerSystemFDSEntry("fdsName1", "/app", "/endpoint", "schema"); + + CreationMenu creationMenu1 = CreationMenuBuilder.addDropdownItem( + DropdownItemBuilder.setIcon( + "times" + ).build() + ).build(); + + ServiceRegistration creationMenuServiceRegistration1 = + _registerFDSCreationMenu(creationMenu1, "fdsName1"); + + Assert.assertEquals( + creationMenu1, + _fdsSerializer.serialize("fdsName1", httpServletRequest)); + + ServiceRegistration systemFDSEntryServiceRegistration2 = + registerSystemFDSEntry("fdsName2", "/app", "/endpoint", "schema"); + + CreationMenu creationMenu2 = CreationMenuBuilder.addDropdownItem( + DropdownItemBuilder.setIcon( + "cog" + ).build() + ).build(); + + ServiceRegistration creationMenuServiceRegistration2 = + _registerFDSCreationMenu(creationMenu2, "fdsName2"); + + Assert.assertEquals( + creationMenu2, + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + Assert.assertNotEquals( + _fdsSerializer.serialize("fdsName1", httpServletRequest), + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + creationMenuServiceRegistration1.unregister(); + creationMenuServiceRegistration2.unregister(); + systemFDSEntryServiceRegistration1.unregister(); + systemFDSEntryServiceRegistration2.unregister(); + + // No creation menu + + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( + "fdsName", "/app", "/endpoint", "schema"); + + Assert.assertTrue( + _fdsSerializer.serialize( + "fdsName", httpServletRequest + ).isEmpty()); + + systemFDSEntryServiceRegistration1.unregister(); + + // Shared creation menu + + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( + "fdsName1", "/app", "/endpoint", "schema"); + systemFDSEntryServiceRegistration2 = registerSystemFDSEntry( + "fdsName2", "/app", "/endpoint", "schema"); + + creationMenu1 = CreationMenuBuilder.addDropdownItem( + DropdownItemBuilder.setIcon( + "times" + ).build() + ).build(); + + creationMenuServiceRegistration1 = _registerFDSCreationMenu( + creationMenu1, "fdsName1"); + creationMenuServiceRegistration2 = _registerFDSCreationMenu( + creationMenu1, "fdsName2"); + + Assert.assertEquals( + _fdsSerializer.serialize("fdsName1", httpServletRequest), + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + creationMenuServiceRegistration1.unregister(); + creationMenuServiceRegistration2.unregister(); + systemFDSEntryServiceRegistration1.unregister(); + systemFDSEntryServiceRegistration2.unregister(); + } + + private ServiceRegistration _registerFDSCreationMenu( + CreationMenu creationMenu, String fdsName) { + + return bundleContext.registerService( + FDSCreationMenu.class, + new FDSCreationMenu() { + + @Override + public CreationMenu getCreationMenu( + HttpServletRequest httpServletRequest) { + + return creationMenu; + } + + }, + MapUtil.singletonDictionary("frontend.data.set.name", fdsName)); + } + + private static ServiceTrackerMap + > + _creationMenuServiceTrackerMap; + private static final FDSCreationMenuRegistryImpl + _fdsCreationMenuRegistryImpl = new FDSCreationMenuRegistryImpl(); + private static final FDSSerializer _fdsSerializer = + new SystemFDSCreationMenuSerializerImpl(); + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSItemsActionsSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSItemsActionsSerializerImplTest.java new file mode 100644 index 00000000000000..23c893300201a7 --- /dev/null +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/action/SystemFDSItemsActionsSerializerImplTest.java @@ -0,0 +1,183 @@ +/** + * SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com + * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 + */ + +package com.liferay.frontend.data.set.internal.action; + +import com.liferay.frontend.data.set.SystemFDSEntry; +import com.liferay.frontend.data.set.action.FDSItemsActions; +import com.liferay.frontend.data.set.internal.BaseSystemFDSSerializerTestCase; +import com.liferay.frontend.data.set.model.FDSActionDropdownItem; +import com.liferay.frontend.data.set.serializer.FDSSerializer; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; +import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; +import com.liferay.portal.kernel.test.ReflectionTestUtil; +import com.liferay.portal.kernel.util.ListUtil; +import com.liferay.portal.kernel.util.MapUtil; +import com.liferay.portal.test.rule.LiferayUnitTestRule; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import org.osgi.framework.ServiceRegistration; + +/** + * @author Daniel Sanz + */ +public class SystemFDSItemsActionsSerializerImplTest + extends BaseSystemFDSSerializerTestCase { + + @ClassRule + @Rule + public static final LiferayUnitTestRule liferayUnitTestRule = + LiferayUnitTestRule.INSTANCE; + + @Before + public void setUp() throws Exception { + super.setUp(); + + _itemsActionsServiceTrackerMap = + ServiceTrackerMapFactory.openSingleValueMap( + bundleContext, FDSItemsActions.class, "frontend.data.set.name", + ServiceTrackerCustomizerFactory.serviceWrapper( + bundleContext)); + + ReflectionTestUtil.setFieldValue( + _fdsItemsActionsRegistryImpl, "_serviceTrackerMap", + _itemsActionsServiceTrackerMap); + + ReflectionTestUtil.setFieldValue( + _fdsSerializer, "_fdsItemsActionsRegistry", + _fdsItemsActionsRegistryImpl); + } + + @After + public void tearDown() { + super.tearDown(); + + _itemsActionsServiceTrackerMap.close(); + } + + @Test + public void testSerialize() throws Exception { + + // Different items actions + + ServiceRegistration systemFDSEntryServiceRegistration1 = + registerSystemFDSEntry("fdsName1", "/app", "/endpoint", "schema"); + + List fdsActionDropdownItems1 = + ListUtil.fromArray( + new FDSActionDropdownItem( + null, "trash", "delete", "delete", "delete", "delete", + "headless")); + + ServiceRegistration itemsActionsServiceRegistration1 = + _registerFDSItemsActions(fdsActionDropdownItems1, "fdsName1"); + + Assert.assertEquals( + fdsActionDropdownItems1, + _fdsSerializer.serialize("fdsName1", httpServletRequest)); + + ServiceRegistration systemFDSEntryServiceRegistration2 = + registerSystemFDSEntry("fdsName2", "/app", "/endpoint", "schema"); + + List fdsActionDropdownItems2 = + ListUtil.fromArray( + new FDSActionDropdownItem( + null, "cog", "permissions", "permissions", "get", + "permissions", "modal-permissions")); + + ServiceRegistration itemsActionsServiceRegistration2 = + _registerFDSItemsActions(fdsActionDropdownItems2, "fdsName2"); + + Assert.assertEquals( + fdsActionDropdownItems2, + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + Assert.assertNotEquals( + _fdsSerializer.serialize("fdsName1", httpServletRequest), + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + itemsActionsServiceRegistration1.unregister(); + itemsActionsServiceRegistration2.unregister(); + systemFDSEntryServiceRegistration1.unregister(); + systemFDSEntryServiceRegistration2.unregister(); + + // No items actions + + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( + "fdsName", "/app", "/endpoint", "schema"); + + Assert.assertTrue( + _fdsSerializer.serialize( + "fdsName", httpServletRequest + ).isEmpty()); + + systemFDSEntryServiceRegistration1.unregister(); + + // Shared items actions + + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( + "fdsName1", "/app", "/endpoint", "schema"); + systemFDSEntryServiceRegistration2 = registerSystemFDSEntry( + "fdsName2", "/app", "/endpoint", "schema"); + + fdsActionDropdownItems1 = ListUtil.fromArray( + new FDSActionDropdownItem( + null, "trash", "delete", "delete", "delete", "delete", + "headless")); + + itemsActionsServiceRegistration1 = _registerFDSItemsActions( + fdsActionDropdownItems1, "fdsName1"); + itemsActionsServiceRegistration2 = _registerFDSItemsActions( + fdsActionDropdownItems1, "fdsName2"); + + Assert.assertEquals( + _fdsSerializer.serialize("fdsName1", httpServletRequest), + _fdsSerializer.serialize("fdsName2", httpServletRequest)); + + itemsActionsServiceRegistration1.unregister(); + itemsActionsServiceRegistration2.unregister(); + systemFDSEntryServiceRegistration1.unregister(); + systemFDSEntryServiceRegistration2.unregister(); + } + + private ServiceRegistration _registerFDSItemsActions( + List fdsActionDropdownItems, String fdsName) { + + return bundleContext.registerService( + FDSItemsActions.class, + new FDSItemsActions() { + + @Override + public List getFDSActionDropdownItems( + HttpServletRequest httpServletRequest) { + + return fdsActionDropdownItems; + } + + }, + MapUtil.singletonDictionary("frontend.data.set.name", fdsName)); + } + + private static final FDSItemsActionsRegistryImpl + _fdsItemsActionsRegistryImpl = new FDSItemsActionsRegistryImpl(); + private static final FDSSerializer> + _fdsSerializer = new SystemFDSItemsActionsSerializerImpl(); + private static ServiceTrackerMap + > + _itemsActionsServiceTrackerMap; + +} \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/CustomFDSAPIURLSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/CustomFDSAPIURLSerializerImplTest.java index 055dab4cd9210f..4f3ee7c6007788 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/CustomFDSAPIURLSerializerImplTest.java +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/CustomFDSAPIURLSerializerImplTest.java @@ -6,6 +6,7 @@ package com.liferay.frontend.data.set.internal.url; import com.liferay.frontend.data.set.internal.serializer.BaseCustomFDSSerializer; +import com.liferay.frontend.data.set.serializer.FDSSerializer; import com.liferay.frontend.data.set.url.FDSAPIURLResolver; import com.liferay.frontend.data.set.url.FDSAPIURLResolverRegistry; import com.liferay.object.rest.dto.v1_0.ObjectEntry; @@ -104,8 +105,7 @@ public void testSerialize() throws Exception { Assert.assertEquals( "/o/app/endpoint/bar", - _customFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest)); + _fdsSerializer.serialize("fdsName", _httpServletRequest)); serviceRegistration.unregister(); @@ -121,12 +121,10 @@ public void testSerialize() throws Exception { Assert.assertEquals( "/o/app1/endpoint/bar", - _customFDSAPIURLSerializerImpl.serialize( - "fdsName1", _httpServletRequest)); + _fdsSerializer.serialize("fdsName1", _httpServletRequest)); Assert.assertEquals( "/o/app2/endpoint/{foo}", - _customFDSAPIURLSerializerImpl.serialize( - "fdsName2", _httpServletRequest)); + _fdsSerializer.serialize("fdsName2", _httpServletRequest)); serviceRegistration.unregister(); @@ -142,12 +140,10 @@ public void testSerialize() throws Exception { Assert.assertEquals( "/o/app/endpoint/bar", - _customFDSAPIURLSerializerImpl.serialize( - "fdsName1", _httpServletRequest)); + _fdsSerializer.serialize("fdsName1", _httpServletRequest)); Assert.assertEquals( "/o/app/endpoint/bar", - _customFDSAPIURLSerializerImpl.serialize( - "fdsName2", _httpServletRequest)); + _fdsSerializer.serialize("fdsName2", _httpServletRequest)); serviceRegistration.unregister(); @@ -161,8 +157,7 @@ public void testSerialize() throws Exception { Assert.assertEquals( "/o/app/endpoint?nestedFields=creator", - _customFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest)); + _fdsSerializer.serialize("fdsName", _httpServletRequest)); _resetSerializer(); @@ -172,8 +167,7 @@ public void testSerialize() throws Exception { "fdsName", new String[] {"creator.name", "status.id"}, "/app", "/endpoint", "schema"); - String url = _customFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest); + String url = _fdsSerializer.serialize("fdsName", _httpServletRequest); Assert.assertTrue(url.startsWith("/o/app/endpoint?")); @@ -194,8 +188,7 @@ public void testSerialize() throws Exception { new String[] {"creator.name", "status.id", "relation.creator.name"}, "/app", "/endpoint", "schema"); - url = _customFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest); + url = _fdsSerializer.serialize("fdsName", _httpServletRequest); Assert.assertTrue(url.startsWith("/o/app/endpoint?")); @@ -257,12 +250,11 @@ private void _mockFDSObjectEntry( String restEndpoint, String restSchema) { Mockito.when( - _customFDSAPIURLSerializerImpl.serialize( - fdsName, _httpServletRequest) + _fdsSerializer.serialize(fdsName, _httpServletRequest) ).thenCallRealMethod(); BaseCustomFDSSerializer baseCustomFDSSerializer = - (BaseCustomFDSSerializer)_customFDSAPIURLSerializerImpl; + (BaseCustomFDSSerializer)_fdsSerializer; Mockito.when( baseCustomFDSSerializer.getDataSetObjectEntryProperties( @@ -337,11 +329,10 @@ public String resolve( } private void _resetSerializer() { - _customFDSAPIURLSerializerImpl = Mockito.mock( - CustomFDSAPIURLSerializerImpl.class); + _fdsSerializer = Mockito.mock(CustomFDSAPIURLSerializerImpl.class); ReflectionTestUtil.setFieldValue( - _customFDSAPIURLSerializerImpl, "_fdsAPIURLBuilderFactory", + _fdsSerializer, "_fdsAPIURLBuilderFactory", _fdsAPIURLBuilderFactoryImpl); } @@ -349,11 +340,11 @@ private void _resetSerializer() { CustomFDSAPIURLSerializerImplTest.class); private static BundleContext _bundleContext; - private static CustomFDSAPIURLSerializerImpl _customFDSAPIURLSerializerImpl; private static final FDSAPIURLBuilderFactoryImpl _fdsAPIURLBuilderFactoryImpl = new FDSAPIURLBuilderFactoryImpl(); private static final FDSAPIURLResolverRegistry _fdsAPIURLResolverRegistry = new FDSAPIURLResolverRegistryImpl(); + private static FDSSerializer _fdsSerializer; private static final HttpServletRequest _httpServletRequest = Mockito.mock( HttpServletRequest.class); private static ServiceTrackerMap> diff --git a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/SystemFDSAPIURLSerializerImplTest.java b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/SystemFDSAPIURLSerializerImplTest.java index 8e96eca5808b15..372fa57cbc227b 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/SystemFDSAPIURLSerializerImplTest.java +++ b/modules/apps/frontend-data-set/frontend-data-set-impl/src/test/java/com/liferay/frontend/data/set/internal/url/SystemFDSAPIURLSerializerImplTest.java @@ -6,7 +6,8 @@ package com.liferay.frontend.data.set.internal.url; import com.liferay.frontend.data.set.SystemFDSEntry; -import com.liferay.frontend.data.set.internal.SystemFDSEntryRegistryImpl; +import com.liferay.frontend.data.set.internal.BaseSystemFDSSerializerTestCase; +import com.liferay.frontend.data.set.serializer.FDSSerializer; import com.liferay.frontend.data.set.url.FDSAPIURLResolver; import com.liferay.frontend.data.set.url.FDSAPIURLResolverRegistry; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory; @@ -14,7 +15,6 @@ import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap; import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory; import com.liferay.portal.kernel.exception.PortalException; -import com.liferay.portal.kernel.module.util.SystemBundleUtil; import com.liferay.portal.kernel.test.ReflectionTestUtil; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.MapUtil; @@ -33,13 +33,13 @@ import org.mockito.Mockito; -import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; /** * @author Daniel Sanz */ -public class SystemFDSAPIURLSerializerImplTest { +public class SystemFDSAPIURLSerializerImplTest + extends BaseSystemFDSSerializerTestCase { @ClassRule @Rule @@ -48,7 +48,7 @@ public class SystemFDSAPIURLSerializerImplTest { @Before public void setUp() throws Exception { - _bundleContext = SystemBundleUtil.getBundleContext(); + super.setUp(); ReflectionTestUtil.setFieldValue( _fdsAPIURLBuilderFactoryImpl, "_fdsAPIURLResolverRegistry", @@ -56,10 +56,10 @@ public void setUp() throws Exception { _fdsAPIURLResolverServiceTrackerMap = ServiceTrackerMapFactory.openSingleValueMap( - _bundleContext, FDSAPIURLResolver.class, + bundleContext, FDSAPIURLResolver.class, "fds.rest.application.key", ServiceTrackerCustomizerFactory. - serviceWrapper(_bundleContext)); + serviceWrapper(bundleContext)); ReflectionTestUtil.setFieldValue( _fdsAPIURLResolverRegistry, "_serviceTrackerMap", @@ -68,35 +68,28 @@ public void setUp() throws Exception { ThemeDisplay themeDisplay = Mockito.mock(ThemeDisplay.class); Mockito.when( - _httpServletRequest.getAttribute(WebKeys.THEME_DISPLAY) + httpServletRequest.getAttribute(WebKeys.THEME_DISPLAY) ).thenReturn( themeDisplay ); ReflectionTestUtil.setFieldValue( - _systemFDSAPIURLSerializerImpl, "_fdsAPIURLBuilderFactory", + _fdsSerializer, "_fdsAPIURLBuilderFactory", _fdsAPIURLBuilderFactoryImpl); ReflectionTestUtil.setFieldValue( - _systemFDSAPIURLSerializerImpl, "_systemFDSEntryRegistry", - _systemFDSEntryRegistryImpl); - - _systemFDSEntryServiceTrackerMap = - ServiceTrackerMapFactory.openSingleValueMap( - _bundleContext, SystemFDSEntry.class, "frontend.data.set.name"); - - ReflectionTestUtil.setFieldValue( - _systemFDSEntryRegistryImpl, "_serviceTrackerMap", - _systemFDSEntryServiceTrackerMap); + _fdsSerializer, "_systemFDSEntryRegistry", + systemFDSEntryRegistryImpl); } @After public void tearDown() { + super.tearDown(); + _fdsAPIURLResolverServiceTrackerMap.close(); - _systemFDSEntryServiceTrackerMap.close(); } @Test - public void testSerialization() throws Exception { + public void testSerialize() throws Exception { // Different resolvers @@ -105,20 +98,18 @@ public void testSerialization() throws Exception { "/app1", "schema", new String[] {"{foo}"}, new String[] {"bar"}); ServiceRegistration systemFDSEntryServiceRegistration1 = - _registerSystemFDSEntry( + registerSystemFDSEntry( "fdsName1", "/app1", "/endpoint/{foo}", "schema"); ServiceRegistration systemFDSEntryServiceRegistration2 = - _registerSystemFDSEntry( + registerSystemFDSEntry( "fdsName2", "/app2", "/endpoint/{foo}", "schema"); Assert.assertEquals( "/o/app1/endpoint/bar", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName1", _httpServletRequest)); + _fdsSerializer.serialize("fdsName1", httpServletRequest)); Assert.assertEquals( "/o/app2/endpoint/{foo}", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName2", _httpServletRequest)); + _fdsSerializer.serialize("fdsName2", httpServletRequest)); fdsAPIURLServiceRegistration.unregister(); systemFDSEntryServiceRegistration1.unregister(); @@ -126,25 +117,23 @@ public void testSerialization() throws Exception { // No resolver, URL - systemFDSEntryServiceRegistration1 = _registerSystemFDSEntry( + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( "fdsName", "/app", "/endpoint", "schema"); Assert.assertEquals( "/o/app/endpoint", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest)); + _fdsSerializer.serialize("fdsName", httpServletRequest)); systemFDSEntryServiceRegistration1.unregister(); // No resolver, URL with parameters - systemFDSEntryServiceRegistration1 = _registerSystemFDSEntry( + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( "param=3", "fdsName", "/app", "/endpoint", "schema"); Assert.assertEquals( "/o/app/endpoint?param=3", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest)); + _fdsSerializer.serialize("fdsName", httpServletRequest)); systemFDSEntryServiceRegistration1.unregister(); @@ -152,13 +141,12 @@ public void testSerialization() throws Exception { fdsAPIURLServiceRegistration = _registerFDSAPIURLResolver( "/app", "schema", new String[] {"{foo}"}, new String[] {"bar"}); - systemFDSEntryServiceRegistration1 = _registerSystemFDSEntry( + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( "{foo}=3", "fdsName", "/app", "/endpoint/{foo}", "schema"); Assert.assertEquals( "/o/app/endpoint/bar?bar=3", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName", _httpServletRequest)); + _fdsSerializer.serialize("fdsName", httpServletRequest)); fdsAPIURLServiceRegistration.unregister(); systemFDSEntryServiceRegistration1.unregister(); @@ -167,19 +155,17 @@ public void testSerialization() throws Exception { fdsAPIURLServiceRegistration = _registerFDSAPIURLResolver( "/app", "schema", new String[] {"{foo}"}, new String[] {"bar"}); - systemFDSEntryServiceRegistration1 = _registerSystemFDSEntry( + systemFDSEntryServiceRegistration1 = registerSystemFDSEntry( "fdsName1", "/app", "/endpoint/{foo}", "schema"); - systemFDSEntryServiceRegistration2 = _registerSystemFDSEntry( + systemFDSEntryServiceRegistration2 = registerSystemFDSEntry( "fdsName2", "/app", "/endpoint/{foo}", "schema"); Assert.assertEquals( "/o/app/endpoint/bar", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName1", _httpServletRequest)); + _fdsSerializer.serialize("fdsName1", httpServletRequest)); Assert.assertEquals( "/o/app/endpoint/bar", - _systemFDSAPIURLSerializerImpl.serialize( - "fdsName2", _httpServletRequest)); + _fdsSerializer.serialize("fdsName2", httpServletRequest)); fdsAPIURLServiceRegistration.unregister(); systemFDSEntryServiceRegistration1.unregister(); @@ -190,7 +176,7 @@ private ServiceRegistration _registerFDSAPIURLResolver( String restApplication, String restSchema, String[] tokens, String[] values) { - return _bundleContext.registerService( + return bundleContext.registerService( FDSAPIURLResolver.class, new FDSAPIURLResolver() { @@ -213,75 +199,13 @@ public String resolve( restApplication + "/" + restSchema)); } - private ServiceRegistration _registerSystemFDSEntry( - String fdsName, String restApplication, String restEndpoint, - String restSchema) { - - return _registerSystemFDSEntry( - null, fdsName, restApplication, restEndpoint, restSchema); - } - - private ServiceRegistration _registerSystemFDSEntry( - String additionalURLParameters, String fdsName, String restApplication, - String restEndpoint, String restSchema) { - - return _bundleContext.registerService( - SystemFDSEntry.class, - new SystemFDSEntry() { - - @Override - public String getAdditionalAPIURLParameters() { - return additionalURLParameters; - } - - @Override - public String getDescription() { - return ""; - } - - @Override - public String getName() { - return fdsName; - } - - @Override - public String getRESTApplication() { - return restApplication; - } - - @Override - public String getRESTEndpoint() { - return restEndpoint; - } - - @Override - public String getRESTSchema() { - return restSchema; - } - - @Override - public String getTitle() { - return ""; - } - - }, - MapUtil.singletonDictionary("frontend.data.set.name", fdsName)); - } - - private static BundleContext _bundleContext; private static final FDSAPIURLBuilderFactoryImpl _fdsAPIURLBuilderFactoryImpl = new FDSAPIURLBuilderFactoryImpl(); private static final FDSAPIURLResolverRegistry _fdsAPIURLResolverRegistry = new FDSAPIURLResolverRegistryImpl(); private static ServiceTrackerMap> _fdsAPIURLResolverServiceTrackerMap; - private static final HttpServletRequest _httpServletRequest = Mockito.mock( - HttpServletRequest.class); - private static final SystemFDSAPIURLSerializerImpl - _systemFDSAPIURLSerializerImpl = new SystemFDSAPIURLSerializerImpl(); - private static final SystemFDSEntryRegistryImpl - _systemFDSEntryRegistryImpl = new SystemFDSEntryRegistryImpl(); - private static ServiceTrackerMap - _systemFDSEntryServiceTrackerMap; + private static final FDSSerializer _fdsSerializer = + new SystemFDSAPIURLSerializerImpl(); } \ No newline at end of file diff --git a/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSCreationMenu.java b/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSCreationMenu.java index 48a84966cca084..1810c36ec4df66 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSCreationMenu.java +++ b/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSCreationMenu.java @@ -10,11 +10,9 @@ import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu; import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenuBuilder; import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItemBuilder; -import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.language.Language; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -29,11 +27,7 @@ public class CustomizedFDSCreationMenu implements FDSCreationMenu { @Override - public CreationMenu getCreationMenu( - HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse) - throws PortalException { - + public CreationMenu getCreationMenu(HttpServletRequest httpServletRequest) { return CreationMenuBuilder.addPrimaryDropdownItem( DropdownItemBuilder.putData( "confirmationMessage", diff --git a/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSItemActionList.java b/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSItemsActions.java similarity index 75% rename from modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSItemActionList.java rename to modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSItemsActions.java index fe49f3e44c8ef3..d4f246097ed6b7 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSItemActionList.java +++ b/modules/apps/frontend-data-set/frontend-data-set-sample-web/src/main/java/com/liferay/frontend/data/set/sample/web/internal/frontend/data/set/action/CustomizedFDSItemsActions.java @@ -5,17 +5,15 @@ package com.liferay.frontend.data.set.sample.web.internal.frontend.data.set.action; -import com.liferay.frontend.data.set.action.FDSItemActionList; +import com.liferay.frontend.data.set.action.FDSItemsActions; import com.liferay.frontend.data.set.model.FDSActionDropdownItem; import com.liferay.frontend.data.set.sample.web.internal.constants.FDSSampleFDSNames; -import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.language.Language; import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -25,15 +23,13 @@ */ @Component( property = "frontend.data.set.name=" + FDSSampleFDSNames.CUSTOMIZED, - service = FDSItemActionList.class + service = FDSItemsActions.class ) -public class CustomizedFDSItemActionList implements FDSItemActionList { +public class CustomizedFDSItemsActions implements FDSItemsActions { @Override public List getFDSActionDropdownItems( - HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse) - throws PortalException { + HttpServletRequest httpServletRequest) { return Arrays.asList( new FDSActionDropdownItem(