Published using Google Docs
liferay-tutorial-ipc-baseball-1.txt
Updated automatically every 5 minutes

Liferay 6.1 Tutorial - IPC Baseball
http://notarazi.blogspot.com


folder: com.liferay.training.ipc

file:CatcherPortlet.java

file:PitcherPortlet.java

folder: docroot/html/catcher/

file: view.jsp

folder: docroot/html/pitcher/

file: view.jsp

folder: docroot/WEB-INF/

file: liferay-display.xml

file: liferay-plugin-package.properties

file: liferay-plugin-package.properties

file: portlet.xml

file: web.xml

================================================

folder: Java Resources/docroot/WEB-INF/ src/com.liferay.training.ipc

================================================

file:CatcherPortlet.java

================================================

package com.liferay.training.ipc;

import com.liferay.portal.kernel.log.Log;

import com.liferay.portal.kernel.log.LogFactoryUtil;

import java.io.IOException;

import javax.portlet.Event;

import javax.portlet.EventRequest;

import javax.portlet.EventResponse;

import javax.portlet.GenericPortlet;

import javax.portlet.PortletException;

import javax.portlet.PortletRequestDispatcher;

import javax.portlet.ProcessEvent;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;

/**

 * Portlet implementation class CatcherPortlet

 */

public class CatcherPortlet extends GenericPortlet {

    public void init() {

        viewJSP = getInitParameter("view-jsp");

    }

   

    public void doView(

            RenderRequest renderRequest, RenderResponse renderResponse)

        throws IOException, PortletException {

       

        include(viewJSP, renderRequest, renderResponse);

    }

    protected void include(

            String path, RenderRequest renderRequest,

            RenderResponse renderResponse)

        throws IOException, PortletException {

        PortletRequestDispatcher portletRequestDispatcher =

            getPortletContext().getRequestDispatcher(path);

        if (portletRequestDispatcher == null) {

            _log.error(path + " is not a valid include");

        }

        else {

            portletRequestDispatcher.include(renderRequest, renderResponse);

        }

    }

 

    @ProcessEvent(qname="{http://liferay.com/events}ipc.pitch")

    public void catchBall(EventRequest request, EventResponse response) {

        Event event = request.getEvent();

        String pitch = (String)event.getValue();

        response.setRenderParameter("pitch", pitch);

}

   

    protected String viewJSP;

    private static Log _log = LogFactoryUtil.getLog(CatcherPortlet.class);

}

================================================

file:PitcherPortlet.java

================================================

package com.liferay.training.ipc;

import com.liferay.portal.kernel.log.Log;

import com.liferay.portal.kernel.log.LogFactoryUtil;

import java.io.IOException;

import java.util.Random;

import javax.portlet.ActionRequest;

import javax.portlet.ActionResponse;

import javax.portlet.GenericPortlet;

import javax.portlet.PortletException;

import javax.portlet.PortletRequestDispatcher;

import javax.portlet.ProcessAction;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;

import javax.xml.namespace.QName;

/**

 * Portlet implementation class PitcherPortlet

 */

public class PitcherPortlet extends GenericPortlet {

    public void init() {

        viewJSP = getInitParameter("view-jsp");

    }

   

    public void doView(

            RenderRequest renderRequest, RenderResponse renderResponse)

        throws IOException, PortletException {

       

        include(viewJSP, renderRequest, renderResponse);

    }

    protected void include(

            String path, RenderRequest renderRequest,

            RenderResponse renderResponse)

        throws IOException, PortletException {

        PortletRequestDispatcher portletRequestDispatcher =

            getPortletContext().getRequestDispatcher(path);

        if (portletRequestDispatcher == null) {

            _log.error(path + " is not a valid include");

        }

        else {

            portletRequestDispatcher.include(renderRequest, renderResponse);

        }

    }

   

    @ProcessAction(name="pitchBall")

        public void pitchBall(ActionRequest request, ActionResponse response) {

                String pitchType = null;

                // Send an Event that the ball has been pitched.

                Random random = new Random(System.currentTimeMillis());

                int pitch = random.nextInt(3) + 1;

                switch (pitch) {

                case 1:

                        pitchType = "Fast Ball";

                        break;

                case 2:

                        pitchType = "Curve Ball";

                        break;

                case 3:

                        pitchType = "Slider";

                        break;

                // should never print

                default:

                        pitchType = "Screw Ball";

                }

                QName qName = new QName("http://liferay.com/events", "ipc.pitch");

                response.setEvent(qName, pitchType);

        }

 

    protected String viewJSP;

    private static Log _log = LogFactoryUtil.getLog(PitcherPortlet.class);

}

================================================

folder: docroot/html/catcher/

================================================

file: view.jsp

================================================

<%--

/**

* Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.

*

* This library is free software; you can redistribute it and/or modify it under

* the terms of the GNU Lesser General Public License as published by the Free

* Software Foundation; either version 2.1 of the License, or (at your option)

* any later version.

*

* This library is distributed in the hope that it will be useful, but WITHOUT

* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more

* details.

*/

--%>

<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>

<portlet:defineObjects />

<%

String pitch = (String)renderRequest.getParameter("pitch");

%>

<p>And the pitch is....</p>

<p>

<% if (pitch!=null) { %>

        <%=pitch %>!

<% } else { %>

        ... waiting for pitch.

<% } %>

================================================

folder: docroot/html/pitcher/

================================================

file: view.jsp

================================================

<%--

/**

* Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.

*

* This library is free software; you can redistribute it and/or modify it under

* the terms of the GNU Lesser General Public License as published by the Free

* Software Foundation; either version 2.1 of the License, or (at your option)

* any later version.

*

* This library is distributed in the hope that it will be useful, but WITHOUT

* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more

* details.

*/

--%>

<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>

<portlet:defineObjects />

<p>Click the link below to pitch the ball. </p>

<a href="<portlet:actionURL name="pitchBall"></portlet:actionURL>">Pitch!</a>

================================================

folder: docroot/WEB-INF/

================================================

file: liferay-display.xml

================================================

<?xml version="1.0"?>

<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.1.0//EN" "http://www.liferay.com/dtd/liferay-display_6_1_0.dtd">

<display>

        

        <category name="IPC">

                <portlet id="pitcher-portlet"></portlet>

                <portlet id="catcher-portlet"></portlet>

        </category>

</display>

================================================

file: liferay-plugin-package.properties

================================================

name=Ipc Baseball

module-group-id=liferay

module-incremental-version=1

tags=

short-description=

change-log=

page-url=http://www.liferay.com

author=Liferay, Inc.

licenses=LGPL

================================================

file: liferay-portlet.xml

================================================

<?xml version="1.0"?>

<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">

<liferay-portlet-app>

        

        <portlet>

                <portlet-name>pitcher-portlet</portlet-name>

                <icon>/icon.png</icon>

                <instanceable>false</instanceable>

                <header-portlet-css>/css/main.css</header-portlet-css>

                <footer-portlet-javascript>

                        /js/main.js

                </footer-portlet-javascript>

                <css-class-wrapper>pitcher-portlet-portlet</css-class-wrapper>

        </portlet>

        <portlet>

                <portlet-name>catcher-portlet</portlet-name>

                <icon>/icon.png</icon>

                <instanceable>false</instanceable>

                <header-portlet-css>/css/main.css</header-portlet-css>

                <footer-portlet-javascript>

                        /js/main.js

                </footer-portlet-javascript>

                <css-class-wrapper>catcher-portlet-portlet</css-class-wrapper>

        </portlet>

        <role-mapper>

                <role-name>administrator</role-name>

                <role-link>Administrator</role-link>

        </role-mapper>

        <role-mapper>

                <role-name>guest</role-name>

                <role-link>Guest</role-link>

        </role-mapper>

        <role-mapper>

                <role-name>power-user</role-name>

                <role-link>Power User</role-link>

        </role-mapper>

        <role-mapper>

                <role-name>user</role-name>

                <role-link>User</role-link>

        </role-mapper>

</liferay-portlet-app>

================================================

file: portlet.xml

================================================

<?xml version="1.0"?>

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">

        

        <portlet>

                <portlet-name>pitcher-portlet</portlet-name>

                <display-name>Pitcher Portlet</display-name>

                <portlet-class>

                        com.liferay.training.ipc.PitcherPortlet

                </portlet-class>

                <init-param>

                        <name>view-jsp</name>

                        <value>/html/pitcher/view.jsp</value>

                </init-param>

                <expiration-cache>0</expiration-cache>

                <supports>

                        <mime-type>text/html</mime-type>

                        <portlet-mode>view</portlet-mode>

                </supports>

                <portlet-info>

                        <title>Pitcher Portlet</title>

                        <short-title>PitcherPortlet</short-title>

                        <keywords></keywords>

                </portlet-info>

                <security-role-ref>

                        <role-name>administrator</role-name>

                </security-role-ref>

                <security-role-ref>

                        <role-name>guest</role-name>

                </security-role-ref>

                <security-role-ref>

                        <role-name>power-user</role-name>

                </security-role-ref>

                <security-role-ref>

                        <role-name>user</role-name>

                </security-role-ref>

                

                <supported-publishing-event>

                <qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>

                </supported-publishing-event>

                

        </portlet>

        <portlet>

                <portlet-name>catcher-portlet</portlet-name>

                <display-name>Catcher Portlet</display-name>

                <portlet-class>

                        com.liferay.training.ipc.CatcherPortlet

                </portlet-class>

                <init-param>

                        <name>view-jsp</name>

                        <value>/html/catcher/view.jsp</value>

                </init-param>

                <expiration-cache>0</expiration-cache>

                <supports>

                        <mime-type>text/html</mime-type>

                        <portlet-mode>view</portlet-mode>

                </supports>

                <portlet-info>

                        <title>Catcher Portlet</title>

                        <short-title>CatcherPortlet</short-title>

                        <keywords></keywords>

                </portlet-info>

                <security-role-ref>

                        <role-name>administrator</role-name>

                </security-role-ref>

                <security-role-ref>

                        <role-name>guest</role-name>

                </security-role-ref>

                <security-role-ref>

                        <role-name>power-user</role-name>

                </security-role-ref>

                <security-role-ref>

                        <role-name>user</role-name>

                </security-role-ref>

                

                <supported-processing-event>

                <qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>

                </supported-processing-event>

                

        </portlet>

        

        <event-definition>

        <qname xmlns:x="http://liferay.com/events">x:ipc.pitch</qname>

        <value-type>java.lang.String</value-type>

</event-definition>

</portlet-app>

================================================

file: web.xml

================================================

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>ipc-baseball-portlet</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <jsp-config>

          <taglib>

                  <taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>

                  <taglib-location>

                          /WEB-INF/tld/liferay-portlet.tld

                  </taglib-location>

          </taglib>

  </jsp-config>

</web-app>