Blogs

RSS

Entries with Projects Platform .

RSS
thumbnail

Just a quick one... I've just updated my Log Persister project for Liferay 7.3. You can find it under the 7.3 branch: https://github.com/dnebing/log-persist/tree/7.3 For those that aren't aware, I introduced the Log Persister here: https://liferay.dev/blogs/-/blogs/liferay-7-dxp-making-logging-changes-persistent Normally Liferay does not persist logging. If you make any changes in...

7949
thumbnail

I recently was helping a client with an upgrade process and that had run into a little problem... A few of the model hints were not updated on some of the columns in their Service Builder services and, as we all know, Service Builder will not ensure the columns are changed in a production environment (well, actually any environment where the schema.module.build.auto.upgrade property is not set...

7326
thumbnail

A really quick post to share something important with you React + Clay developers out there... A recent update to Clay had a breaking internal change. If after deploying your React portlet and you try to place it on the page and you get errors in the JS console like: liferay-amd-loader | Errors returned from server for require( ["my-module@1.0.0"] ): "Missing dependency...

10632
thumbnail

Introduction A client asked me to build a React portlet for them and I was like, "Oh Yeah!" I mean, it's been a while since I built a React portlet and tooling has really changed a lot since then, so I was really looking forward to this new task. So without further ado, I'm just going to dive right in... Creating the Module Okay, so this is still Liferay and still OSGi, so we're going to be...

14829
thumbnail

Introduction So I was recently asked to help build a custom Liferay docker image for a client and there were some specific requirements such as: Should not contain hard-coded credentials, those will be available as environment variables. Should be a single image that can be used in every environment, DEV, UAT and PROD. Now these kinds of things can be challenging to do if you were to...

9885
thumbnail

If you’ve ever looked at a Liferay workflow implementation and its scripts, you might have seen workflowContext being referenced in the scripts that are executed in the individual tasks and states. I’ve recently had my first scripting contact with Workflow, and wanted to look at this context, and what it can do for me. Digging a bit, you’ll find out that workflowContext is a Map<String,...

7165
thumbnail

IntroductionAs many folks know, I'm known for telling people not to look inside the Liferay database itself. It's not always clear what is what in the DB and Liferay has a lot of code around retrieving and updating data that you likely will not get completely right if you were to update the DB directly.I typically end with "Always, always use the Liferay API for your data needs..."And, if...

7988
thumbnail

So some time ago I wrote the Cluster Details marketplace plugin. Basically you drop this guy into all of your Liferay clusters and you get a nifty little control panel that tells you details about the cluster, all of the nodes which have joined the cluster and it identifies who the leader of the cluster is at the moment:Not super complicated, but it is a handy little tool to identify details...

7576
thumbnail

IntroductionHistorically developers have always wanted to be able to control site creation.It's not that Liferay admins are untrusted or anything like that. It is really more the case where setting up a new site can get complicated and the steps to create the site could be quite long. A site may have initial documents, web contents (with structures and templates), pages to create and populate...

7320
thumbnail

IntroductionLiferay has, for a long time, supported RBAC, the role-based access control. It is, of course, backed by the database so (inheritance aside for the moment) a user will be assigned a list of roles that is mostly fixed or unchanging. To change these role assignments, typically an admin is going to log into Liferay and, using the control panel, add or remove roles as necessary.This...

5242
thumbnail

Introduction One of the great advantages I have being known in the community is really the opportunity to meet, talk and work with talented developers and teams. Recently the team at ACSoftware announced in the Liferay Community Slack they were working on a new Liferay development tool, and I was fortunate enough to work with them on evaluation and testing. As it is just released, I...

8117
thumbnail

Introduction So recently a couple of times I've seen folks ask how to send form data somewhere. Some want to trigger remote web service calls, some want to store the data in a different entity or database, etc. The common answer I give is to use a Tee storage type to persist in Liferay while using as you need, and this is sometimes followed by "um, what was that?" ;-) So I figured it was...

6523
thumbnail

Introduction Let me start by saying that I'm a huge fan of Upgrade Processes. I've actually written many blogs about Upgrade Processes or using Upgrade Processes: https://liferay.dev/blogs/-/blogs/old-versus-new https://liferay.dev/blogs/-/blogs/thinking-outside-of-the-box-resources-importer https://liferay.dev/blogs/-/blogs/servicebuilder-and-upgrade-processes ...

8657
thumbnail

Introduction As of yet, there has been no official word that JDK 11 is supported by the Liferay developer tools. Just like the old delays going from JDK 7 to JDK 8, various third party tools and libraries held up the switch to JDK 11. Up until now, some developers had luck using JDK 11, but there were lingering issues with some tools such as Service Builder which could get in the way. In...

9933
thumbnail

What is the Mega-Jar? So the Liferay Dev Tools team recently included a new feature that they refer to as a "fat" jar, but I'm giving it the name Mega-Jar! This is a new single dependency that you can use in your Maven pom.xmls and Gradle build.gradle files, replacing all of the atomic dependencies with a single "one Mega-Jar to rule them all" dependency. So basically your...

8711
thumbnail

A community member posted the following plea on the Liferay Community Slack channel. I feel that it makes a great example, so I'm including it here. HiI am migrating from Liferay 7.0 to Liferay 7.3 GA6So I followed the below steps for DB migration 1 ./opt/liferay736/bundle/tools/portal-tools-db-upgrade-client          Inside the directory, I have updated...

7588
thumbnail

About a year ago, Liferay introduced a new program that I have been actively participating in, Liferay Developer Services. But what is this program? Liferay Support When you are a Liferay DXP customer, you automatically get access to Liferay Support as part of the Subscription Services. Support is staffed by a great bunch of people that want to help clients resolve product-level issues....

7600
thumbnail

Sometimes there are several ways to achieve a goal - and this is a story about one of those times, and one of those different paths to achieve a goal. Recently, in a conversation, I came across two different ways to solve the same problem: One is way more graphical than the other, and both have their advantages, disadvantages and limitations: How to edit next month's special...

7816
thumbnail

I did an informal poll on the Liferay community Slack channel recently: I was actually kind of surprised by the majority of votes for the "What is the target platform?" option. So, inspired by the results of the poll, I'm going to answer the question, What is the Target Platform? The Target Platform's Roots So the phrase, "Target Platform", is really a Liferay-only name...

8274
thumbnail

Classic Liferay Localization Handling Any developer who has been around for awhile will have some knowledge of how Liferay handled localization for the entities... In your service.xml file where you normally just have a column type of String, you would also have an additional attribute set, localized="true". With this addition, your model classes getters and setters change...

8282