Author: [email protected]
Date: Mon Aug 8 17:04:56 2011
New Revision: 1295
Log:
[AMDATUOPENSOCIAL-81] Fixed NullPointerException once the XML is not loaded in
the cache since it could not be found (404)
Modified:
trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigOpenSocialContainerImpl.java
Modified:
trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigOpenSocialContainerImpl.java
==============================================================================
---
trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigOpenSocialContainerImpl.java
(original)
+++
trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigOpenSocialContainerImpl.java
Mon Aug 8 17:04:56 2011
@@ -15,42 +15,42 @@
*/
package org.amdatu.opensocial.shindig.service;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.Charset;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.FutureTask;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.amdatu.auth.tokenprovider.InvalidTokenException;
-import org.amdatu.auth.tokenprovider.TokenProvider;
-import org.amdatu.auth.tokenprovider.TokenProviderException;
-import org.amdatu.core.tenant.Tenant;
-import org.amdatu.opensocial.gadgetmanagement.OpenSocialContainer;
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.DependencyManager;
-import org.apache.shindig.auth.BlobCrypterSecurityToken;
-import org.apache.shindig.common.crypto.BasicBlobCrypter;
-import org.apache.shindig.common.crypto.BlobCrypterException;
-import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.common.util.Utf8UrlCoder;
-import org.apache.shindig.gadgets.spec.GadgetSpec;
-import org.apache.shindig.gadgets.spec.LocaleSpec;
-import org.apache.shindig.gadgets.spec.MessageBundle;
-import org.apache.shindig.gadgets.variables.Substitutions;
-import org.osgi.framework.Constants;
-import org.osgi.service.log.LogService;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.FutureTask;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.amdatu.auth.tokenprovider.InvalidTokenException;
+import org.amdatu.auth.tokenprovider.TokenProvider;
+import org.amdatu.auth.tokenprovider.TokenProviderException;
+import org.amdatu.core.tenant.Tenant;
+import org.amdatu.opensocial.gadgetmanagement.OpenSocialContainer;
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
+import org.apache.shindig.auth.BlobCrypterSecurityToken;
+import org.apache.shindig.common.crypto.BasicBlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypterException;
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.common.util.Utf8UrlCoder;
+import org.apache.shindig.gadgets.spec.GadgetSpec;
+import org.apache.shindig.gadgets.spec.LocaleSpec;
+import org.apache.shindig.gadgets.spec.MessageBundle;
+import org.apache.shindig.gadgets.variables.Substitutions;
+import org.osgi.framework.Constants;
+import org.osgi.service.log.LogService;
/**
* Shindig implementation of the OpenSocialContainer interface.
@@ -132,48 +132,53 @@
Map<String, String> gadgetSpec = new HashMap<String, String>();
try {
m_logService.log(LogService.LOG_DEBUG, "Retrieving gadgetspec for
'" + gadgetUrl + "'");
- String xml = loadXMLFromCache(new URL(gadgetUrl));
- GadgetSpec spec = new GadgetSpec(Uri.parse(gadgetUrl), xml);
-
- // Perform message substitution if locales are available
- Map<Locale, LocaleSpec> locales =
spec.getModulePrefs().getLocales();
- if (locales != null && locales.size() > 0) {
- // TODO: replace this with users locale
- Locale defaultLocale = Locale.getDefault();
- Locale locale = getPreferredLocale(defaultLocale, locales);
-
- // First replace messages with the preferred language labels
- String messageXML = internalLoadXML(new
URL(locales.get(locale).getMessages().toString()));
- MessageBundle bundle = new MessageBundle(locales.get(locale),
messageXML);
- Substitutions substituter = new Substitutions();
- substituter.addSubstitutions(Substitutions.Type.MESSAGE,
bundle.getMessages());
- spec = spec.substitute(substituter);
-
- // Replace the remaining messages with 'all' messages
- locale = getPreferredLocale(new Locale("all", "all"), locales);
- messageXML = internalLoadXML(new
URL(locales.get(locale).getMessages().toString()));
- bundle = new MessageBundle(locales.get(locale), messageXML);
- substituter = new Substitutions();
- substituter.addSubstitutions(Substitutions.Type.MESSAGE,
bundle.getMessages());
- spec = spec.substitute(substituter);
- }
-
- // Copy attributes
- gadgetSpec.put("title", spec.getModulePrefs().getTitle());
- gadgetSpec.put("description",
spec.getModulePrefs().getDescription());
- gadgetSpec.put("author", spec.getModulePrefs().getAuthor());
- gadgetSpec.put("title_url",
spec.getModulePrefs().getTitleUrl().toString());
-
- if (spec.getModulePrefs().getScreenshot() != null
- &&
!spec.getModulePrefs().getScreenshot().toString().isEmpty()) {
- gadgetSpec.put("screenshot",
spec.getModulePrefs().getScreenshot().toString());
- }
- else {
- gadgetSpec.put("screenshot", request.getContextPath() + "/"
- + "/static/images/defaultgadget.png");
+ String xml = loadXMLFromCache(new URL(gadgetUrl));
+ if (xml != null) {
+ GadgetSpec spec = new GadgetSpec(Uri.parse(gadgetUrl), xml);
+
+ // Perform message substitution if locales are available
+ Map<Locale, LocaleSpec> locales =
spec.getModulePrefs().getLocales();
+ if (locales != null && locales.size() > 0) {
+ // TODO: replace this with users locale
+ Locale defaultLocale = Locale.getDefault();
+ Locale locale = getPreferredLocale(defaultLocale, locales);
+
+ // First replace messages with the preferred language
labels
+ String messageXML = internalLoadXML(new
URL(locales.get(locale).getMessages().toString()));
+ MessageBundle bundle = new
MessageBundle(locales.get(locale), messageXML);
+ Substitutions substituter = new Substitutions();
+ substituter.addSubstitutions(Substitutions.Type.MESSAGE,
bundle.getMessages());
+ spec = spec.substitute(substituter);
+
+ // Replace the remaining messages with 'all' messages
+ locale = getPreferredLocale(new Locale("all", "all"),
locales);
+ messageXML = internalLoadXML(new
URL(locales.get(locale).getMessages().toString()));
+ bundle = new MessageBundle(locales.get(locale),
messageXML);
+ substituter = new Substitutions();
+ substituter.addSubstitutions(Substitutions.Type.MESSAGE,
bundle.getMessages());
+ spec = spec.substitute(substituter);
+ }
+
+ // Copy attributes
+ gadgetSpec.put("title", spec.getModulePrefs().getTitle());
+ gadgetSpec.put("description",
spec.getModulePrefs().getDescription());
+ gadgetSpec.put("author", spec.getModulePrefs().getAuthor());
+ gadgetSpec.put("title_url",
spec.getModulePrefs().getTitleUrl().toString());
+
+ if (spec.getModulePrefs().getScreenshot() != null
+ &&
!spec.getModulePrefs().getScreenshot().toString().isEmpty()) {
+ gadgetSpec.put("screenshot",
spec.getModulePrefs().getScreenshot().toString());
+ }
+ else {
+ gadgetSpec.put("screenshot", request.getContextPath() + "/"
+ + "/static/images/defaultgadget.png");
+ }
+
+ return gadgetSpec;
+ }
+ else {
+ m_logService.log(LogService.LOG_WARNING, "Could not retrieve
gadget spec for url '" + gadgetUrl + "', ignoring gadget");
}
-
- return gadgetSpec;
}
catch (Exception e) {
// Catch all exceptions since even an improper URL can cause a
NullPointerException here
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits