﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-软件是对质量的不懈追求</title><link>http://www.blogjava.net/luedipiaofeng/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Apr 2026 21:59:34 GMT</lastBuildDate><pubDate>Sun, 05 Apr 2026 21:59:34 GMT</pubDate><ttl>60</ttl><item><title>linux du 查看文件夹占用空间</title><link>http://www.blogjava.net/luedipiaofeng/archive/2011/04/15/348332.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Fri, 15 Apr 2011 00:39:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2011/04/15/348332.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/348332.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2011/04/15/348332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/348332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/348332.html</trackback:ping><description><![CDATA[<br />
du -sh *<br />
<br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/348332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2011-04-15 08:39 <a href="http://www.blogjava.net/luedipiaofeng/archive/2011/04/15/348332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Building Standalone Application with Maven2</title><link>http://www.blogjava.net/luedipiaofeng/archive/2011/02/24/345053.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Thu, 24 Feb 2011 05:03:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2011/02/24/345053.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/345053.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2011/02/24/345053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/345053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/345053.html</trackback:ping><description><![CDATA[If you are building standalone application in Java, Maven is your friend when packing your application, <br />
There are two way to let Maven package your application, either as a single jar with all your dependencies jar.<br />
<br />
<br />
&nbsp;&lt;plugin&gt;<br />
&nbsp; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
&nbsp; &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;<br />
&nbsp; &lt;configuration&gt;<br />
&nbsp;&nbsp; &lt;descriptorRefs&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;descriptorRef&gt;jar-with-dependencies&lt;/descriptorRef&gt;<br />
&nbsp;&nbsp; &lt;/descriptorRefs&gt;<br />
&nbsp; &lt;/configuration&gt;<br />
&nbsp;&lt;/plugin&gt;<br />
<br />
<br />
<br />
One advantage if you choose to do this way is if you need to sign your application jar. <br />
This is needed if you are building a Java Web Start client and you need more access than connecting back to the server. <br />
To read more about have Maven signing your jar read http://maven.apache.org/plugins/maven-jar-plugin/usage.html.<br />
But if you choose to go this way, make sure that all license agreement are shipped with your one single jar.<br />
<br />
Another way is to let Maven package your source code only and then referring the dependent jar file from the MANIFEST file.<br />
<br />
<br />
&nbsp;&lt;plugin&gt;<br />
&nbsp; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
&nbsp; &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;<br />
&nbsp; &lt;configuration&gt;<br />
&nbsp;&nbsp; &lt;archive&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;manifest&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;addClasspath&gt;true&lt;/addClasspath&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;mainClass&gt;se.msc.adapter.Main&lt;/mainClass&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;classpathPrefix&gt;lib/&lt;/classpathPrefix&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/manifest&gt;<br />
&nbsp;&nbsp; &lt;/archive&gt;<br />
&nbsp; &lt;/configuration&gt;<br />
&nbsp;&lt;/plugin&gt;<br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/345053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2011-02-24 13:03 <a href="http://www.blogjava.net/luedipiaofeng/archive/2011/02/24/345053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse 终于有了列编辑功能</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/10/15/335216.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Fri, 15 Oct 2010 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/10/15/335216.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/335216.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/10/15/335216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/335216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/335216.html</trackback:ping><description><![CDATA[eclipse 3.5之后终于有了列编辑，快捷键是alt+shift+a,再次按此快捷键返回常规编辑状态。<br />
<br />
<img src="file:///C:/DOCUME%7E1/bsu/LOCALS%7E1/Temp/moz-screenshot-1.png" alt="" /><img src="file:///C:/DOCUME%7E1/bsu/LOCALS%7E1/Temp/moz-screenshot-2.png" alt="" /><img src="http://www.blogjava.net/images/blogjava_net/luedipiaofeng/columnedit.png" alt="" border="0" height="289" width="307" /><br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/335216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-10-15 11:33 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/10/15/335216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LineNumberReader 指定文件编码</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/08/05/327998.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Thu, 05 Aug 2010 01:13:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/08/05/327998.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/327998.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/08/05/327998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/327998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/327998.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.FileInputStream;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.InputStreamReader;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.LineNumberReader;<br />
<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Main&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStreamReader&nbsp;isr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;InputStreamReader(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(</span><span style="color: #000000;">"</span><span style="color: #000000;">15370720.pdf4</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">utf-16</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LineNumberReader&nbsp;lnr</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;LineNumberReader(isr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((line</span><span style="color: #000000;">=</span><span style="color: #000000;">lnr.readLine())</span><span style="color: #000000;">!=</span><span style="color: #0000ff;">null</span><span style="color: #000000;">){&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(lnr.getLineNumber()</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">\t</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">line);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/327998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-08-05 09:13 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/08/05/327998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Class.getResourceAsStream 和 ClassLoader.getResourceAsStream</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/07/28/327336.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Wed, 28 Jul 2010 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/07/28/327336.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/327336.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/07/28/327336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/327336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/327336.html</trackback:ping><description><![CDATA[两个方法的区别是资源的定义不同， 一个主要用于相对与一个object取资源，而另一个用于取相对于classpath的<br />
资源，用的是绝对路径。<br />
<br />
在使用Class.getResourceAsStream 时， 资源路径有两种方式， 一种以 / 开头，则这样的路径是指定绝对<br />
路径， 如果不以 / 开头， 则路径是相对与这个class所在的包的。 <br />
<br />
在使用ClassLoader.getResourceAsStream时， 路径直接使用相对于classpath的绝对路径。 <br />
<br />
举例，下面的三个语句，实际结果是一样的： <br />
&nbsp;&nbsp; com.explorers.Test.class.getResourceAsStream("abc.jpg")<br />
= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")<br />
= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/327336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-07-28 16:31 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/07/28/327336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Standalone Java CAS Client</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/07/15/326212.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Thu, 15 Jul 2010 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/07/15/326212.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/326212.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/07/15/326212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/326212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/326212.html</trackback:ping><description><![CDATA[<span style="font-size: 85%;">There's a variety of clients for CAS. The
Java-based clients (JA-SIG, Yale, see <a href="http://www.slyuser.com/index.php/1010110A/ab3563f989f790d550e2db84323d91a25f8b9e1d15585">JA-SIG
website</a>) typically handle the browser-based client interaction with
CAS very well through ServletFilter implementations.<br />
<br />
Now what
about programmatic authentication, i.e. achieving authentication through
non-browser based applications? There exists a <a href="http://www.slyuser.com/index.php/1010110A/ab3563f989f790d550e2db84323d91a25f8b9e1df8dbdf3d0a3f253ccfa06fadccf0c80cbc3af8953e70f1f0494180779c6fb8a7f515585">CAS
.NET client</a> but I did not manage to find the appropriate Java
implementation. So here goes - it is based on the Apache HttpClient.<br />
<br />
In
case I missed any existing implementation achieving the same purpose,
let's look at the bright side: at least now I understand the CAS
protocol :-)<br />
<br />
My CAS client works within any application. It uses
the HttpClient and behaves like a browser client as CAS requires cookie
support.<br />
<br />
Here's the code:<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.commons.httpclient.Header;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.commons.httpclient.HttpClient;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.commons.httpclient.HttpMethod;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.commons.httpclient.HttpStatus;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.commons.httpclient.methods.GetMethod;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.commons.httpclient.methods.PostMethod;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.log4j.Logger;<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
*&nbsp;The&nbsp;CasClient&nbsp;allows&nbsp;users&nbsp;to&nbsp;programmatically&nbsp;login<br />
*&nbsp;to&nbsp;CAS&nbsp;protected&nbsp;services&nbsp;based&nbsp;on&nbsp;the&nbsp;CAS&nbsp;2&nbsp;protocol.<br />
*&nbsp;This&nbsp;client&nbsp;behaves&nbsp;like&nbsp;a&nbsp;browser-client&nbsp;in&nbsp;terms&nbsp;of<br />
*&nbsp;cookie&nbsp;handling.&lt;br&gt;<br />
*<br />
*&nbsp;</span><span style="color: #808080;">@author</span><span style="color: #008000;">&nbsp;Mathias&nbsp;Richter<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;CasClient<br />
{<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Logger&nbsp;LOG&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Logger.getLogger(&nbsp;CasClient.</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;&nbsp;);<br />
<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;LOGIN_URL_PART&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">login</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;SERVICE_VALIDATE_URL_PART&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">serviceValidate</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;TICKET_BEGIN&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">ticket=</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;LT_BEGIN&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">name=</span><span style="color: #000000;">"</span><span style="color: #000000;">lt</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value=</span><span style="color: #000000;">""</span><span style="color: #000000;">;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;CAS_USER_BEGIN&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;cas:user&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;CAS_USER_END&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/cas:user&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;HttpClient&nbsp;fClient;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;fCasUrl;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Construct&nbsp;a&nbsp;new&nbsp;CasClient.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;casUrl&nbsp;The&nbsp;base&nbsp;URL&nbsp;of&nbsp;the&nbsp;CAS&nbsp;service&nbsp;to&nbsp;be&nbsp;used.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;CasClient(&nbsp;String&nbsp;casBaseUrl&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">(&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HttpClient(),&nbsp;casBaseUrl&nbsp;);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Construct&nbsp;a&nbsp;new&nbsp;CasClient&nbsp;which&nbsp;uses&nbsp;the&nbsp;specified&nbsp;HttpClient<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;for&nbsp;its&nbsp;HTTP&nbsp;calls.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;client<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;casBaseUrl<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;CasClient(&nbsp;HttpClient&nbsp;client,&nbsp;String&nbsp;casBaseUrl&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fClient&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCasUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;casBaseUrl;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Authenticate&nbsp;the&nbsp;specified&nbsp;username&nbsp;with&nbsp;the&nbsp;specified&nbsp;password.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;will&nbsp;not&nbsp;yield&nbsp;any&nbsp;ticket,&nbsp;as&nbsp;no&nbsp;service&nbsp;is&nbsp;authenticated<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;against.&nbsp;This&nbsp;wil&nbsp;just&nbsp;set&nbsp;the&nbsp;CAS&nbsp;cookie&nbsp;in&nbsp;this&nbsp;client&nbsp;upon<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;successful&nbsp;authentication.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;username<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;password<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;authenticate(&nbsp;String&nbsp;username,&nbsp;String&nbsp;password&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;authenticate(&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,&nbsp;username,&nbsp;password&nbsp;);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Validate&nbsp;the&nbsp;specified&nbsp;service&nbsp;ticket&nbsp;against&nbsp;the&nbsp;specified&nbsp;service.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;If&nbsp;the&nbsp;ticket&nbsp;is&nbsp;valid,&nbsp;this&nbsp;will&nbsp;yield&nbsp;the&nbsp;clear&nbsp;text&nbsp;user&nbsp;name<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;of&nbsp;the&nbsp;autenticated&nbsp;user.&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Note&nbsp;that&nbsp;each&nbsp;service&nbsp;ticket&nbsp;issued&nbsp;by&nbsp;CAS&nbsp;can&nbsp;be&nbsp;used&nbsp;exactly&nbsp;once<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;to&nbsp;validate.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;serviceUrl<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;serviceTicket<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;Clear&nbsp;text&nbsp;username&nbsp;of&nbsp;the&nbsp;authenticated&nbsp;user.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;validate(&nbsp;String&nbsp;serviceUrl,&nbsp;String&nbsp;serviceTicket&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostMethod&nbsp;method&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PostMethod(&nbsp;fCasUrl&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;SERVICE_VALIDATE_URL_PART&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">service</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;serviceUrl&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">ticket</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;serviceTicket&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;statusCode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fClient.executeMethod(method);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(statusCode&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;HttpStatus.SC_OK)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;validate:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;method.getStatusLine()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.releaseConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;extractUser(&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(&nbsp;method.getResponseBody()&nbsp;)&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(&nbsp;Exception&nbsp;x&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;validate:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;x.toString&nbsp;()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.releaseConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;result;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Authenticate&nbsp;the&nbsp;specified&nbsp;user&nbsp;with&nbsp;the&nbsp;specified&nbsp;password&nbsp;against&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;specified&nbsp;service.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;serviceUrl&nbsp;May&nbsp;be&nbsp;null.&nbsp;If&nbsp;a&nbsp;url&nbsp;is&nbsp;specified,&nbsp;the&nbsp;authentication&nbsp;will&nbsp;happen&nbsp;against&nbsp;this&nbsp;service,&nbsp;yielding&nbsp;a&nbsp;service&nbsp;ticket&nbsp;which&nbsp;can&nbsp;be&nbsp;validated.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;username<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;password<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;A&nbsp;valid&nbsp;service&nbsp;ticket,&nbsp;if&nbsp;and&nbsp;only&nbsp;if&nbsp;the&nbsp;specified&nbsp;service&nbsp;URL&nbsp;is&nbsp;not&nbsp;null.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;authenticate(&nbsp;String&nbsp;serviceUrl,&nbsp;String&nbsp;username,&nbsp;String&nbsp;password&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;lt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getLt(&nbsp;serviceUrl&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;lt&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Cannot&nbsp;retrieve&nbsp;LT&nbsp;from&nbsp;CAS.&nbsp;Aborting&nbsp;authentication&nbsp;for&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostMethod&nbsp;method&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PostMethod(&nbsp;fCasUrl&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;LOGIN_URL_PART&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;serviceUrl&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;optional</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">service</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;serviceUrl&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">_eventId</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">submit</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">username</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;username&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">password</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;password&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(</span><span style="color: #000000;">"</span><span style="color: #000000;">lt</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;lt&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.setParameter(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">gateway</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fClient.executeMethod(method);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;serviceUrl&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;extractLt(&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(&nbsp;method.getResponseBody()&nbsp;)&nbsp;)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;if&nbsp;CAS&nbsp;does&nbsp;not&nbsp;return&nbsp;a&nbsp;login&nbsp;page&nbsp;with&nbsp;an&nbsp;LT&nbsp;authentication&nbsp;was&nbsp;successful</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Authentication&nbsp;for&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;unsuccessful</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;LOG.isDebugEnabled()&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.debug(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Authentication&nbsp;for&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;unsuccessful.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;LOG.isDebugEnabled()&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.debug(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Authentication&nbsp;for&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;unsuccessful.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Header&nbsp;h&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;method.getResponseHeader(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Location</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;h&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;extractServiceTicket(&nbsp;h.getValue()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;result&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Authentication&nbsp;for&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'&nbsp;unsuccessful.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(&nbsp;Exception&nbsp;x&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;authenticate'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">':</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;x.toString&nbsp;()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.releaseConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;result;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Helper&nbsp;method&nbsp;to&nbsp;extract&nbsp;the&nbsp;user&nbsp;name&nbsp;from&nbsp;a&nbsp;"service&nbsp;validate"&nbsp;call&nbsp;to&nbsp;CAS.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;data&nbsp;Response&nbsp;data.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;The&nbsp;clear&nbsp;text&nbsp;username,&nbsp;if&nbsp;it&nbsp;could&nbsp;be&nbsp;extracted,&nbsp;null&nbsp;otherwise.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;String&nbsp;extractUser(&nbsp;String&nbsp;data&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;user&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;start&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.indexOf(&nbsp;CAS_USER_BEGIN&nbsp;&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;start&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;CAS_USER_BEGIN.length();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;end&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.indexOf(&nbsp;CAS_USER_END&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;end&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;start&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.substring(&nbsp;start,&nbsp;end&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.warn(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;extract&nbsp;username&nbsp;from&nbsp;CAS&nbsp;validation&nbsp;response.&nbsp;Raw&nbsp;data&nbsp;is:&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;data&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.warn(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;extract&nbsp;username&nbsp;from&nbsp;CAS&nbsp;validation&nbsp;response.&nbsp;Raw&nbsp;data&nbsp;is:&nbsp;'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;data&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">'</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;user;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Helper&nbsp;method&nbsp;to&nbsp;extract&nbsp;the&nbsp;service&nbsp;ticket&nbsp;from&nbsp;a&nbsp;login&nbsp;call&nbsp;to&nbsp;CAS.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;data&nbsp;Response&nbsp;data.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;The&nbsp;service&nbsp;ticket,&nbsp;if&nbsp;it&nbsp;could&nbsp;be&nbsp;extracted,&nbsp;null&nbsp;otherwise.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;String&nbsp;extractServiceTicket(&nbsp;String&nbsp;data&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;serviceTicket&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;start&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.indexOf(&nbsp;TICKET_BEGIN&nbsp;&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;start&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;TICKET_BEGIN.length();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serviceTicket&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.substring(&nbsp;start&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;serviceTicket;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Helper&nbsp;method&nbsp;to&nbsp;extract&nbsp;the&nbsp;LT&nbsp;from&nbsp;a&nbsp;login&nbsp;form&nbsp;from&nbsp;CAS.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;data&nbsp;Response&nbsp;data.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;The&nbsp;LT,&nbsp;if&nbsp;it&nbsp;could&nbsp;be&nbsp;extracted,&nbsp;null&nbsp;otherwise.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;String&nbsp;extractLt(&nbsp;String&nbsp;data&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;token&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;start&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.indexOf(&nbsp;LT_BEGIN&nbsp;&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;start&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;obtain&nbsp;LT&nbsp;token&nbsp;from&nbsp;CAS:&nbsp;LT&nbsp;Token&nbsp;not&nbsp;found&nbsp;in&nbsp;response.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;LT_BEGIN.length();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;end&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.indexOf(&nbsp;</span><span style="color: #000000;">"""</span><span style="color: #000000;">,&nbsp;start&nbsp;);</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;data.substring(&nbsp;start,&nbsp;end&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;token;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;method&nbsp;requests&nbsp;the&nbsp;original&nbsp;login&nbsp;form&nbsp;from&nbsp;CAS.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;form&nbsp;contains&nbsp;an&nbsp;LT,&nbsp;an&nbsp;initial&nbsp;token&nbsp;that&nbsp;must&nbsp;be<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;presented&nbsp;to&nbsp;CAS&nbsp;upon&nbsp;sending&nbsp;it&nbsp;an&nbsp;authentication&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;with&nbsp;credentials.&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;If&nbsp;a&nbsp;service&nbsp;URL&nbsp;is&nbsp;provided&nbsp;(which&nbsp;is&nbsp;optional),&nbsp;this&nbsp;method<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;will&nbsp;post&nbsp;the&nbsp;URL&nbsp;such&nbsp;that&nbsp;CAS&nbsp;authenticates&nbsp;against&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;specified&nbsp;service&nbsp;when&nbsp;a&nbsp;subsequent&nbsp;authentication&nbsp;request&nbsp;is<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;sent.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;serviceUrl<br />
&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;The&nbsp;LT&nbsp;token&nbsp;if&nbsp;it&nbsp;could&nbsp;be&nbsp;extracted&nbsp;from&nbsp;the&nbsp;CAS&nbsp;response.<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;String&nbsp;getLt(&nbsp;String&nbsp;serviceUrl&nbsp;)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;lt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpMethod&nbsp;method&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;serviceUrl&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;GetMethod(&nbsp;fCasUrl&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;LOGIN_URL_PART&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PostMethod(&nbsp;fCasUrl&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;LOGIN_URL_PART&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;(&nbsp;PostMethod&nbsp;)&nbsp;method&nbsp;).setParameter(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">service</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;serviceUrl&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;statusCode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fClient.executeMethod(method);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(statusCode&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;HttpStatus.SC_OK)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;obtain&nbsp;LT&nbsp;token&nbsp;from&nbsp;CAS:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;method.getStatusLine()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.releaseConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;method.getResponseHeaders()&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;extractLt(&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(&nbsp;method.getResponseBody()&nbsp;)&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(&nbsp;Exception&nbsp;x&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;obtain&nbsp;LT&nbsp;token&nbsp;from&nbsp;CAS:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;x.toString&nbsp;()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.releaseConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;lt;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
}<br />
</span></div>
<br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/326212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-07-15 17:59 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/07/15/326212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java取文件换行符</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/06/30/324892.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Wed, 30 Jun 2010 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/06/30/324892.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/324892.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/06/30/324892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/324892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/324892.html</trackback:ping><description><![CDATA[System.getProperty("line.separator")<br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/324892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-06-30 15:45 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/06/30/324892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>禁止浏览器缓存</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324386.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Fri, 25 Jun 2010 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324386.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/324386.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/324386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/324386.html</trackback:ping><description><![CDATA[html<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta&nbsp;</span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="pragma"</span><span style="color: #ff0000;">&nbsp;content</span><span style="color: #0000ff;">="no-cache"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta&nbsp;</span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="cache-control"</span><span style="color: #ff0000;">&nbsp;content</span><span style="color: #0000ff;">="no-cache"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta&nbsp;</span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="expires"</span><span style="color: #ff0000;">&nbsp;content</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
servlet<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">pragma</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">no-cache</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">cache-control</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">no-cache</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setDateHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">expires</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">);</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/324386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-06-25 09:06 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>frame 中跨域访问cookie(java)</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324385.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Fri, 25 Jun 2010 01:04:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324385.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/324385.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/324385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/324385.html</trackback:ping><description><![CDATA[response.addHeader("P3P","CP=CAO PSA OUR");<br />
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/324385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-06-25 09:04 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/06/25/324385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim的复制粘贴小结</title><link>http://www.blogjava.net/luedipiaofeng/archive/2010/06/18/323810.html</link><dc:creator>BlakeSu</dc:creator><author>BlakeSu</author><pubDate>Fri, 18 Jun 2010 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/luedipiaofeng/archive/2010/06/18/323810.html</guid><wfw:comment>http://www.blogjava.net/luedipiaofeng/comments/323810.html</wfw:comment><comments>http://www.blogjava.net/luedipiaofeng/archive/2010/06/18/323810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luedipiaofeng/comments/commentRss/323810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luedipiaofeng/services/trackbacks/323810.html</trackback:ping><description><![CDATA[<span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">
<p><span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblTrackbacks">原文地址　http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.trak</span></p>
<p><br />
</p>
<p>用vim这么久
了，始终也不知道怎么在vim中使用系统粘贴板，通常要在网上复制一段代码都是先gedit打开文件，中键粘贴后关闭，然后再用vim打开编辑，真的不
爽；上次论坛上有人问到了怎么在vim中使用系统粘贴板，印象里回复很多，有好几页的回复却没有解决问题，今天实在受不了了又在网上找办法，竟意外地找到
了，贴出来分享一下。
</p>
<p>如果只是想使用系统粘贴板的话直接在输入模式按Shift+Inset就可以了，下面讲一下vim的粘贴板的基础知识，有兴趣的可以看看，
应该会有所收获的。<br />
vim帮助文档里与粘贴板有关的内容如下：
</p>
<ol>
    <li>vim有12个粘贴板，分别是0、1、2、...、9、a、&#8220;、＋；用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到
    &#8220;（双引号)粘贴板里，同样用p粘贴的也是这个粘贴板里的内容；
    <p>
    </p>
    </li>
    <li>要将vim的内容复制到某个粘贴板，需要退出编辑模式，进入正常模式后，选择要复制的内容，然后按"Ny完成复制，其中N为粘
    贴板号(注意是按一下双引号然后按粘贴板号最后按y)，例如要把内容复制到粘贴板a，选中内容后按"ay就可以了，有两点需要说明一下：
    <ul>
        <li>&#8220;号粘贴板（临时粘贴板）比较特殊，直接按y就复制到这个粘贴板中了，直接按p就粘贴这个粘贴板中的内容；
        </li>
        <li>+号粘贴板是系统粘贴板，用"+y将内容复制到该粘贴板后可以使用Ctrl＋V将其粘贴到其他文档（如firefox、gedit）
        中，同理，要把在其他地方用Ctrl＋C或右键复制的内容复制到vim中，需要在正常模式下按"+p； </li>
    </ul>
    <p>
    </p>
    </li>
    <li>要将vim某个粘贴板里的内容粘贴进来，需要退出编辑模式，在正常模式按"Np，其中N为粘贴板号，如上所述，可以按"5p将
    5号粘贴板里的内容粘贴进来，也可以按"+p将系统全局粘贴板里的内容粘贴进来。 </li>
</ol>
<p><font color="lime">注意：在我这里，只有vim.gtk或vim.gnome才能使用系统全局粘贴板，默认的
vim.basic看不到+号寄存器。</font></p>
</span>
<img src ="http://www.blogjava.net/luedipiaofeng/aggbug/323810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luedipiaofeng/" target="_blank">BlakeSu</a> 2010-06-18 14:21 <a href="http://www.blogjava.net/luedipiaofeng/archive/2010/06/18/323810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>