Blogs

RSS

Entries with Blog Stream Featured .

RSS
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...

5201
thumbnail

As we near the first GA of 7.3, one change we've managed to make was to migrate off Soy + Metal.js and fully onto React.js. The story reminded me of how far our frontend infrastructure has evolved in the past fifteen years that I’ve been a part of Liferay. While this was initially going to be a longer post, due to some user error on my part, I have decided to split this into two posts....

8105
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...

5165
thumbnail

So I've been seeing this a lot recently, so I thought I'd do a quick blog about it... With web contents, we can build structures to provide an organized chunk of data, and then we can define a template to render the HTML fragment for that structure. Since the template language of choice is FreeMarker, and since in FreeMarker we have practically the entire Liferay API (and...

5649
thumbnail

Docker Official images can be found on Dockerhub and can be used for deployments on any system that is running Docker. For more information on configuration options for the image see the overview page. To get started with docker run the following: docker run -it -p 8080:8080 liferay/portal:7.2.1-ga2 Download You can find the 7.2 release on the download page.  If you...

15102
thumbnail

Liferay 7.2 GA2 brings us many awesome new features but I'm particularly proud of one: GraphQL support. Starting today you can build dynamic JS applications with your preferred framework (which is the one trending today?) and leverage the powerful GraphQL queries to fill the entire screen with one request. In 7.2 we introduced the new breed of Headless APIs to help you serve...

9301
thumbnail

Recently when I was working on my custom Headless API blog series, I ran into a bit of trouble with my Service Builder-based persistence tier. My SB code was done and working, and I was adding methods to my CLI tool to test all of the Headless methods. I had the list working, I could add, update and patch Vitamins, and I just finished the delete method testing and I was on cloud...

9419
thumbnail

Introduction I've recently started working on a React SPA to take advantage of the Liferay Headless APIs. I was working through all of my implementation details and was finally ready to start making API calls, but I needed to figure out how to handle authenticated requests. I reached the following point in the documentation,...

14456
thumbnail

If you’ve spent time rummaging around Liferay’s search and indexing documentation provided here, you’ll find a lot of details about document contributors, index writers, search registrars, etc. The part that might be missing is what all of these things actually do, why they are important, and why you actually want to go down the road of supporting indexing and search for your custom...

7017
thumbnail

Introduction Welcome back to my series on using Liferay's REST Builder tool to generate your own Headless APIs! In part 1 of the series, we created a new project and modules, and we started to create the OpenAPI Yaml file defining our headless services by specifying the Reusable Components section. In part 2 of the series, we completed the OpenAPI Yaml file by adding in...

8556
thumbnail

Just a quick post today... So I've been using the Target Platform like all the time now. I don't want to have to worry about versions, especially those Liferay modules that change version numbers on every fix pack... However, I've found that sometimes the version numbers just aren't there. But often I only find this out after I've stripped out the version and tried a build. My...

5809
thumbnail

Introduction In part 1 of this series, we started a project to leverage Liferay's new REST Builder tool for generating Headless APIs. We defined the Reusable Components section, the section where we define our request and response objects, namely the Vitamin component and a copy of Liferay's Creator component. In part 2 of the series, we finished the OpenAPI Yaml file by defining...

8152
thumbnail

Introduction In part 1 of this series, we started a project to build our own custom Headless APIs using Liferay's REST Builder tool. The project was started, four modules were created and I presented the Meta and Reusable Components sections from my OpenAPI Yaml file. We're going to pick up where we left off and finish presenting the Paths (endpoints) section and then start...

8927
thumbnail

Introduction So recently I have been working with Liferay's new Headless APIs... I have a nice React-based SPA leveraging the new headless-delivery and headless-user-admin modules. I'm going to release everything eventually, but some parts just aren't ready yet. The first part is ready, though: using the new REST Builder tool to create your own Headless APIs. I know what...

13353
thumbnail

Recently I was one of many trying to help a coworker figure out why a Liferay OOTB feature was failing... We had odd stack traces, null object references when OSGi never should have allowed a null to begin with, and nothing we tried would fix the problem. Eventually we found that, for some reason, two different versions of a Liferay bundle had been deployed into the environment....

5220
thumbnail

So the last couple of days I've been working on a new React Headless app that I'm going to be sharing soon, but for various reasons I've had to refer to the /api/jsonws page to check out the classic APIs there that are still available. Just as a bit of background, I have an awesome 27" iMac that I do all of my development on. I love it so much that I purchased an additional Apple...

4190
thumbnail

Whenever I start working with a new client, I always share with them my three rules for effectively working with support: 1. Open tickets as soon as you think you will need Liferay Support. With each new ticket there is sometimes necessary "back and forth" in order to gather necessary contextual details. Opening tickets as soon as possible will hopefully help to clear this portion...

4162
thumbnail

Just a quick post today... Helped a client who was getting a message in the logs after configuring the SAML SP in Liferay using an ADFS IdP: Caused by: org.opensaml.ws.security.SecurityPolicyException: Inbound message issuer was not authenticated. at org.opensaml.ws.security.provider.MandatoryAuthenticatedMessageRule.evaluate(MandatoryAuthenticatedMessageRule.java:38) ...

3986
thumbnail

Participate in an Open Source project? Meaning ... do what exactly? The trouble with that phrase is that everyone puts their own meaning in it. Some will claim it’s not participation unless you write code. Others will claim that’s actually “contributing” (which IMHO is not less ambiguous word) and everything else is participation. For us, it’s simple - whatever you do to make our...

6624
thumbnail

As expected (we wrote the redirect rules after all) and confirmed by our access logs, the documentation was the first place you discovered in the new Liferay Portal website. But did you notice what has changed apart from the URL? New documentation structure  The 7.2 developer docs are now organized in a new way - grouped by tasks you as developer may have:  ...

6819