Author: jwaldman
Date: Tue May  1 09:55:08 2007
New Revision: 534154

URL: http://svn.apache.org/viewvc?view=rev&rev=534154
Log:
ADFFACES-478
https://issues.apache.org/jira/browse/ADFFACES-478
servlet exception when browser is unknown because the Agent for unknown browser 
had null attributes. 
Now they have "unknown" String attributes so that we won't get NPEs when code 
uses the Agent's
attribute values in comparisons.

Modified:
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts

Modified: 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java?view=diff&rev=534154&r1=534153&r2=534154
==============================================================================
--- 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
 (original)
+++ 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
 Tue May  1 09:55:08 2007
@@ -49,6 +49,7 @@
   {
     AgentImpl agent = new AgentImpl();
 
+    // Get the RequestHeaderMap to help populate the agent
     Map<String, String> headerMap;
     if (facesContext != null)
     {
@@ -60,12 +61,14 @@
     }
 
     //TODO: Add declarative and extensible means for populating AgentImpl 
object
+    // the RequestHeaderMap helps populate the agent
     _populateAgentImpl(headerMap, agent);
 
     return agent;
   }
 
-
+  // The headerMap is the RequestHeaderMap from the externalContext. It is 
+  // consulted to correctly populate the agent
   private void _populateAgentImpl(Map<String, String> headerMap, AgentImpl 
agent)
   {
     
@@ -90,7 +93,7 @@
 
     if (userAgent == null)
     {
-      _populateNullAgentImpl(userAgent, agent);
+      _populateUnknownAgentImpl(userAgent, agent);
       return;
     }
     
@@ -207,14 +210,20 @@
         return;
     }
 
-    _populateNullAgentImpl(userAgent, agent);
+    _populateUnknownAgentImpl(userAgent, agent);
   }
 
-  private void _populateNullAgentImpl(String userAgent, AgentImpl agent)
+  private void _populateUnknownAgentImpl(String userAgent, AgentImpl agent)
   {
-    // Log warning message that we are setting the agent entry to null
-    _LOG.warning("UNKNOWN_AGENT_ATTRIBUTES_CREATE_WITH_NULL", userAgent);
+    // Log warning message that we are setting the agent entry to unknown 
attributes
+    _LOG.warning("UNKNOWN_AGENT_ATTRIBUTES_CREATE_WITH_UNKNOWN", userAgent);
     agent.setAgentEntryToNULL();
+    agent.setAgent(_UNKNOWN);
+    agent.setType(_UNKNOWN);
+    agent.setAgentVersion(_UNKNOWN);
+    agent.setPlatform(_UNKNOWN);
+    agent.setPlatformVersion(_UNKNOWN);
+    agent.setMakeModel(_UNKNOWN);
   }
 
   //populates the agent entry for DT access for either Telnet or PDA
@@ -226,7 +235,7 @@
     //the form of JDEVMobile user agent string will be:
     //OracleJDevMobile_[PDA or ITS]/[version](DeviceName:[device 
name];[capability1]:[capability 1 value];...)
 
-    boolean returnNullAgentObj = false;
+    boolean returnUnknownAgentObj = false;
     int itsIndex = agent.indexOf("ITS");
     int pdaIndex = agent.indexOf("PDA");
     int versionStartIndex = -1;
@@ -235,8 +244,7 @@
       agentObj.setType(Agent.TYPE_TELNET);
       versionStartIndex = "OracleJDevMobile_ITS".length()+1;
     }
-    else
-      if (pdaIndex > -1)
+    else if (pdaIndex > -1)
     {
 
       agentObj.setType(Agent.TYPE_PDA);
@@ -244,10 +252,10 @@
     }
     else
     {
-      returnNullAgentObj = true;
+      returnUnknownAgentObj = true;
     }
     //Now find the name of the device
-    if (!returnNullAgentObj){
+    if (!returnUnknownAgentObj){
       int versionEndIndex = agent.indexOf("(");
       String version = agent.substring(versionStartIndex,versionEndIndex);
       agentObj.setAgentVersion(version);
@@ -282,9 +290,9 @@
         
agentObj.__addRequestCapability(CapabilityKey.getCapabilityKey(capabilityName,true),capabilityValue);
       }
     }
-    if (returnNullAgentObj)
+    if (returnUnknownAgentObj)
     {
-      _populateNullAgentImpl(agent, agentObj);
+      _populateUnknownAgentImpl(agent, agentObj);
     }
   }
 
@@ -517,7 +525,7 @@
     // map device hint to agent type
     if (wirelessType == null)
     {
-      _populateNullAgentImpl(agent, agentObj);
+      _populateUnknownAgentImpl(agent, agentObj);
       return;
     }
 
@@ -852,6 +860,7 @@
   }
 
   static final private String _IASW_DEVICE_HINT_PARAM = 
"X-Oracle-Device.Class";
+  static final private String _UNKNOWN = "unknown";
   static final private TrinidadLogger _LOG = 
TrinidadLogger.createTrinidadLogger(AgentFactoryImpl.class);
 
 }

Modified: 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts?view=diff&rev=534154&r1=534153&r2=534154
==============================================================================
--- 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
 (original)
+++ 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
 Tue May  1 09:55:08 2007
@@ -21,8 +21,8 @@
 <!DOCTYPE resources SYSTEM "rts.dtd">
 <resources xmlns="http://myfaces.apache.org/trinidad/rts"; 
package="org.apache.myfaces.trinidadinternal.resource">
 
-<!-- UNKNOWN_AGENT_ATTRIBUTES_CREATE_WITH_NULL -->
-<resource key="UNKNOWN_AGENT_ATTRIBUTES_CREATE_WITH_NULL">The User-Agent "{0}" 
is unknown; creating an agent with null agent attributes.</resource>
+<!-- UNKNOWN_AGENT_ATTRIBUTES_CREATE_WITH_UNKNOWN -->
+<resource key="UNKNOWN_AGENT_ATTRIBUTES_CREATE_WITH_UNKNOWN">The User-Agent 
"{0}" is unknown; creating an agent with "unknown" agent attributes.</resource>
 
 <!-- UNKNOWN_AGENT_TYPE_CREATE_WITH_NULL -->
 <resource key="UNKNOWN_AGENT_TYPE_CREATE_WITH_NULL">The agent type is unknown; 
creating an agent with null agent attributes.</resource>


Reply via email to