Rivet Logic's Costa Rica Developer's Forge presented this at a Costa Rica Java Users Group meeting. The presentation provides an introduction to portlets using Liferay Portal - including Portals and Portlets; Liferay Portal 6.0, Liferay SDK and Liferay IDE; Portlet 1.0 (JSR 168).
React Class Components vs Functional Components: Which is Better?Fibonalabs
Earlier, class components were the only option to add states to components and manipulate the lifecycle. However, since the introduction of React Hooks, now we can add the same functionality to function components.
Angular 14: What's new! explore in-depth the features of Angular 14 and learn how to get started with it. Angular 14 has been released with several significant features.
Angular 16 is the biggest release since the initial rollout of Angular, and it changes everything: Bye bye zones, change-detection, life-cycle, children-selectors, Rx and what not.
Recorded webinar based on these slides given by Yaron Biton, Misterbit Coding-Academy’s CTO, can be found at: https://www.youtube.com/watch?v=92K1fgPbku8
Coding-Academy offers advanced web-techs training and software development services: Top-rated Full-stack courses for Angular, React, Vue, Node, Modern architectures, etc. | Available top-notch on-demand-coders trough Misterbit technological solutions | Coding-Academy Bootcamp: Hundreds of employed full-stack developers every year | Anything web, end to end projects | Tech companies and startups | Consulting to management and dev teams | Workshops for managers and leaders.
RichText Editor (RTE) is an integral component of AEM and it provides AEM authors a WYSIWYG text-editing experience on the web pages. RTE offers diverse configurations to developers.
This presentation provides an in-depth understanding of this component and shows various concepts, use-cases, modes, configurations, best practices, limitations and troubleshooting that surround it.
E-Seminar recording published here -
https://helpx.adobe.com/experience-manager/kt/eseminars/gems/AEM-Rich-Text-Editor-RTE-Deep-Dive1.html
React Class Components vs Functional Components: Which is Better?Fibonalabs
Earlier, class components were the only option to add states to components and manipulate the lifecycle. However, since the introduction of React Hooks, now we can add the same functionality to function components.
Angular 14: What's new! explore in-depth the features of Angular 14 and learn how to get started with it. Angular 14 has been released with several significant features.
Angular 16 is the biggest release since the initial rollout of Angular, and it changes everything: Bye bye zones, change-detection, life-cycle, children-selectors, Rx and what not.
Recorded webinar based on these slides given by Yaron Biton, Misterbit Coding-Academy’s CTO, can be found at: https://www.youtube.com/watch?v=92K1fgPbku8
Coding-Academy offers advanced web-techs training and software development services: Top-rated Full-stack courses for Angular, React, Vue, Node, Modern architectures, etc. | Available top-notch on-demand-coders trough Misterbit technological solutions | Coding-Academy Bootcamp: Hundreds of employed full-stack developers every year | Anything web, end to end projects | Tech companies and startups | Consulting to management and dev teams | Workshops for managers and leaders.
RichText Editor (RTE) is an integral component of AEM and it provides AEM authors a WYSIWYG text-editing experience on the web pages. RTE offers diverse configurations to developers.
This presentation provides an in-depth understanding of this component and shows various concepts, use-cases, modes, configurations, best practices, limitations and troubleshooting that surround it.
E-Seminar recording published here -
https://helpx.adobe.com/experience-manager/kt/eseminars/gems/AEM-Rich-Text-Editor-RTE-Deep-Dive1.html
Flutter vs react native – from developer pointBOSC Tech Labs
With the rising number of mobile internet users, there is huge traffic. When it comes to developing a mobile application using cross-platform technologies both Flutter and React Native is the best available option. So we will learn about which is best for your next project requirement.
Angular Best Practices To Build Clean and Performant Web ApplicationsAlbiorix Technology
Check the angular best practices to be implemented in your next angular web development project. Here we bring some 14 angular best practices to try.
For More Information: https://www.albiorixtech.com/blog/angular-best-practices/
Recommandations pour la nouvelle IHM de HAL OAccsd
Sites des portails et collections dans HAL : recommandations pour les intégrer dans la nouvelle ergonomie. Présentation du webinaire organisé par le CCSD et Casuhal, 25 janvier 2022.
Top 20 c# interview Question and answersw3asp dotnet
This presentation contains interview question and answers . www.w3asp.net provide you the information, knowledge, job, practices and tranings regarding asp.net.
This PPT throws light on some of the essential elements of Accessibility testing which have become crucial to ensure quality in this day and age. To know more on accessibility testing, accessibility mandates, WCAG 2.0, paired testing approach, accessibility guidelines and standards go through this presentation as well as the ones coming soon.
An overview of liferay portal.
The outline is:
1.> Review Liferay Portal
– Enterprise Layer
– Extensions Framework
– Logical Architecture of Liferay
– Service layer
– Service Builder
– Web services
– Persistence Layer
– User Management: Organization, Site, User, Roles, Groups
2.> Out of the box features
– Document and Media Library
• Image Management
• Document Management
– Web Content Management
– Asset, Tagging, and Categorization
Flutter vs react native – from developer pointBOSC Tech Labs
With the rising number of mobile internet users, there is huge traffic. When it comes to developing a mobile application using cross-platform technologies both Flutter and React Native is the best available option. So we will learn about which is best for your next project requirement.
Angular Best Practices To Build Clean and Performant Web ApplicationsAlbiorix Technology
Check the angular best practices to be implemented in your next angular web development project. Here we bring some 14 angular best practices to try.
For More Information: https://www.albiorixtech.com/blog/angular-best-practices/
Recommandations pour la nouvelle IHM de HAL OAccsd
Sites des portails et collections dans HAL : recommandations pour les intégrer dans la nouvelle ergonomie. Présentation du webinaire organisé par le CCSD et Casuhal, 25 janvier 2022.
Top 20 c# interview Question and answersw3asp dotnet
This presentation contains interview question and answers . www.w3asp.net provide you the information, knowledge, job, practices and tranings regarding asp.net.
This PPT throws light on some of the essential elements of Accessibility testing which have become crucial to ensure quality in this day and age. To know more on accessibility testing, accessibility mandates, WCAG 2.0, paired testing approach, accessibility guidelines and standards go through this presentation as well as the ones coming soon.
An overview of liferay portal.
The outline is:
1.> Review Liferay Portal
– Enterprise Layer
– Extensions Framework
– Logical Architecture of Liferay
– Service layer
– Service Builder
– Web services
– Persistence Layer
– User Management: Organization, Site, User, Roles, Groups
2.> Out of the box features
– Document and Media Library
• Image Management
• Document Management
– Web Content Management
– Asset, Tagging, and Categorization
Liferay Developer Best Practices for a Successful Deploymentrivetlogic
Liferay is one of the leading open source portals in today’s market. However, it’s more than just a portal, it’s also a framework. And with good frameworks, comes flexibility, and with flexibility comes the need to understand and follow best practices.
This webcast will share lessons learned and best practices gathered from some of our very own customer Liferay implementations. The presentation will cover the gamut of a Liferay implementation lifecycle.
Often business stakeholders are confused about choosing the right Open source Portal and CMS. Not only that the confusion prevails on the actual understanding of a Portal and CMS. Liferay and Drupal are one of the most popular Portal and CMS platforms. This presentation helps business stakeholders choose the right Portal and CMS platform.
See what pitfalls companies are facing when running Liferay portal. In the previous year, our company has audited 5 real-life projects based on Liferay Portal which are now running in production mode and serving many users. The audits were focused on architecture, infrastructure, technical design and implementation. During the presentation, we will show you common anti-patterns we have found during the audits and their impacts and consequences on the portal.
EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik HarabiRafik HARABI
This presentation focus on modern architecting and development patterns with examples.
Liferay 7 come with new modular architecture based on OSGi framework. This new architecture will change the way of using and extending Liferay: It provides flexible options to customize Liferay portal and build applications on the top of it.
After introducing the new modular architecture and the Liferay module framework, the presentation will focus on the modern patterns of bundles development, portal customization patterns and integration with third parties using the power of the OSGi framework.
The Liferay 7 meetup organized by Azilen Technologies on 21st May, 2016 was undeniably a successful Meetup. Brief Overview given by Ravi Gupta & Hetal Prajapati on Liferay 7 Technology. Find here Presentation.
Social Intranets on Liferay for Smarter Enterprise Collaborationrivetlogic
For today's enterprises, building internal employee communities within the enterprise offers tremendous strategic advantages, including greater opportunities to share knowledge across departments, to encourage employee interaction and feedback, and to assist in meeting organizational challenges through team-building and collective problem solving. A social intranet solution can help achieve these goals and ultimately lead to smarter enterprise collaboration.
Java Portlet 2.0 (JSR 286) SpecificationJohn Lewis
The Java Portlet 2.0 specification (JSR 286) introduces major new features for Portlet development. This session will detail the changes present in this new specification, including: a new eventing phase that allows portlets to communicate with each other, the ability to serve up resources directly out of the portlet, and full filtering support of portlet requests, along with a number of other minor changes and improvements.
This presentation gives an overview on Java standard portlets. It speaks about the trends in java portals and java specification requests created to achieve the Java portlet programming. It also tells the portal advantage over the conventional approach of web programming based on Java platform.
This presentation, given at the Alpes JUG in Grenoble France, talks about how to go from portlet development to composite applications development. Composite applications are a great way to speed up web application development.
Redfish is an IPMI replacement standardized by the DMTF. It provides a RESTful API for server out of band management and a lightweight data model specification that is scalable, discoverable and extensible. (Cf: http://www.dmtf.org/standards/redfish). This presentation will start by detailing its role and the features it provides with examples. It will demonstrate the benefits it provides to system administrator by providing a standardized open interface for multiple servers, and also storage systems.
We will then cover various tools such as the DMTF ones and the python-redfish library (Cf: https://github.com/openstack/python-redfish) offering Redfish abstractions.
Entando is a powerful and extensible open source, component-based, UI software platform that simplifies the end-to-end development of web, mobile and hybrid applications that leverage devices, data and services.
Presentation by Ian de Villiers at ZaCon 1 in 2009.
The presentation begins by naming a few enterprise portal vendors followed by a brief overview of enterprise portals. Common shortcomings of EP's are discussed, which leads on to discussions about using custom applications to expose the full functionality of a portal.
APIdays 2016 - The State of Web API LanguagesRestlet
Jerome Louvel, founder and CTO of Restlet discusses use cases of API-centric software. Continuous API delivery. APi team collaboration. OAS, Swagger, RAML, API Blueprint, other.
Building the Future Together: AtoM3, Governance, and the Sustainability of Op...Artefactual Systems - AtoM
Slides accompanying a presentation given by Dan Gillean on June 7th, 2018 at Open Repositories 2018, held in Bozeman, MT.
Access to Memory is a web-based open source application for standards based description and access. AtoM was first released in 2008 and much of the codebase is now relying on deprecated frameworks and libraries – and at the same time, new standards and technologies are changing how our profession approaches description and access. Currently Artefactual Systems, a Canadian based company, uses a services model to support the project. Artefactual is looking ahead to AtoM3, and considering building a linked data driven platform for archival description and access. As we consider AtoM's next generation, we are also examining governance and maintenance models to sustain the project and better empower our user community as Artefactual wasn't originally intended to be AtoM's organizational home. This presentation will offer some thoughts on existing open source project governance models, challenges, and possibilities for the future. How do we ensure community engagement and project sustainability over time?
Similar to Introduction to Portlets Using Liferay Portal (20)
Storytelling for CX: Make Your Audience the Herorivetlogic
Too often, we think about the “look & feel” for experience designs more than we do about the story we are trying to communicate. In this presentation, we explore how customer experience and digital marketing leaders can use storytelling for digital experience at the intersection of editorial, design, and development.
Learn:
- Available techniques and technologies for effective online storytelling
- How to better construct narratives around products and services
- How to use storytelling to more deeply engage your audiences.
How to Accelerate Your Digital Transformation With Design Thinkingrivetlogic
Why are leading brands around the world including Apple, Google, Starbucks, Coca Cola, and Target adopting a Design Thinking approach? By thinking like a designer, these companies are transforming the way they develop products, services, processes and strategy.
Design thinking has become a key component of digital transformation success, providing a flexible approach to tackling the complex problems that digital transformation journeys present.
By approaching problem solving through a human centered mindset, design thinking allowing organizations to discover more innovative solutions that focus on the user’s needs.
This webinar discusses:
* Common pitfalls for project failure
* Why the design thinking approach works
* The five stages of Design Thinking
* Best practices for incorporating design thinking into your digital transformation strategy
Ensuring the Success of a Global Partner Network - How Dropbox is managing it...rivetlogic
Rivet Logic shares how a Liferay powered solution gave Dropbox the flexibility and customizability it needed to build a world class partner portal to effectively manage partners while providing them with the tools they needed to succeed.
How a Product Development Portal Can Help Turn Innovative Ideas Into Marketab...rivetlogic
Excelling in a modern digital age is all about speed - speed of innovation, getting your products to market, and meeting your customer expectations.
Bringing a new product to market involves multiple phases requiring participation from various teams across the organization, from idea conception to product development and launch.
Without the right tools and processes in place, this could easily result in unnecessary miscommunications, delays, wasted efforts and costs, and could even sacrifice the quality of the outcome.
This presentation discusses how an Ideation and Product Development Portal can help your business manage its end-to-end product development process, from ideation to product launch, with modern tools that help cultivate knowledge flow and innovation.
Reimagine Your Video Communications With Video Center on AWSrivetlogic
If your organization delivers video at scale, streams live or recorded updates from company leadership, or provides e-learning assets, then the shifting video landscape will change the way you create and deliver video.
This presentation discusses:
- Where the enterprise video landscape is headed
- Best practices for enterprise video solutions
- Benefits of cloud-based video operations
- Ways to leverage other cutting edge AWS services
- How to manage, publish, and deliver personalized video to any device and any audience
- Case study of how the DoD is using the Video Center to help soldiers connect anywhere in the world
- Video Center on AWS and how to get started
Elevate Your Digital Experiences with Cloud Content Management on Boxrivetlogic
The Enterprise Content Management landscape is ever evolving. As more businesses undergo digital transformation, they need modern and agile ECM technology that can keep up with the changing pace.
Successful companies are rethinking the workplace, processes and IT infrastructure, making the journey from legacy IT to modernized, future-ready IT that gives your business the agility to innovate.
Box is a cloud content management platform for the digital age, combining centralized, cloud-native content services with advanced security and governance.
And with Box Platform, businesses can create custom digital experience solutions that leverage and extend the core functionality of Box, without having to build the underlying infrastructure.
This presentation discusses the following:
- Where the ECM landscape is headed
- Benefits of cloud content management
- Why businesses are turning to Box and common use cases
- How businesses are building custom digital experience solutions leveraging Box Platform
- Solution Highlight: Document Center on Box
Delivering Connected Digital Experiences for Engaging the Modern Day Customerrivetlogic
Modern consumers are expecting faster, more convenient, more personalized content and services delivered on demand, while employees are demanding the same level of experience in the workplace. To remain competitive, businesses need to remain agile, with the ability to adjust to these ever evolving demands.
In this presentation, we will explore the drivers behind the changing digital landscape and why more and more businesses are undergoing digital transformation initiatives to drive growth and create new value for customers and employees.
You’ll learn about a new breed of Digital Experience Platforms (DXP) and how they provide the tools necessary to create personalized digital experiences for maximum user engagement and business value.
5 Reasons Why You Should Consider Migrating Web Apps to the Cloud on AWSrivetlogic
More and more, organizations are turning to the Cloud to reduce cost and liability, increase performance and develop greater flexibility to provide services for their mission critical enterprise deployments.
This presentation covers the benefits of migrating web applications to the Cloud leveraging Amazon Web Services (AWS), and the positive impact it can have on your business, including:
- Reduced costs
- Increased operational efficiency
- Flexibility and scalability
- Increased security and reduced risk
- Freeing up IT resources to focus on strategic projects
- Benefits of Managed Services
5 Reasons Why Your CMS Should Move to the Cloudrivetlogic
Why are a growing number of enterprise customers deploying their Web experiences in the cloud? In this presentation, we discuss top reasons for moving a CMS to the cloud, how to craft a successful enterprise web strategy, and best practices for building next-generation web experiences.
Improve Employee Engagement With a Mobile Enabled Intranetrivetlogic
Top businesses today are leveraging social intranet solutions to drive employee engagement and facilitate smarter enterprise collaboration. This webinar shows you how to further extend your intranet’s benefits through mobile, successfully mobilize your workforce, and the tools needed to do so.
Increase Customer Engagement and Drive Revenue with Liferay Audience Targeting rivetlogic
Today’s consumers are surrounded with an ever-increasing amount of digital content, as we’ve all probably experienced personally. To capture their attention and truly engage them, businesses need to deliver personalized experiences that are targeted towards their individual needs. An engaged audience can lead to more new customers as well as drive existing customer loyalty.
This presentation dives into the topic of audience engagement - how to connect with your audience through personalized content, and how Liferay’s new Audience Targeting app helps to tailor content for specific users.
Incorporating Mobile Into Your Digital Experience Strategyrivetlogic
Mobile web traffic continues to increase and in some cases is surpassing that of desktops. And from 2013 to 2014, mobile app usage saw an astounding 52% increase compared to just a 1% increase with desktops. With facts like these, it’s apparent that businesses can no longer afford to ignore their mobile experience.
Whether your audience is spending just a few minutes checking on the status of an order or watching streaming media for hours on their mobile device, it all plays a part in the overall customer experience journey they have with your business.
Marketing Asset Center - Enabling Consistency & Productivity Across Sales & M...rivetlogic
The Digital Marketing landscape continues to transform in the form of content marketing, big data, mobile marketing, and social media. All of this equates to an abundance of digital marketing assets – audio, video, images, documents, corporate communications, campaign assets, and more – which need to be effectively managed and distributed to various stakeholders – sales teams, employees, partners, customers, remote offices, and others.
The Marketing Asset Center provides a powerful and easy way for enterprises to manage and distribute all their digital marketing assets, resulting in increased marketing productivity, brand consistency, sales effectiveness, and revenue.
NoSQL Design Considerations and Lessons Learnedrivetlogic
Leading organizations worldwide are using NoSQL database technologies to create data-driven solutions that help them gain valuable insight into their business and customers. This presentation shares our experiences, thought processes and lessons learned building apps on NoSQL databases.
Increase Your Marketing Productivity With the Marketing Asset Center for Alfr...rivetlogic
The Digital Marketing landscape continues to transform in the form of content marketing, big data, mobile marketing, and social media. All of this equates to an abundance of digital marketing assets – audio, video, images, documents, corporate communications, campaign assets, and more – which need to be effectively managed and distributed to various stakeholders – sales teams, employees, partners, customers, remote offices, and others.
The Marketing Asset Center provides a powerful and easy way for enterprises to manage and distribute all their digital marketing assets, resulting in increased marketing productivity, brand consistency, sales effectiveness, and revenue.
Social Intranets for Smarter Enterprise Collaborationrivetlogic
Rivet Logic introduces its Employee Experience Maturity Model, which may be used by any organization to assess and optimize employee collaboration, engagement and productivity, and will highlight how it may be implemented through a real-world case study.
AT&T’s Mobile Developer Community: Social, Personalized, and Built for Scalerivetlogic
The largest and most successful online communities, websites and applications on the internet today are social, personalized, and require large-scale content and user data management.
To create a highly engaged community and resource center for its mobile developers, AT&T is turning to Crafter and MongoDB for the implementation of its next generation mobile developer community.
This presentations discusses AT&T's journey in achieving an engaging community site for its Developer Program.
The internet has revolutionized the way companies market their products and services today. One of the biggest changes is how businesses are leveraging their websites to market their online presence. In a competitive digital world, the key to success is reaching potential customers and driving them to your website.
One of the most effective methods to do so is through Search Engine Optimization, also known as SEO, a top priority in today’s growing world of technology and reliance on web-based platforms.
This presentation demonstrates Liferay's newest SEO features, and discusses how we've implemented SEO-friendly dynamic pages and carousels.
Implementing an SEO Strategy for Your Liferay Websitesrivetlogic
The internet has revolutionized the way companies market their products and services today. One of the biggest changes is how businesses are leveraging their websites to market their online presence. In a competitive digital world, the key to success is reaching potential customers and driving them to your website.
One of the most effective methods to do so is through Search Engine Optimization (SEO). In today's growing world of technology and reliance on web-based platforms, every public site must be concerned about SEO. There are a number of reasons why SEO is routinely selected as the primary marketing method by many organizations to acquire customers.
This presentation discusses how Rivet Logic has met sophisticated SEO requirements for highly visible Liferay sites, along with demonstrating Liferay's newest SEO features.
Building Engaging Customer Experiences Powered by MongoDBrivetlogic
This presentation discusses the challenges many organizations face in providing fine-grained personalization, and how a modern database like MongoDB can be used to help businesses better leverage the data they already have in separate systems by making meaningful connections and creating interactions of value.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
The Art of the Pitch: WordPress Relationships and Sales
Introduction to Portlets Using Liferay Portal
1. ARTISANS OF OPEN SOURCE
Introduction to Portlets using Liferay Portal
(Part 1)
By: Aníbal Gómez-Estrada
http://rivetlogic.com/web/agomez
August 23rd, 2011
Rivet Logic Corporation Rivet Logic Costa Rica SRL
11410 Isaac Newton Square N. Costa Rica Developer's Forge
Suite 210 Edificio María Luisa, 3A office
Reston, VA 20190, USA Paseo Colón, San José, Costa Rica
Ph: 703.955.3480 Fax: 703.234.7711 Ph: (506) 2256-1024 Fax: (506) 2256-1024
2. Rivet Logic Overview ARTISANS OF OPEN SOURCE
• Award-winning consulting and systems integration firm
focused on enabling open source –based software solutions
for content management, collaboration and community:
– Innovator of the Year: JBoss (2008)
– Solution of the Year: Alfresco (2010)
– Platinum Partner: Liferay (2011)
• We use top-notch open source technology:
• Company Facts:
– Founded in 2005. Consistently Profitable and Employee-owned. 40+ Consultants
– Headquarters in Virginia, USA. Near-shore office in San José, Costa Rica for two years
– Certified Liferay Partner since 2006:
• Conduct all public training on East Coast, USA
• Contributor (software, documentation, forums, training material)
• 20+ Liferay projects underway or completed!
3. Agenda ARTISANS OF OPEN SOURCE
• Introduction
– Portals and Portlets
– Liferay Portal 6.0, Liferay SDK and Liferay IDE
• Portlet 1.0 (JSR 168)
– Contract and Lifecycle
– Packaging and Deployment
– JSP Support
– Portlet Modes and Window States
– Portlet Preferences
• Conclusion
– Questions and Answers
– References
• Announcements
– Introduction to Portlets using Liferay Portal (Part 2)
– Rivet Logic Is Hiring!
5. Portals and Portlets ARTISANS OF OPEN SOURCE
“A Portal is designed to be a
single web-based environment
where all users applications
run integrated together in a
systematic way”
“Portals enable enterprises to
provide a consistent look and
feel for multiple applications
and databases, which
otherwise would have been seen
as different entities altogether”
Depending on target domain, portals aggregate:
“Aggregation is the process of • Services such as email, news, blogs, forums,
seamlessly integrating information, business specific apps, etc
• Cross-cutting features such as search, single
content and applications sign-on, access control, look and feel, etc
from different sources”
6. Portals and Portlets (2) ARTISANS OF OPEN SOURCE
The web had grown up and instead
of proprietary interfaces to
everything, there is commitment
to standardize on open
protocols
Portlets emerged to allow the
interoperability at level of
portions of web pages across
different platforms and solutions
that aggregate content and web
applications
Portlets are componentized user-
facing applications that ..Portlets can therefore be viewed as
generate a fragment, a piece of
markup (ie. HTML, XHTML, WML, UI-based services that take the SOA
…). This markup is intended to be approach all the way up to the user
aggregated with other markup
fragments to produce a complete interface!
document
7. Portals and Portlets (3) ARTISANS OF OPEN SOURCE
• The portal page represents a complete markup document:
– Aggregates several portlet windows
– May also consist of navigation areas and banners
Portal Architecture:
8. Portals and Portlets (4) ARTISANS OF OPEN SOURCE
• Portlets share many similarities with Servlets:
– Portlets and their lifecycle are managed by a specialized container
– Portlets interact with web client via a request/response paradigm
• Some of the aspects Portlets differ from Servlets are:
– Portlets only generate markup fragments, not complete documents
– Portlets only invoked through URLs constructed via Portlet API
– Web clients usually interact with portlets through a portal system
– Portlets have more refined request handling, i.e. action requests,
event request, render request and resource requests
– Portlets can exist many times in a portal page
– Portlets can store transient data in the portlet session in two different
scopes: the application-wide scope and the portlet private scope
– Portlets can not set character set encoding of the render response
9. Portals and Portlets (5) ARTISANS OF OPEN SOURCE
• Portlet Container implements the Java Portlet Specs:
– Usually on top of a servlet container (not stand-alone)
– Distinct but complementary to the Portal Server
• In some cases, bundled as part of same product though!
• Some Portlet Container and Portal Server products:
– Apache Pluto / Apache Jetspeed (Reference Impl)
– OpenPortal Portlet Container (Sun Java Portal Server)
– WebSphere Portlet Container (IBM WebSphere Server)
– JBoss Portlet Container (JBoss Portal)
– (Liferay Portal)
10. Liferay Portal 6.0 ARTISANS OF OPEN SOURCE
• Liferay Portal is a Portlet Container and Portal Server:
– Platform and environment to run/administer web sites and integrate portlets
– A content management system with publishing, workflow, staging area and
content-templating features
– A set of portlets provided OOTB (for collaboration, social media and more)
• Liferay Portal is available as:
– Community Edition which uses LGPL open source license, so it can be
“linked” to non open-source software
– Enterprise Edition which is the commercially available version with
support and a hot-patching system for bug fixes and performance
improvements
For more info: http://www.liferay.com/downloads/liferay-portal/overview
• Liferay Portal is provided as:
– A standard .war file which can be installed on any application server, or as,
– A “bundle” preinstalled in your open source application server of choice
For more info: http://www.liferay.com/documentation/liferay-portal/6.0
11. Liferay Portal 6.0 (2) ARTISANS OF OPEN SOURCE
• Liferay Portal is based on widely used, standard ways of doing
things, aiming to keep the code free:
– Adheres to the JSR-286 standard (Portlet 2.0)
– Takes advantage of Spring, Hibernate and Velocity (for things not
standardized in official Portlet Specifications)
12. Liferay Portal 6.0 (3) ARTISANS OF OPEN SOURCE
• Adding an application (portlet) to a page can be as simple as:
– Login from Sign-In portlet (default credentials: test@liferay.com/test)
– Drag and drop the selected application from Add menu
13. Liferay Portal 6.0 (4) ARTISANS OF OPEN SOURCE
• Liferay SDK is a development environment for all types of Liferay plugins,
including: Portlets, Themes, Layout Templates, Hooks and more!
– Info: http://www.liferay.com/community/wiki/-/wiki/Main/Plugins+SDK
– Download: http://www.liferay.com/downloads/liferay-portal/additional-files
• Liferay SDK is based on Apache Ant tool so that it can be either directly used
from command line or integrated with your IDE of choice
Recommended Directory Layout:
Portlet Plugin Creation:
<LIFERAY_INSTALL_DIR>/plugins/portlets>
./create.sh <PLUGIN_ID> <PLUGIN_NAME>
Portlet Plugin Deployment:
<LIFERAY_INSTALL_DIR>/plugins/portlets/<PLUGIN_DIR>>
ant deploy
14. Liferay Portal 6.0 (5) ARTISANS OF OPEN SOURCE
• Liferay IDE is an extension for the Eclipse platform that supports development
of plug-in projects for the Liferay Portal platform
– Info: http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+IDE
– Download: http://releases.liferay.com/tools/ide/eclipse/indigo/stable/
Portlet Plugin Project Creation: Conventional Plugin Structure:
16. Portlet 1.0 (JSR 168) ARTISANS OF OPEN SOURCE
• JSR 168 standardizes how applications for portal servers are to
be developed:
– Released in October, 2003
– Expert Group: IBM, ASF, Oracle, BEA, SAS, SAS, Citrix, among others
• Defines a common Portlet API and infrastructure that provides
facilities for personalization, presentation, and security
• By adhering to the API and spec, Portlets can be product agnostic
and deployed to compliant portal frameworks without extensive changes
• JSR 168 mainly addresses following topics:
– Portlet Container contract and Portlet Lifecycle Management *
– Packaging and Deployment *
– Definition of Portlet Modes and Window States *
– Portlet Preferences Management *
– User Information and Security
– Localization and Caching
– JSP tags for Portlet Development *
17. Contract and Lifecycle ARTISANS OF OPEN SOURCE
• Portlet Spec defines a contract for the portlet container to call
methods during portlet’s lifecycle (similarly as Servlet API does)
• Interface javax.portlet.Portlet defines a lifecycle consisting of:
– Initialization: init() is called when portlet is instantiated. Intended
to contain logic that prepares it to serve requests
– Deinitialization: destroy() called when portlet is no longer needed
or server shuts down. To contain logic that cleans it up
– Request Processing: in contrast to Servlet, divided in two types…
• Render requests: render() whenever the portlet needs to be redrawn by
the desktop. Performs the render operation
• Action requests: processAction() is called after the user submits changes
to a portlet. Processes input from a user action
18. Contract and Lifecycle (2) ARTISANS OF OPEN SOURCE
• Let’s create a Portlet class printing a greeting from init parameter:
File: /WEB-INF/src/com/sample/generic/portlets/RawPortlet.java
package com.sample.generic.portlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.*;
public class RawPortlet implements javax.portlet.Portlet {
private String greeting;
public void init(PortletConfig config) throws PortletException {
this.greeting = config.getInitParameter("init-param-greeting");
}
public void destroy() {
}
public void render(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PrintWriter writer = response.getWriter();
writer.write(String.format("<p>%s</p>”, greeting));
writer.close();
}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
}
}
19. Packaging & Deployment ARTISANS OF OPEN SOURCE
• Portlets are packaged and deployed as part of standard
Web Application Archive (WAR) files:
– WAR files may contain other web components, such as JSPs
and Servlets
– As portlet applications are extended web applications, they
must include a web.xml file
• In addition, portlet.xml is an additional descriptor that
defines all portlets and per portlet –specific configuration
.
20. Packaging & Deployment (2) ARTISANS OF OPEN SOURCE
• Let’s create standard deployment descriptors for our first Portlet:
File: /WEB-INF/web.xml
<web-app ...>
<display-name>My JSR 168 Speak World Portlets</display-name>
</web-app>
File: /WEB-INF/portlet.xml
<portlet-app ...>
<portlet>
<portlet-name>raw-hello-world-portlet</portlet-name>
<display-name>Raw 1.0 Hello World Portlet</display-name>
<portlet-class>com.sample.generic.portlets.RawPortlet</portlet-class>
<init-param>
<name>init-param-greeting</name>
<value>Hello World from Portlet Init Param!!</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>Raw 1.0 Hello World Portlet</title>
<short-title>Raw 1.0 Hello World Portlet</short-title>
<keywords>Raw 1.0 Hello World Portlet</keywords>
</portlet-info>
</portlet>
</portlet-app>
21. Packaging & Deployment (3) ARTISANS OF OPEN SOURCE
• It is up to each portal server vendor to provide tools to deploy
portlets:
– Portal server vendors provide their own mechanism for deployment. It is
likely that these tools exist in both GUI and command line forms
– Tool vendors usually also have some product-specific steps and descriptors for
portlet packaging and deployment
• In Liferay:
– Development, Packaging and Deployment through “Portlet Plugins”
– Portlet Plugins can be “hot deployed” from either Control Panel and
Command Line (Ant)
– Some additional deployment descriptors are required:
• liferay-plugin-package.properties: general description about the plugin and
dependencies (for built-in jar and tag libraries)
• liferay-portlet.xml: product –specific metadata for the portlets the plugin contains
• liferay-display.xml: display information and categorization for the portlet
23. Packaging & Deployment (5) ARTISANS OF OPEN SOURCE
• After building and deploying the WAR file with structure below, it is
available under specified Category, so can finally get added to a page:
24. Contract and Lifecycle Revisited ARTISANS OF OPEN SOURCE
• Since it is up to the portal server how URL to a Portlet
should be formed, the PortletURL interface represents a URL
that reference the portlet itself:
– PortletURL is created through the RenderResponse. Parameters, a
portlet mode, a window state and a security level can be added to it
– PortletURL must be converted to a String in order to be embeded
into the markup generated by the portlet
• Portlet API provide two types of URL (PortletURLs), one for each
type of request enabled by a portlet’s lifecycle (render and action
requests):
– Action URLs are created with
RenderResponse.createActionURL() and trigger an action
request followed by a render request.
– Render URLs are created with
RenderResponse.createRenderURL() and trigger a render
request
25. Contract and Lifecycle Revisited (2) ARTISANS OF OPEN SOURCE
• Request handling sequence for lifecycle methods:
On a render request,
portlet container may
invoke render on all
portlets of same page.
So, it looks like logic with
side-effects in
render() should be
carefully handled!
.
26. Contract and Lifecycle Revisited (3) ARTISANS OF OPEN SOURCE
• Let’s have our greeting printing differently depending on the type of request to the portlet, by
using render/action request URLs (with and without custom parameters):
File: /WEB-INF/src/com/sample/generic/portlets/RawPortlet.java
...
public class RawPortlet ... {
...
public void render(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PrintWriter writer = response.getWriter();
String renderParameter = request.getParameter("render-param-greeting");
writer.write(String.format("<p>%s</p>",(renderParameter != null)? renderParameter : greeting));
PortletURL renderUrl = response.createRenderURL();
renderUrl.setParameter("render-param-greeting”, "Hello World from Portlet Render Parameter!!");
writer.write(String.format("<p><a href='%1$s' title='%1$s'>Render!</a></p>”, renderUrl.toString()));
PortletURL actionUrl = response.createActionURL();
writer.write(String.format(
"<form action='%1$s' method='POST'>" +
"<input type='submit' value='Action!' title='%1$s' />"+
"</form>", actionUrl.toString())
);
writer.close();
}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
response.setRenderParameter("render-param-greeting”, "Hello World from Portlet Action!!");
}
}
27. Contract and Lifecycle Revisited (4) ARTISANS OF OPEN SOURCE
• After re-deploying our Portlet plugin again:
28. Contract and Lifecycle Revisited (5) ARTISANS OF OPEN SOURCE
• A PortletSession is created per user client per portlet. Portlets can bind
object attributes in different scopes through method setAttribute():
– PortletSession.APPLICATION_SCOPE: enable Portlets within same
portlet app to share data
– PortletSession.PORTLET_SCOPE: data to be private to portlet and its
included resources
• Lifecycle of PortletContext and PortletSession is tied to the lifecycle
of ServletContext and ServletSession of the web application,
respectively:
– Attributes in PortletContext/PortletSession mirrored in ServletContext/
HttpSession
– Portlet request is independent of the Servlet request
• PortalContext class that provides environment -specific info such as:
– The portal vendor, the portal version, and specific portal properties.
– The supported portlet modes and window states
• The information allows the portlet to use vendor specific extensions when
being called by a portal that supports these extensions
29. Let’s Take a Break! ARTISANS OF OPEN SOURCE
Introduction to Portlets using Liferay Portal
(Part 1)
By: Aníbal Gómez-Estrada
http://rivetlogic.com/web/agomez
August 23rd, 2011
Rivet Logic Corporation Rivet Logic Costa Rica SRL
11410 Isaac Newton Square N. Costa Rica Developer's Forge
Suite 210 Edificio María Luisa, 3A office
Reston, VA 20190, USA Paseo Colón, San José, Costa Rica
Ph: 703.955.3480 Fax: 703.234.7711 Ph: (506) 2256-1024 Fax: (506) 2256-1024
30. JSP Support ARTISANS OF OPEN SOURCE
• JSR 168 allows portlet pages to be rendered with JSP technology
– A MVC –like pattern for portlet development can be implemented
when executing the render() method.
– A PortletRequestDispatcher object is available and may be used to
include a JSP as part of the Portlet response
• Additionally, defines a JSP tag library with some useful tags for
common tasks:
– <portlet:defineObjects>: automatically declares the portlet
request, response objects and config objects so they can be used within
the JSP
– <portlet:renderURL> and <portlet:actionURL>: construct
Render and Action URLs that refer back to the portlet
• Let’s take a look how it works…
31. JSP Support (2) ARTISANS OF OPEN SOURCE
• Let’s create a JSPPortlet class which acts as Controller by
dispatching response to a JSP:
File: /WEB-INF/src/com/sample/jsp/portlets/JSPPortlet.java
package com.sample.jsp.portlets;
import java.io.IOException;
import javax.portlet.*;
public class JSPPortlet implements javax.portlet.Portlet {
private PortletContext context;
public void init(PortletConfig config)
throws PortletException {
context= config.getPortletContext();
}
public void destroy() {
}
public void render(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
request.setAttribute("render-attribute-greeting”, "Hello World from Portlet Render Parameter!!”);
PortletRequestDispatcher rd = context.getRequestDispatcher("/html/view.jsp");
rd.include(request,response);
}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
response.setRenderParameter("render-param-greeting”, "Hello World from Portlet Action!!”);
}
}
33. JSP Support (4) ARTISANS OF OPEN SOURCE
• Let’s configure the standard deployment descriptor as usual:
File: /WEB-INF/portlet.xml
<portlet-app ...>
...
<portlet>
<portlet-name>jsp-hello-world-portlet</portlet-name>
<display-name>JSP 1.0 Hello World Portlet</display-name>
<portlet-class>com.sample.jsp.portlets.JSPPortlet</portlet-class>
<init-param>
<name>init-param-greeting</name>
<value>Hello World from Portlet Init Param!!</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>JSP 1.0 Hello World Portlet</title>
<short-title>JSP 1.0 Hello World Portlet</short-title>
<keywords>JSP 1.0 Hello World Portlet</keywords>
</portlet-info>
</portlet>
...
</portlet-app>
34. JSP Support (5) ARTISANS OF OPEN SOURCE
• Finally, let’s add liferay -specific configuration for our new Portlet:
File: /WEB-INF/liferay-portlet.xml
<liferay-portlet-app>
...
<portlet>
<portlet-name>jsp-hello-world-portlet</portlet-name>
<icon>/icon.png</icon>
<instanceable>true</instanceable>
</portlet>
...
</liferay-portlet-app>
File: /WEB-INF/liferay-display.xml
<display>
<category name="category.sample">
...
<portlet id=”jsp-hello-world-portlet" />
...
</category>
</display>
35. JSP Support (6) ARTISANS OF OPEN SOURCE
• After re-deploying our Portlet plugin again:
36. Portlet Modes and Window States ARTISANS OF OPEN SOURCE
• In constrast to Servlets, there are two main state items managed by the
container for each portlet: Portlet Mode and Window State
• Portlet Mode indicates the function the portlet is currently performing:
– The default modes defined in JSR 168 are VIEW, EDIT and HELP
– Custom portlet modes may be defined by instantiating PortletMode class
• Window State indicates the amount of space portlets will be assigned on a page:
– The three states defined are NORMAL, MAXIMIZED and MINIMIZED
– Portlet can use this information to decide how much information to render
• Custom portlet modes and window states are either mapped to vendor-
specific portlet modes and window states supported by the container, or ignored.
– A portlet can use only portlet modes or window states supported by the container
– PortalContext's getSupportedPortletModes() and getSupportedWindowStates()
methods used to retrieve the portlet modes and window states supported by the container
37. Portlet Modes and Window States (2)
ARTISANS OF OPEN SOURCE
• Descriptor portlet.xml must specify which portlet modes and window
states should be supported on a portlet.
• Custom ones are additionally defined by using the <custom-portlet-
mode> and <custom-window-state> elements
• Both Portlet Mode and Window State can be programmatically:
– Queried anywhere by using PortletRequest’s methods to behave
conditionally
– Changed when processing an action request using ActionResponse’s
methods
• Abstract class javax.portlet.GenericPortlet provides a default
implementation (template -like) for the Portlet interface which
transparently handle Portlet Modes and Window States. Subclasses
should override at least one of the following methods:
– doView(), to handle render requests when in VIEW mode
– doEdit(), to handle render requests when in EDIT mode
– doHelp(), to handle render request when in HELP mode
38. Portlet Modes and Window States (3)
ARTISANS OF OPEN SOURCE
• Let’s create a GenericPortlet class which behaves differently
according current Portlet Mode and Window State:
File: /WEB-INF/src/com/sample/generic/portlets/GenericPortlet.java
package com.sample.generic.portlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.*;
public class GenericPortlet extends javax.portlet.GenericPortlet {
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PrintWriter writer = response.getWriter();
if (request.getWindowState() == WindowState.NORMAL)
writer.write("<p>Hello World for View Mode in Normal State!!</p>");
else if (request.getWindowState() == WindowState.MAXIMIZED)
writer.write("<p>Hello World for View Mode in Maximized State!!</p>");
}
@Override
protected void doHelp(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PrintWriter writer = response.getWriter();
writer.write("<p>Hello World for Help Mode!!</p>");
}
}
39. Portlet Modes and Window States (4)
ARTISANS OF OPEN SOURCE
• Now, let’s configure the standard deployment descriptor as usual:
File: /WEB-INF/portlet.xml
<portlet-app ...>
...
<portlet>
<portlet-name>generic-hello-world-portlet</portlet-name>
<display-name>Generic 1.0 Hello World Portlet</display-name>
<portlet-class>com.sample.generic.portlets.GenericPortlet</portlet-class>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>HELP</portlet-mode>
<window-state>NORMAL</window-state>
<window-state>MAXIMIZED</window-state>
</supports>
<portlet-info>
<title>Generic 1.0 Hello World Portlet</title>
<short-title>Generic 1.0 Hello World Portlet</short-title>
<keywords>Generic 1.0 Hello World Portlet</keywords>
</portlet-info>
</portlet>
...
</portlet-app>
40. Portlet Modes and Window States (5)
ARTISANS OF OPEN SOURCE
• Finally, let’s add liferay -specific configuration for our new Portlet:
File: /WEB-INF/liferay-portlet.xml
<liferay-portlet-app>
...
<portlet>
<portlet-name>generic-hello-world-portlet</portlet-name>
<icon>/icon.png</icon>
<instanceable>true</instanceable>
</portlet>
...
</liferay-portlet-app>
File: /WEB-INF/liferay-display.xml
<display>
<category name="category.sample">
...
<portlet id=”generic-hello-world-portlet" />
...
</category>
</display>
41. Portlet Modes and Window States (6)
ARTISANS OF OPEN SOURCE
• After re-deploy our Portlet plugin and adding the Portlet to a page:
42. Portlet Preferences ARTISANS OF OPEN SOURCE
• Portlet Preferences are a set of persistent name/value pairs
managed by the container for each portlet
– To be be used for configuration or provide a custom view or behavior for
different users
• Interface javax.portlet.PortletPreferences enables retrieval and
storage through methods getValues() and setValues(), respectively:
– PortletPreferences object is always accessible when processing requests, but
preference attributes can only be modified during processAction().
The store() method must be invoked for changes to be permanent
– By implementing the interface javax.portlet.PreferencesValidator,
method validate() is invoked during method store() and allows custom
validation of preference values before the container writes changes
to the data store
– By convention, Portlet Preferences are usually modified during EDIT
Portlet Mode
• Descriptor portlet.xml must define preferences that should be available
on a portlet (name and default value). If used, PortletValidator class must
also be specified in portlet.xml
43. Portlet Preferences (2) ARTISANS OF OPEN SOURCE
• Let’s support EDIT mode in our first Portlet and configure a Portlet Preference
and PreferenceValidator in the standard deployment descriptor:
File: /WEB-INF/portlet.xml
<portlet-app ...>
...
<portlet>
<portlet-name>generic-hello-world-portlet</portlet-name>
<display-name>Generic 1.0 Hello World Portlet</display-name>
<portlet-class>com.sample.generic.portlets.GenericPortlet</portlet-class>
<supports>
<mime-type>text/html</mime-type>
...
<portlet-mode>EDIT</portlet-mode>
...
</supports>
<portlet-info>
...
</portlet-info>
<portlet-preferences>
<preference>
<name>preference-test</name>
<value>My default value</value>
</preference>
<preferences-validator>
com.sample.generic.portlets.GenericPortletPreferenceValidator
</preferences-validator>
</portlet-preferences>
</portlet>
...
</portlet-app>
44. Portlet Preferences (3) ARTISANS OF OPEN SOURCE
• Let’s code a validation for empty-values in our
PreferencesValidator class:
File: /WEB-INF/src/com/sample/generic/portlets/
GenericPortletPreferenceValidator.java
…
package com.sample.generic.portlets;
import java.util.ArrayList;
import javax.portlet.*;
public class GenericPortletPreferenceValidator implements PreferencesValidator {
public void validate(PortletPreferences preferences)
throws ValidatorException {
if ("".equals(preferences.getValue("preference-test", ""))) {
ArrayList<String> failedKeys = new ArrayList<String>();
failedKeys.add("preference-test");
throw new ValidatorException
(
"The value of the preference can not be empty”, failedKeys
);
}
}
}
45. Portlet Preferences (4) ARTISANS OF OPEN SOURCE
• Now, let’s add some code to edit the preference in EDIT mode and
display possible validation error:
File: /WEB-INF/src/com/sample/generic/portlets/GenericPortlet.java
package com.sample.generic.portlets;
...
public class GenericPortlet extends javax.portlet.GenericPortlet {
...
@Override
protected void doEdit(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PrintWriter writer = response.getWriter();
String renderParameter = request.getParameter("render-param-preference-error");
if (renderParameter != null && !"".equals(renderParameter))
writer.write("Error: "+ renderParameter);
PortletPreferences preferences = request.getPreferences();
writer.write(
String.format(
"<form action='%1$s' method='POST'>" +
"<input type='text' value='%2$s' name='preferences-form-test' />"+
"<input type='submit' value='Change!' />"+
"</form>",
response.createActionURL().toString(), preferences.getValue("preference-test", "")
)
);
}
...
}
46. Portlet Preferences (5) ARTISANS OF OPEN SOURCE
• Finally, let’s implement some logic to handle the edit action and
pass any edit validation error to render():
File: /WEB-INF/src/com/sample/generic/portlets/GenericPortlet.java
package com.sample.generic.portlets;
...
public class GenericPortlet extends javax.portlet.GenericPortlet {
...
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
if (request.getPortletMode() == PortletMode.EDIT) {
try {
PortletPreferences preferences = request.getPreferences();
preferences.setValue(
"preference-test”, request.getParameter("preferences-form-test")
);
preferences.store();
} catch(ValidatorException e){
response.setRenderParameter(
"render-param-preference-error", e.getMessage()
);
}
}
}
...
}
47. Portlet Preferences (6) ARTISANS OF OPEN SOURCE
• After re-deploying our Portlet plugin and re-adding the new Portlet
to a page:
49. Questions? ARTISANS OF OPEN SOURCE
Introduction to Portlets using Liferay Portal
(Part 1)
By: Aníbal Gómez-Estrada
http://rivetlogic.com/web/agomez
August 23rd, 2011
Rivet Logic Corporation Rivet Logic Costa Rica SRL
11410 Isaac Newton Square N. Costa Rica Developer's Forge
Suite 210 Edificio María Luisa, 3A office
Reston, VA 20190, USA Paseo Colón, San José, Costa Rica
Ph: 703.955.3480 Fax: 703.234.7711 Ph: (506) 2256-1024 Fax: (506) 2256-1024
52. Coming Soon! ARTISANS OF OPEN SOURCE
Introduction to Portlets using Liferay Portal (Part 2)
Coming Soon!
• Liferay Portal Revisited
– Liferay SDK Plugin Types
– Liferay Portlets (Built-in)
– Service Builder
• Portlets 2.0 (JSR 286)
– Inter-Portlet Communication
– Resource Serving
– Lifecycle Revisited
– Enhancements: Annotations and Tag Libraries
• Tentative: JSF 2.0 Portlets
– Portlet Bridges (JSR-301/JSR-329)
– Setup and Hello World Portlet
– Actions and Navigation
– Portlet Preferences
– Inter-Portlet Communication
53. Rivet Logic Is Hiring! ARTISANS OF OPEN SOURCE
We are hiring! Java developers – mcalvo@rivetlogic.com
• Award-winning consulting and systems integration firm
focused on enabling open source –based software solutions
for content management, collaboration and community:
– Innovator of the Year: JBoss (2008)
– Solution of the Year: Alfresco (2010)
– Platinum Partner: Liferay (2011)
• We use top-notch open source technology:
• Company Facts:
– Founded in 2005. Consistently Profitable and Employee-owned. 40+ Consultants
– Headquarters in Virginia, USA. Near-shore office in San José, Costa Rica for two years
– Certified Liferay Partner since 2006