You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ms...@apache.org on 2010/10/28 22:43:50 UTC
svn commit: r1028467 - in
/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main:
java/org/apache/myfaces/trinidadinternal/agent/
java/org/apache/myfaces/trinidadinternal/ui/laf/
java/org/apache/myfaces/trinidadinternal/ui/laf/base/deskt...
Author: mstarets
Date: Thu Oct 28 20:43:50 2010
New Revision: 1028467
URL: http://svn.apache.org/viewvc?rev=1028467&view=rev
Log:
Agent support for web crawlers
Modified:
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentNameUtil.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/TrinidadAgent.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/NameAndAgentScorer.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/BaseDesktopUtils.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/PdaHtmlLafUtils.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/pda/SimplePdaUtils.java
myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/resources/META-INF/agent/capabilities.xml
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java Thu Oct 28 20:43:50 2010
@@ -115,6 +115,28 @@ public class AgentFactoryImpl implements
_populateUnknownAgentImpl(null, agent);
return;
}
+
+ // Temporary for testing !!!
+ if (facesContext != null && facesContext.getExternalContext().getRequestParameterMap().
+ get("googlebot") != null)
+ {
+ _populateGoogleCrawlerAgentImpl("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", agent, 25);
+ return;
+ }
+
+ int googlebotIndex = userAgent.indexOf(_GOOGLEBOT_ID);
+ if (googlebotIndex >= 0)
+ {
+ _populateGoogleCrawlerAgentImpl(userAgent, agent, googlebotIndex);
+ return;
+ }
+
+ if (userAgent.startsWith(_MSNBOT_ID))
+ {
+ _populateMsnCrawlerAgentImpl(userAgent, agent);
+ return;
+ }
+
//the useragent string for telnet and PDA design time will start with
//OracleJDevMobile because in each of these cases we know we have an
@@ -932,6 +954,37 @@ public class AgentFactoryImpl implements
agentObj.setMakeModel(Agent.MAKE_MODEL_UNKNOWN);
}
+
+ /**
+ * Returns an AgentEntry for the Google web crawler
+ */
+ private void _populateGoogleCrawlerAgentImpl(String userAgent, AgentImpl agentObj, int idIndex)
+ {
+ agentObj.setType(Agent.TYPE_WEBCRAWLER);
+
+ agentObj.setAgent(Agent.AGENT_GOOGLEBOT);
+ agentObj.setAgentVersion(_getVersion(userAgent, idIndex + _GOOGLEBOT_ID.length()));
+ agentObj.setPlatform(Agent.PLATFORM_UNKNOWN);
+ agentObj.setPlatformVersion(Agent.PLATFORM_VERSION_UNKNOWN);
+ agentObj.setMakeModel(Agent.MAKE_MODEL_UNKNOWN);
+
+ }
+
+
+ /**
+ * Returns an AgentEntry for the msnbot (Bing, Yahoo) web crawler
+ */
+ private void _populateMsnCrawlerAgentImpl(String userAgent, AgentImpl agentObj)
+ {
+ agentObj.setType(Agent.TYPE_WEBCRAWLER);
+
+ agentObj.setAgent(Agent.AGENT_MSNBOT);
+ agentObj.setAgentVersion(_getVersion(userAgent, userAgent.indexOf('/')));
+ agentObj.setPlatform(Agent.PLATFORM_UNKNOWN);
+ agentObj.setPlatformVersion(Agent.PLATFORM_VERSION_UNKNOWN);
+ agentObj.setMakeModel(Agent.MAKE_MODEL_UNKNOWN);
+
+ }
/**
@@ -995,4 +1048,6 @@ public class AgentFactoryImpl implements
static final private String _IASW_DEVICE_HINT_PARAM = "X-Oracle-Device.Class";
static final private TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(AgentFactoryImpl.class);
+ static final private String _GOOGLEBOT_ID = "Googlebot";
+ static final private String _MSNBOT_ID = "msnbot";
}
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentNameUtil.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentNameUtil.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentNameUtil.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentNameUtil.java Thu Oct 28 20:43:50 2010
@@ -106,6 +106,11 @@ public class AgentNameUtil
{
return TrinidadAgent.TYPE_PHONE;
}
+
+ if (otype == Agent.TYPE_WEBCRAWLER)
+ {
+ return TrinidadAgent.TYPE_WEBCRAWLER;
+ }
//Default to desktop (This is UIX 2.2 logic)
return TrinidadAgent.TYPE_DESKTOP;
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/TrinidadAgent.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/TrinidadAgent.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/TrinidadAgent.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/TrinidadAgent.java Thu Oct 28 20:43:50 2010
@@ -258,6 +258,11 @@ public abstract class TrinidadAgent impl
* Application constant for voice
*/
static public final int TYPE_VOICE = 3;
+
+ /**
+ * Application constant for web crawlers
+ */
+ static public final int TYPE_WEBCRAWLER = 4;
/**
* Enumeration representing an Application
@@ -336,7 +341,15 @@ public abstract class TrinidadAgent impl
/**
* Application enum for opera.
*/
- OPERA("opera", AGENT_OPERA);
+ OPERA("opera", AGENT_OPERA),
+ /**
+ * Application enum for Google web crawler.
+ */
+ GOOGLEBOT("googlebot", AGENT_GOOGLEBOT),
+ /**
+ * Application enum for Bing web crawler.
+ */
+ MSNBOT("msnbot", AGENT_MSNBOT);
/**
* Return the appropriate Application instance given the name of an Application
@@ -525,6 +538,16 @@ public abstract class TrinidadAgent impl
static public final int APPLICATION_OPERA = Application.OPERA.ordinal();
/**
+ * Application constant for Google web crawler.
+ */
+ static public final int APPLICATION_GOOGLEBOT = Application.GOOGLEBOT.ordinal();
+
+ /**
+ * Application constant for Bing web crawler.
+ */
+ static public final int APPLICATION_MSNBOT = Application.MSNBOT.ordinal();
+
+ /**
* OS constant for an unknown operating system.
*/
static public final int OS_UNKNOWN = 0;
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/NameAndAgentScorer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/NameAndAgentScorer.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/NameAndAgentScorer.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/NameAndAgentScorer.java Thu Oct 28 20:43:50 2010
@@ -40,14 +40,14 @@ public class NameAndAgentScorer extends
*/
public NameAndAgentScorer(
String requiredLafName,
- Integer requiredAgentType,
Integer requiredAgentApplication,
Integer requiredAgentMajorVersion,
- Integer requiredAgentOS
+ Integer requiredAgentOS,
+ Integer... requiredAgentTypes
)
{
_lafName = requiredLafName;
- _agentType = requiredAgentType;
+ _agentTypes = requiredAgentTypes;
_agentApplication = requiredAgentApplication;
_agentMajorVersion = requiredAgentMajorVersion;
_agentOS = requiredAgentOS;
@@ -76,7 +76,14 @@ public class NameAndAgentScorer extends
int nameScore = _scoreName(lafName);
TrinidadAgent agent = context. getAgent();
- int typeScore = _score(_agentType, agent.getAgentType());
+
+ int typeScore = NO_MATCH;
+ int agentType = agent.getAgentType();
+ for (int type: _agentTypes)
+ {
+ typeScore = Math.max(typeScore, _score(type, agentType));
+ }
+
int appScore = _score(_agentApplication, agent.getAgentApplication().ordinal());
int versScore = _score(_agentMajorVersion, agent.getAgentMajorVersion());
int osScore = _score(_agentOS, agent.getAgentOS());
@@ -124,7 +131,7 @@ public class NameAndAgentScorer extends
}
private String _lafName;
- private Integer _agentType;
+ private Integer _agentTypes[];
private Integer _agentApplication;
private Integer _agentMajorVersion;
private Integer _agentOS;
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/BaseDesktopUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/BaseDesktopUtils.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/BaseDesktopUtils.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/BaseDesktopUtils.java Thu Oct 28 20:43:50 2010
@@ -69,7 +69,7 @@ public class BaseDesktopUtils extends Xh
// We use a scorer which matches base/desktop - but not Netscape
private static final NameAndAgentScorer _SCORER =
- new NoNetscapeScorer("base");
+ new NoNetscapeScorer("base", TrinidadAgent.TYPE_DESKTOP, TrinidadAgent.TYPE_WEBCRAWLER);
/**
* @deprecated This class comes from the old Java 1.2 UIX codebase and should not be used anymore.
@@ -77,14 +77,15 @@ public class BaseDesktopUtils extends Xh
@Deprecated
private static class NoNetscapeScorer extends NameAndAgentScorer
{
- public NoNetscapeScorer(String lafName)
+ public NoNetscapeScorer(String lafName, int type1, int type2)
{
- // Initialize the NameAndAgentScorer for base/desktop
+ // Initialize the NameAndAgentScorer for base
super(lafName,
- TrinidadAgent.TYPE_DESKTOP,
null,
null,
- null);
+ null,
+ type1,
+ type2);
}
@Override
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/PdaHtmlLafUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/PdaHtmlLafUtils.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/PdaHtmlLafUtils.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/PdaHtmlLafUtils.java Thu Oct 28 20:43:50 2010
@@ -82,8 +82,8 @@ public class PdaHtmlLafUtils extends Xht
private static final NameAndAgentScorer _SCORER =
new NameAndAgentScorer(null,
- TrinidadAgent.TYPE_PDA,
null,
null,
- null);
+ null,
+ TrinidadAgent.TYPE_PDA);
}
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/pda/SimplePdaUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/pda/SimplePdaUtils.java?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/pda/SimplePdaUtils.java (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/pda/SimplePdaUtils.java Thu Oct 28 20:43:50 2010
@@ -49,10 +49,10 @@ public class SimplePdaUtils extends PdaH
private static final NameAndAgentScorer _PDA_SCORER =
new NameAndAgentScorer("simple",
- TrinidadAgent.TYPE_PDA,
null,
null,
- null);
+ null,
+ TrinidadAgent.TYPE_PDA);
}
Modified: myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/resources/META-INF/agent/capabilities.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/resources/META-INF/agent/capabilities.xml?rev=1028467&r1=1028466&r2=1028467&view=diff
==============================================================================
--- myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/resources/META-INF/agent/capabilities.xml (original)
+++ myfaces/trinidad/branches/mstarets_webcrawler/trinidad-impl/src/main/resources/META-INF/agent/capabilities.xml Thu Oct 28 20:43:50 2010
@@ -74,6 +74,16 @@
<include refid="html" />
<include src="email.xml" />
</capabilities>
+
+ <capabilities id="googlebot" agents="googlebot">
+ <include refid="html" />
+ <include src="email.xml" />
+ </capabilities>
+
+ <capabilities id="msnbot" agents="msnbot">
+ <include refid="html" />
+ <include src="email.xml" />
+ </capabilities>
<capabilities id="webkit" agents="webkit">
<include refid="html" />