Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LPD-44159 Rework data set serialization (actions) #158439

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7cb9b6d
LPD-44159 Provide FDS creation menu serializers for custom and system…
dsanz Jan 23, 2025
7363892
LPD-44159 Provide FDS item action list serializers for custom and sys…
dsanz Jan 23, 2025
de068e3
LPD-44159 Provide FDS bulk action list serializers for system data se…
dsanz Jan 23, 2025
8383a60
LPD-44159 Abstract out common logic in tests
dsanz Jan 29, 2025
ebd1007
LPD-44159 Simplify. Sort what can be sorted
dsanz Jan 29, 2025
0f48cfa
LPD-44159 Adapt import system dataset logic to the changes made in th…
dsanz Jan 27, 2025
344810e
LPD-44159 Refactor: rename FDSItemActionList to FDSItemsActions
dsanz Jan 29, 2025
e4c2ee7
LPD-44159 Refactor: rename FDSBulkActionList to FDSBulkActions
dsanz Jan 29, 2025
226e4d3
LPD-44159 Refactor: naming changes in CreationMenu serialization
dsanz Feb 3, 2025
94ed689
LPD-37531 SF
brianchandotcom Feb 3, 2025
d993aca
LPD-37531 Use TransformUtil
brianchandotcom Feb 3, 2025
5aa598c
LPD-37531 SF
brianchandotcom Feb 3, 2025
e12122f
LPD-37531 Simplify
brianchandotcom Feb 3, 2025
45322ad
LPD-37531 Rename
brianchandotcom Feb 3, 2025
c49a286
LPD-44159 use TransformUtil
dsanz Feb 3, 2025
590ad51
LPD-44159 SF, simplify
dsanz Feb 3, 2025
ddcd66d
LPD-44159 Rename
brianchandotcom Feb 4, 2025
0ddc2e2
LPD-44159 Rename
brianchandotcom Feb 4, 2025
9129b1d
LPD-44159 Rename to match bundleContext.registerService(FDSItemsActio…
brianchandotcom Feb 4, 2025
7463cff
LPD-44159 Sort
brianchandotcom Feb 4, 2025
97399c8
LPD-44159 SF
brianchandotcom Feb 4, 2025
60e1bfa
LPD-44159 Rename to match bundleContext.registerService(FDSCreationMe…
brianchandotcom Feb 4, 2025
1f38491
LPD-44159 SF
brianchandotcom Feb 4, 2025
487b915
LPD-44159 Apply naming conventions to the remaining tests
dsanz Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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());
}

Expand All @@ -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<DropdownItem> primaryDropdownItems =
(List<DropdownItem>)creationMenu.get("primaryItems");
Expand Down Expand Up @@ -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<FDSActionDropdownItem> fdsActionDropdownItems =
fdsItemActionList.getFDSActionDropdownItems(
httpServletRequest, httpServletResponse);
fdsItemsActions.getFDSActionDropdownItems(httpServletRequest);

for (FDSActionDropdownItem fdsActionDropdownItem :
fdsActionDropdownItems) {
Expand Down Expand Up @@ -298,7 +291,7 @@ private Serializable _getOptionalValue(Object value) {
private FDSCreationMenuRegistry _fdsCreationMenuRegistry;

@Reference
private FDSItemActionListRegistry _fdsItemActionListRegistry;
private FDSItemsActionsRegistry _fdsItemsActionsRegistry;

@Reference
private JSONFactory _jsonFactory;
Expand Down
Original file line number Diff line number Diff line change
@@ -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,\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
/**
* @author Daniel Sanz
*/
public interface FDSBulkActionList {
public interface FDSBulkActions {

public List<FDSActionDropdownItem> getFDSActionDropdownItems(
HttpServletRequest httpServletRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
/**
* @author Daniel Sanz
*/
public interface FDSBulkActionListRegistry {
public interface FDSBulkActionsRegistry {

public FDSBulkActionList getFDSBulkActionList(String fdsName);
public FDSBulkActions getFDSBulkActions(String fdsName);

}
Original file line number Diff line number Diff line change
@@ -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<List<FDSActionDropdownItem>> {

@Override
public default String getKey() {
return "bulkActions";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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<CreationMenu> {

@Override
public default String getKey() {
return "creationMenu";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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<FDSActionDropdownItem> getFDSActionDropdownItems(
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)
throws PortalException;
HttpServletRequest httpServletRequest);

public default FDSEntryItemImportPolicy getFDSEntryItemImportPolicy() {
return FDSEntryItemImportPolicy.ITEM_PROXY;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
/**
* @author Daniel Sanz
*/
public interface FDSItemActionListRegistry {
public interface FDSItemsActionsRegistry {

public FDSItemActionList getFDSItemActionList(String fdsName);
public FDSItemsActions getFDSItemsActions(String fdsName);

}
Original file line number Diff line number Diff line change
@@ -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<List<FDSActionDropdownItem>> {

@Override
public default String getKey() {
return "itemsActions";
}

}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version 1.1.0
version 2.0.0
Original file line number Diff line number Diff line change
@@ -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<FDSActionDropdownItem> serialize(
String fdsName, HttpServletRequest httpServletRequest) {

// TODO

return Collections.emptyList();
}

}
Original file line number Diff line number Diff line change
@@ -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<DropdownItem> _getDropdownItems(
String fdsName, HttpServletRequest httpServletRequest) {

return TransformUtil.transform(
getCreationMenuObjectEntries(fdsName, httpServletRequest),
objectEntry -> {
Map<String, Object> 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();
});
}

}
Loading