You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2010/06/16 23:45:03 UTC
svn commit: r955407 - in /incubator/wookie/branches/pluggablepersistence:
parser/java/src/org/apache/wookie/w3c/util/ src/org/apache/wookie/beans/
src/org/apache/wookie/controller/ src/org/apache/wookie/helpers/
src/org/apache/wookie/util/opensocial/
Author: scottbw
Date: Wed Jun 16 21:45:03 2010
New Revision: 955407
URL: http://svn.apache.org/viewvc?rev=955407&view=rev
Log:
[in PP branch] replaced calls for localization using collections with arrays; this is because the parser may be loaded with a different classloader, and so cannot appropriately cast the return arrays from the supplied collection.
Modified:
incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java
incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java
incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
Modified: incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java?rev=955407&r1=955406&r2=955407&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java (original)
+++ incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java Wed Jun 16 21:45:03 2010
@@ -49,20 +49,6 @@ public class LocalizationUtils {
}
/**
- * Returns the first (best) match for an element given the set of locales, or null
- * if there are no suitable elements.
- * @param elements collection
- * @param locales
- * @return an ILocalizedElement, or null if there are no valid entries
- */
- public static ILocalizedElement getLocalizedElement(Collection<? extends ILocalizedElement> elements, String[] locales){
- if (elements == null) return null;
- ILocalizedElement[] elementsArray = processElementsByLocales(elements,locales);
- if (elementsArray.length == 0) return null;
- return elementsArray[0];
- }
-
- /**
* Filters and sorts a list of localized elements using the given locale list; only localized elements
* are returned unless no appropriate localized elements are found, in which case nonlocalized elements
* are returned
@@ -79,23 +65,6 @@ public class LocalizationUtils {
}
/**
- * Filters and sorts a list of localized elements using the given locale list; only localized elements
- * are returned unless no appropriate localized elements are found, in which case nonlocalized elements
- * are returned
- *
- * @param elements collection
- * @param locales
- * @return the sorted and filtered set of elements
- */
- public static ILocalizedElement[] processElementsByLocales(Collection<? extends ILocalizedElement> elements,String[] locales){
- if (elements == null) return null;
- List<ULocale> localesList = getProcessedLocaleList(locales);
- ILocalizedElement[] elementsArray = elements.toArray(new ILocalizedElement[elements.size()]);
- Arrays.sort(elementsArray, new LocaleComparator(localesList));
- return filter(elementsArray,localesList);
- }
-
- /**
* Sorts an array of localized elements using default locales (*). This places
* any localized elements first, then any unlocalized elements
* @return
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java?rev=955407&r1=955406&r2=955407&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java Wed Jun 16 21:45:03 2010
@@ -332,7 +332,8 @@ public interface IWidget extends IBean
*/
public static String getWidgetTitle(IWidget widget, String locale)
{
- IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(), new String[]{locale});
+ IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
+ IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
return ((name != null) ? name.getName() : IW3CXMLConfiguration.UNKNOWN);
}
@@ -345,7 +346,8 @@ public interface IWidget extends IBean
*/
public static String getWidgetDescription(IWidget widget, String locale)
{
- IDescription description = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), new String[]{locale});
+ IDescription[] descriptions = widget.getDescriptions().toArray(new IDescription[widget.getDescriptions().size()]);
+ IDescription description = (IDescription)LocalizationUtils.getLocalizedElement(descriptions, new String[]{locale});
return ((description != null) ? description.getContent() : null);
}
@@ -358,7 +360,8 @@ public interface IWidget extends IBean
*/
public static String getWidgetShortName(IWidget widget, String locale)
{
- IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(), new String[]{locale});
+ IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
+ IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
return ((name != null) ? name.getShortName() : IW3CXMLConfiguration.UNKNOWN);
}
@@ -411,7 +414,8 @@ public interface IWidget extends IBean
*/
public static String getUrl(IWidget widget, String locale)
{
- IStartFile startFile = (IStartFile)LocalizationUtils.getLocalizedElement(widget.getStartFiles(), new String[]{locale});
+ IStartFile[] startFiles = widget.getStartFiles().toArray(new IStartFile[widget.getStartFiles().size()]);
+ IStartFile startFile = (IStartFile)LocalizationUtils.getLocalizedElement(startFiles, new String[]{locale});
return ((startFile != null) ? startFile.getUrl() : null);
}
@@ -424,7 +428,8 @@ public interface IWidget extends IBean
*/
public static String getWidgetIconLocation(IWidget widget, String locale)
{
- IWidgetIcon icon = (IWidgetIcon)LocalizationUtils.getLocalizedElement(widget.getWidgetIcons(), new String[]{locale});
+ IWidgetIcon[] icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
+ IWidgetIcon icon = (IWidgetIcon)LocalizationUtils.getLocalizedElement(icons, new String[]{locale});
return ((icon != null) ? icon.getSrc() : null);
}
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=955407&r1=955406&r2=955407&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java Wed Jun 16 21:45:03 2010
@@ -305,7 +305,7 @@ public class WidgetInstancesController e
protected static String getUrl(HttpServletRequest request, IWidgetInstance instance) throws IOException{
String url = "";
- Collection<IStartFile> startFiles = instance.getWidget().getStartFiles();
+ IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
IStartFile sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{instance.getLang()});
// Try default locale if no appropriate localization found
if (sf == null) sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, null);
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java?rev=955407&r1=955406&r2=955407&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java Wed Jun 16 21:45:03 2010
@@ -115,7 +115,8 @@ public class WidgetHelper {
private static String getLicenses(IWidget widget, String[] locales){
String out = "";
- ILicense[] licenses = (ILicense[])LocalizationUtils.processElementsByLocales(widget.getLicenses(), locales);
+ ILicense[] licenses = widget.getLicenses().toArray(new ILicense[widget.getLicenses().size()]);
+ licenses = (ILicense[])LocalizationUtils.processElementsByLocales(licenses, locales);
for (ILicense license: licenses){
out +="\t\t<license ";
if (license.getLang()!=null) out+=" xml:lang=\""+license.getLang()+"\"";
@@ -135,7 +136,8 @@ public class WidgetHelper {
}
private static String getName(IWidget widget, String[] locales){
- IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(),locales);
+ IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
+ IName name = (IName)LocalizationUtils.getLocalizedElement(names,locales);
String shortName = null;
String longName = null;
if (name != null) {
@@ -152,7 +154,8 @@ public class WidgetHelper {
}
private static String getDescription(IWidget widget, String[] locales){
- IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), locales);
+ IDescription[] descriptions = widget.getDescriptions().toArray(new IDescription[widget.getDescriptions().size()]);
+ IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(descriptions, locales);
String out = "\t\t<description";
if (desc!= null && desc.getDir()!=null) out+=" dir=\""+desc.getDir()+"\"";
out += ">";
@@ -174,7 +177,7 @@ public class WidgetHelper {
String out = "";
IWidgetIcon[] icons;
if (locales != null && locales.length != 0){
- icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons(), locales);
+ icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]), locales);
} else {
icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java?rev=955407&r1=955406&r2=955407&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java Wed Jun 16 21:45:03 2010
@@ -127,8 +127,8 @@ public class OpenSocialUtils {
}
private static String getUrl(IWidgetInstance instance){
- Collection<IStartFile> files = instance.getWidget().getStartFiles();
- IStartFile start = (IStartFile) LocalizationUtils.getLocalizedElement(files, new String[]{"en"});
+ IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
+ IStartFile start = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{"en"});
return start.getUrl();
}
Re: svn commit: r955407 - in /incubator/wookie/branches/pluggablepersistence: parser/java/src/org/apache/wookie/w3c/util/ src/org/apache/wookie/beans/ src/org/apache/wookie/controller/ src/org/apache/wookie/helpers/ src/org/apache/wookie/util/opensocial/
Posted by Scott Wilson <sc...@gmail.com>.
On 16 Jun 2010, at 23:09, Randy Watler wrote:
> Scott:
>
> Phew... that was unexpected! I was just trying to save some marshaling to/from arrays there, (now I feel like an idiot). What configurations have the parser loaded in a different classloader?
I noticed that, however calls like /wookie/widgets?all=true were throwing errors - it took me a while to track it down to this marshalling problem.
It arises as the Parser module is compiled as a separate sub-project and installed via Ivy as a dependency, so it doesn't necessarily have runtime access to the Wookie Server classes.
>
> Randy
>
> scottbw@apache.org wrote:
>> Author: scottbw
>> Date: Wed Jun 16 21:45:03 2010
>> New Revision: 955407
>>
>> URL: http://svn.apache.org/viewvc?rev=955407&view=rev
>> Log:
>> [in PP branch] replaced calls for localization using collections with arrays; this is because the parser may be loaded with a different classloader, and so cannot appropriately cast the return arrays from the supplied collection.
>>
>> Modified:
>> incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java
>> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java
>> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
>> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
>> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
>>
>> Modified: incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java
>> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java?rev=955407&r1=955406&r2=955407&view=diff
>> ==============================================================================
>> --- incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java (original)
>> +++ incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java Wed Jun 16 21:45:03 2010
>> @@ -49,20 +49,6 @@ public class LocalizationUtils {
>> }
>>
>> /**
>> - * Returns the first (best) match for an element given the set of locales, or null
>> - * if there are no suitable elements.
>> - * @param elements collection
>> - * @param locales
>> - * @return an ILocalizedElement, or null if there are no valid entries
>> - */
>> - public static ILocalizedElement getLocalizedElement(Collection<? extends ILocalizedElement> elements, String[] locales){
>> - if (elements == null) return null;
>> - ILocalizedElement[] elementsArray = processElementsByLocales(elements,locales);
>> - if (elementsArray.length == 0) return null;
>> - return elementsArray[0];
>> - }
>> -
>> - /**
>> * Filters and sorts a list of localized elements using the given locale list; only localized elements
>> * are returned unless no appropriate localized elements are found, in which case nonlocalized elements
>> * are returned
>> @@ -79,23 +65,6 @@ public class LocalizationUtils {
>> }
>>
>> /**
>> - * Filters and sorts a list of localized elements using the given locale list; only localized elements
>> - * are returned unless no appropriate localized elements are found, in which case nonlocalized elements
>> - * are returned
>> - * - * @param elements collection
>> - * @param locales
>> - * @return the sorted and filtered set of elements
>> - */
>> - public static ILocalizedElement[] processElementsByLocales(Collection<? extends ILocalizedElement> elements,String[] locales){
>> - if (elements == null) return null;
>> - List<ULocale> localesList = getProcessedLocaleList(locales);
>> - ILocalizedElement[] elementsArray = elements.toArray(new ILocalizedElement[elements.size()]);
>> - Arrays.sort(elementsArray, new LocaleComparator(localesList));
>> - return filter(elementsArray,localesList);
>> - }
>> -
>> - /**
>> * Sorts an array of localized elements using default locales (*). This places
>> * any localized elements first, then any unlocalized elements
>> * @return
>>
>> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java
>> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java?rev=955407&r1=955406&r2=955407&view=diff
>> ==============================================================================
>> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java (original)
>> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java Wed Jun 16 21:45:03 2010
>> @@ -332,7 +332,8 @@ public interface IWidget extends IBean
>> */
>> public static String getWidgetTitle(IWidget widget, String locale)
>> {
>> - IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(), new String[]{locale});
>> + IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
>> + IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
>> return ((name != null) ? name.getName() : IW3CXMLConfiguration.UNKNOWN);
>> }
>> @@ -345,7 +346,8 @@ public interface IWidget extends IBean
>> */
>> public static String getWidgetDescription(IWidget widget, String locale)
>> {
>> - IDescription description = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), new String[]{locale});
>> + IDescription[] descriptions = widget.getDescriptions().toArray(new IDescription[widget.getDescriptions().size()]);
>> + IDescription description = (IDescription)LocalizationUtils.getLocalizedElement(descriptions, new String[]{locale});
>> return ((description != null) ? description.getContent() : null);
>> }
>> @@ -358,7 +360,8 @@ public interface IWidget extends IBean
>> */
>> public static String getWidgetShortName(IWidget widget, String locale)
>> {
>> - IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(), new String[]{locale});
>> + IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
>> + IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
>> return ((name != null) ? name.getShortName() : IW3CXMLConfiguration.UNKNOWN);
>> }
>> @@ -411,7 +414,8 @@ public interface IWidget extends IBean
>> */
>> public static String getUrl(IWidget widget, String locale)
>> {
>> - IStartFile startFile = (IStartFile)LocalizationUtils.getLocalizedElement(widget.getStartFiles(), new String[]{locale});
>> + IStartFile[] startFiles = widget.getStartFiles().toArray(new IStartFile[widget.getStartFiles().size()]);
>> + IStartFile startFile = (IStartFile)LocalizationUtils.getLocalizedElement(startFiles, new String[]{locale});
>> return ((startFile != null) ? startFile.getUrl() : null);
>> }
>> @@ -424,7 +428,8 @@ public interface IWidget extends IBean
>> */
>> public static String getWidgetIconLocation(IWidget widget, String locale)
>> {
>> - IWidgetIcon icon = (IWidgetIcon)LocalizationUtils.getLocalizedElement(widget.getWidgetIcons(), new String[]{locale});
>> + IWidgetIcon[] icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
>> + IWidgetIcon icon = (IWidgetIcon)LocalizationUtils.getLocalizedElement(icons, new String[]{locale});
>> return ((icon != null) ? icon.getSrc() : null);
>> }
>> }
>>
>> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
>> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=955407&r1=955406&r2=955407&view=diff
>> ==============================================================================
>> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java (original)
>> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java Wed Jun 16 21:45:03 2010
>> @@ -305,7 +305,7 @@ public class WidgetInstancesController e
>> protected static String getUrl(HttpServletRequest request, IWidgetInstance instance) throws IOException{
>> String url = "";
>> - Collection<IStartFile> startFiles = instance.getWidget().getStartFiles();
>> + IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
>> IStartFile sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{instance.getLang()});
>> // Try default locale if no appropriate localization found
>> if (sf == null) sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, null);
>>
>> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
>> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java?rev=955407&r1=955406&r2=955407&view=diff
>> ==============================================================================
>> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java (original)
>> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java Wed Jun 16 21:45:03 2010
>> @@ -115,7 +115,8 @@ public class WidgetHelper {
>>
>> private static String getLicenses(IWidget widget, String[] locales){
>> String out = "";
>> - ILicense[] licenses = (ILicense[])LocalizationUtils.processElementsByLocales(widget.getLicenses(), locales);
>> + ILicense[] licenses = widget.getLicenses().toArray(new ILicense[widget.getLicenses().size()]);
>> + licenses = (ILicense[])LocalizationUtils.processElementsByLocales(licenses, locales);
>> for (ILicense license: licenses){
>> out +="\t\t<license ";
>> if (license.getLang()!=null) out+=" xml:lang=\""+license.getLang()+"\"";
>> @@ -135,7 +136,8 @@ public class WidgetHelper {
>> }
>> private static String getName(IWidget widget, String[] locales){
>> - IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(),locales);
>> + IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
>> + IName name = (IName)LocalizationUtils.getLocalizedElement(names,locales);
>> String shortName = null;
>> String longName = null;
>> if (name != null) {
>> @@ -152,7 +154,8 @@ public class WidgetHelper {
>> }
>> private static String getDescription(IWidget widget, String[] locales){
>> - IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), locales);
>> + IDescription[] descriptions = widget.getDescriptions().toArray(new IDescription[widget.getDescriptions().size()]);
>> + IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(descriptions, locales);
>> String out = "\t\t<description";
>> if (desc!= null && desc.getDir()!=null) out+=" dir=\""+desc.getDir()+"\"";
>> out += ">";
>> @@ -174,7 +177,7 @@ public class WidgetHelper {
>> String out = "";
>> IWidgetIcon[] icons;
>> if (locales != null && locales.length != 0){
>> - icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons(), locales);
>> + icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]), locales);
>> } else {
>> icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
>> }
>>
>> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
>> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java?rev=955407&r1=955406&r2=955407&view=diff
>> ==============================================================================
>> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java (original)
>> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java Wed Jun 16 21:45:03 2010
>> @@ -127,8 +127,8 @@ public class OpenSocialUtils {
>> }
>>
>> private static String getUrl(IWidgetInstance instance){
>> - Collection<IStartFile> files = instance.getWidget().getStartFiles();
>> - IStartFile start = (IStartFile) LocalizationUtils.getLocalizedElement(files, new String[]{"en"});
>> + IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
>> + IStartFile start = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{"en"});
>> return start.getUrl();
>> }
>>
>>
>>
>>
>
Re: svn commit: r955407 - in /incubator/wookie/branches/pluggablepersistence:
parser/java/src/org/apache/wookie/w3c/util/ src/org/apache/wookie/beans/
src/org/apache/wookie/controller/ src/org/apache/wookie/helpers/ src/org/apache/wookie/util/opensocial/
Posted by Randy Watler <wa...@wispertel.net>.
Scott:
Phew... that was unexpected! I was just trying to save some marshaling
to/from arrays there, (now I feel like an idiot). What configurations
have the parser loaded in a different classloader?
Randy
scottbw@apache.org wrote:
> Author: scottbw
> Date: Wed Jun 16 21:45:03 2010
> New Revision: 955407
>
> URL: http://svn.apache.org/viewvc?rev=955407&view=rev
> Log:
> [in PP branch] replaced calls for localization using collections with arrays; this is because the parser may be loaded with a different classloader, and so cannot appropriately cast the return arrays from the supplied collection.
>
> Modified:
> incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java
> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java
> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
> incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
>
> Modified: incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java
> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java?rev=955407&r1=955406&r2=955407&view=diff
> ==============================================================================
> --- incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java (original)
> +++ incubator/wookie/branches/pluggablepersistence/parser/java/src/org/apache/wookie/w3c/util/LocalizationUtils.java Wed Jun 16 21:45:03 2010
> @@ -49,20 +49,6 @@ public class LocalizationUtils {
> }
>
> /**
> - * Returns the first (best) match for an element given the set of locales, or null
> - * if there are no suitable elements.
> - * @param elements collection
> - * @param locales
> - * @return an ILocalizedElement, or null if there are no valid entries
> - */
> - public static ILocalizedElement getLocalizedElement(Collection<? extends ILocalizedElement> elements, String[] locales){
> - if (elements == null) return null;
> - ILocalizedElement[] elementsArray = processElementsByLocales(elements,locales);
> - if (elementsArray.length == 0) return null;
> - return elementsArray[0];
> - }
> -
> - /**
> * Filters and sorts a list of localized elements using the given locale list; only localized elements
> * are returned unless no appropriate localized elements are found, in which case nonlocalized elements
> * are returned
> @@ -79,23 +65,6 @@ public class LocalizationUtils {
> }
>
> /**
> - * Filters and sorts a list of localized elements using the given locale list; only localized elements
> - * are returned unless no appropriate localized elements are found, in which case nonlocalized elements
> - * are returned
> - *
> - * @param elements collection
> - * @param locales
> - * @return the sorted and filtered set of elements
> - */
> - public static ILocalizedElement[] processElementsByLocales(Collection<? extends ILocalizedElement> elements,String[] locales){
> - if (elements == null) return null;
> - List<ULocale> localesList = getProcessedLocaleList(locales);
> - ILocalizedElement[] elementsArray = elements.toArray(new ILocalizedElement[elements.size()]);
> - Arrays.sort(elementsArray, new LocaleComparator(localesList));
> - return filter(elementsArray,localesList);
> - }
> -
> - /**
> * Sorts an array of localized elements using default locales (*). This places
> * any localized elements first, then any unlocalized elements
> * @return
>
> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java
> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java?rev=955407&r1=955406&r2=955407&view=diff
> ==============================================================================
> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java (original)
> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/IWidget.java Wed Jun 16 21:45:03 2010
> @@ -332,7 +332,8 @@ public interface IWidget extends IBean
> */
> public static String getWidgetTitle(IWidget widget, String locale)
> {
> - IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(), new String[]{locale});
> + IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
> + IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
> return ((name != null) ? name.getName() : IW3CXMLConfiguration.UNKNOWN);
> }
>
> @@ -345,7 +346,8 @@ public interface IWidget extends IBean
> */
> public static String getWidgetDescription(IWidget widget, String locale)
> {
> - IDescription description = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), new String[]{locale});
> + IDescription[] descriptions = widget.getDescriptions().toArray(new IDescription[widget.getDescriptions().size()]);
> + IDescription description = (IDescription)LocalizationUtils.getLocalizedElement(descriptions, new String[]{locale});
> return ((description != null) ? description.getContent() : null);
> }
>
> @@ -358,7 +360,8 @@ public interface IWidget extends IBean
> */
> public static String getWidgetShortName(IWidget widget, String locale)
> {
> - IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(), new String[]{locale});
> + IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
> + IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
> return ((name != null) ? name.getShortName() : IW3CXMLConfiguration.UNKNOWN);
> }
>
> @@ -411,7 +414,8 @@ public interface IWidget extends IBean
> */
> public static String getUrl(IWidget widget, String locale)
> {
> - IStartFile startFile = (IStartFile)LocalizationUtils.getLocalizedElement(widget.getStartFiles(), new String[]{locale});
> + IStartFile[] startFiles = widget.getStartFiles().toArray(new IStartFile[widget.getStartFiles().size()]);
> + IStartFile startFile = (IStartFile)LocalizationUtils.getLocalizedElement(startFiles, new String[]{locale});
> return ((startFile != null) ? startFile.getUrl() : null);
> }
>
> @@ -424,7 +428,8 @@ public interface IWidget extends IBean
> */
> public static String getWidgetIconLocation(IWidget widget, String locale)
> {
> - IWidgetIcon icon = (IWidgetIcon)LocalizationUtils.getLocalizedElement(widget.getWidgetIcons(), new String[]{locale});
> + IWidgetIcon[] icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
> + IWidgetIcon icon = (IWidgetIcon)LocalizationUtils.getLocalizedElement(icons, new String[]{locale});
> return ((icon != null) ? icon.getSrc() : null);
> }
> }
>
> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=955407&r1=955406&r2=955407&view=diff
> ==============================================================================
> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java (original)
> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java Wed Jun 16 21:45:03 2010
> @@ -305,7 +305,7 @@ public class WidgetInstancesController e
> protected static String getUrl(HttpServletRequest request, IWidgetInstance instance) throws IOException{
> String url = "";
>
> - Collection<IStartFile> startFiles = instance.getWidget().getStartFiles();
> + IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
> IStartFile sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{instance.getLang()});
> // Try default locale if no appropriate localization found
> if (sf == null) sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, null);
>
> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java?rev=955407&r1=955406&r2=955407&view=diff
> ==============================================================================
> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java (original)
> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java Wed Jun 16 21:45:03 2010
> @@ -115,7 +115,8 @@ public class WidgetHelper {
>
> private static String getLicenses(IWidget widget, String[] locales){
> String out = "";
> - ILicense[] licenses = (ILicense[])LocalizationUtils.processElementsByLocales(widget.getLicenses(), locales);
> + ILicense[] licenses = widget.getLicenses().toArray(new ILicense[widget.getLicenses().size()]);
> + licenses = (ILicense[])LocalizationUtils.processElementsByLocales(licenses, locales);
> for (ILicense license: licenses){
> out +="\t\t<license ";
> if (license.getLang()!=null) out+=" xml:lang=\""+license.getLang()+"\"";
> @@ -135,7 +136,8 @@ public class WidgetHelper {
> }
>
> private static String getName(IWidget widget, String[] locales){
> - IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(),locales);
> + IName[] names = widget.getNames().toArray(new IName[widget.getNames().size()]);
> + IName name = (IName)LocalizationUtils.getLocalizedElement(names,locales);
> String shortName = null;
> String longName = null;
> if (name != null) {
> @@ -152,7 +154,8 @@ public class WidgetHelper {
> }
>
> private static String getDescription(IWidget widget, String[] locales){
> - IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), locales);
> + IDescription[] descriptions = widget.getDescriptions().toArray(new IDescription[widget.getDescriptions().size()]);
> + IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(descriptions, locales);
> String out = "\t\t<description";
> if (desc!= null && desc.getDir()!=null) out+=" dir=\""+desc.getDir()+"\"";
> out += ">";
> @@ -174,7 +177,7 @@ public class WidgetHelper {
> String out = "";
> IWidgetIcon[] icons;
> if (locales != null && locales.length != 0){
> - icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons(), locales);
> + icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]), locales);
> } else {
> icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
> }
>
> Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
> URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java?rev=955407&r1=955406&r2=955407&view=diff
> ==============================================================================
> --- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java (original)
> +++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java Wed Jun 16 21:45:03 2010
> @@ -127,8 +127,8 @@ public class OpenSocialUtils {
> }
>
> private static String getUrl(IWidgetInstance instance){
> - Collection<IStartFile> files = instance.getWidget().getStartFiles();
> - IStartFile start = (IStartFile) LocalizationUtils.getLocalizedElement(files, new String[]{"en"});
> + IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
> + IStartFile start = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{"en"});
> return start.getUrl();
> }
>
>
>
>
>