I would :

 

1)Test with other DBCS based languages Cyrillic, Arabic, Hebrew, Mandarin

If all tests pass refactored  

org.apache.pluto.util.PrintWriterServletOutputStream


2)run it thru Struts portlet archetype


- change directory to where the portlet template is to be created,
  for example, a 'projects' directory (which you may need to create):  
     cd /home/projects
  
- run the following command to generate the sample PORTLET TEMPLATE assuming :-
    - root java package -> com.myCompany.myPortlet

    - the portlet war name   ->  myWebApp

 

--create the Portlet Project
  mvn archetype:create -DgroupId=com.myCompany.myPortlet \
                       -DartifactId=myWebApp \
                       -DarchetypeGroupId=org.apache.struts \
                       -DarchetypeArtifactId=struts2-archetype-portlet \
                       -DarchetypeVersion=2.0.9-SNAPSHOT \
                       
-DremoteRepositories=http://people.apache.org/maven-snapshot-repository

 

- to compile, execute
  mvn compile


- to run test cases execute
  mvn test

 

/*- to clean execute */
/*  mvn clean */

 

- to package execute 
  mvn package

 

- to start it with jetty execute as a servlet
  mvn jetty:run
I wouldnt realistically expect any of this to be done before the New Year but 
if you could verify you can 
create template

create Portlet Project
build with out errors or warnings
run thru aforementioned test cases
package

deploy to jetty
test on jetty


Then you'll have a 100% tested Pluto Portal Refactoring

 

Thanks!
Martin --

  





Date: Thu, 26 Dec 2013 12:25:49 +0530
Subject: Pluto doesn't support character encoding !!
From: [email protected]
To: [email protected]



Hi Pluto Team,
 
Background: 

           We are developing an application using Pluto v1.0.7 with Struts 
v2.0.9 MVC.
 
Problem Description: 
Adding a business name with Greek characters ‘Αυτόείναιμιαδοκιμή’ is rendered 
as ‘Αυτόείναιμιαδοκιμή’

 

Root Cause:

Our Portlet is executing in render phase and we found that it doesn’t supports 
the character set encoding option. Other Portlet execution (like ‘event phase’ 
& ‘regular servlet result’) do support character set encoding. Portlet those 
are executing in render phase uses ‘RenderResponse’ (RenderResponseImpl) object 
which implicitly uses PrintWriterServletOutputStream object which don’t 
consider character set encoding specified with the configuration.

 

Solution: 

To get the expected result we have modified 
‘org.apache.pluto.util.PrintWriterServletOutputStream’ as below, reference:

 
public void write(byte[] pBuf, int pOffset, int pLength)
    throws IOException {
    String strValue = null;
    if(characterEncoding != null && !"".equals(characterEncoding)) {
       strValue = new String(pBuf, pOffset, pLength, characterEncoding);        
   
    }
    if(strValue == null) {
        strValue = new String(pBuf, pOffset, pLength);
    }
    mPrintWriter.write(strValue);
}

 

PS: 
Below are the list of configuration which we used to specify the character set 
encoding which don’t help us hence we modified the 
PrintWriterServletOutputStream class to support specified character sets. See 
the attachment for the same suggestion.
                                          

Reply via email to