2828
2929@ Name ("preview" )
3030@ Scope (ScopeType .PAGE )
31- public class PreviewManager implements Serializable {
31+ public class PreviewManager implements Serializable {
3232
3333 private static final long serialVersionUID = 2029452631857959114L ;
3434
3535 @ Logger
3636 Log log ;
3737
38- @ In transient QueryData queryData ;
38+ @ In
39+ transient QueryData queryData ;
40+
41+ @ In (create = true )
42+ transient RegistryFacade registryFacade ;
43+
44+ @ In (create = true )
45+ transient ConsumerRequestRegistry consumers ;
46+
47+ //private volatile boolean completeEventCalled = false;
3948
40- @ In (create =true ) transient RegistryFacade registryFacade ;
41-
42- @ In (create =true ) transient ConsumerRequestRegistry consumers ;
43-
44- private volatile boolean completeEventCalled =false ;
45-
4649 private Collection <Future <HttpHeadResponse >> nodeFutureResponses = new ArrayList <Future <HttpHeadResponse >>();
4750 private long startTime ;
48-
51+
4952 private long percentDone ;
50-
51- public void initiate (){
52-
53+ private Boolean securedProtocolsAreSet = false ;
54+
55+ public void initiate () {
56+ this .setSSLProtocols ();
5357 if (!nodeFutureResponses .isEmpty ())
5458 return ;
5559
5660 Collection <String > activeNodes = queryData .getActiveNodes ();
5761
5862 if (activeNodes .isEmpty ())
5963 return ;
60-
61- ExecutorService executor = Executors .newFixedThreadPool (activeNodes .size ());
6264
63- for (String ivoaID :activeNodes ){
64- try {
65- nodeFutureResponses .add (executor .submit (new PreviewThread (ivoaID ,registryFacade .getVamdcTapMirrors (ivoaID ),queryData .getQueryString ())));
66- }catch (IllegalArgumentException e ){
65+ ExecutorService executor = Executors .newFixedThreadPool (activeNodes
66+ .size ());
67+
68+ for (String ivoaID : activeNodes ) {
69+ try {
70+ nodeFutureResponses .add (executor .submit (new PreviewThread (
71+ ivoaID , registryFacade .getVamdcTapMirrors (ivoaID ),
72+ queryData .getQueryString ())));
73+ } catch (IllegalArgumentException e ) {
6774 }
6875 }
69-
76+
7077 executor .shutdown ();
7178 startTime = new Date ().getTime ();
7279 }
7380
74-
75- public List <HttpHeadResponse > getNodes (){
76- TreeSet < HttpHeadResponse > nodes = new TreeSet < HttpHeadResponse >( new HttpHeadResponseComparator ());
77- for (Future <HttpHeadResponse > task : nodeFutureResponses ){
78- if (task .isDone ()&& !task .isCancelled ()){
81+ public List < HttpHeadResponse > getNodes () {
82+ TreeSet <HttpHeadResponse > nodes = new TreeSet < HttpHeadResponse >(
83+ new HttpHeadResponseComparator ());
84+ for (Future <HttpHeadResponse > task : nodeFutureResponses ) {
85+ if (task .isDone () && !task .isCancelled ()) {
7986 try {
8087 HttpHeadResponse response = task .get ();
8188 nodes .add (response );
@@ -91,78 +98,91 @@ public List<HttpHeadResponse> getNodes(){
9198 return new ArrayList <HttpHeadResponse >(nodes );
9299 }
93100
94- private class HttpHeadResponseComparator implements Comparator <HttpHeadResponse >{
101+ private class HttpHeadResponseComparator implements
102+ Comparator <HttpHeadResponse > {
95103
96104 @ Override
97105 public int compare (HttpHeadResponse o1 , HttpHeadResponse o2 ) {
98- if (o1 == null || o2 == null )
106+ if (o1 == null || o2 == null )
99107 return 0 ;
100108 Integer value1 = Integer .valueOf (o1 .getStatus ().ordinal ());
101109 Integer value2 = Integer .valueOf (o2 .getStatus ().ordinal ());
102110 int compare = value1 .compareTo (value2 );
103- if (compare != 0 )
104- return compare ;
105- else if (o1 .getProcesses ()!= o2 .getProcesses ())
106- return o2 .getProcesses ()- o1 .getProcesses ();
107- else
108- return o1 .getIvoaID ().compareTo (o2 .getIvoaID ());
109-
111+ if (compare != 0 )
112+ return compare ;
113+ else if (o1 .getProcesses () != o2 .getProcesses ())
114+ return o2 .getProcesses () - o1 .getProcesses ();
115+ else
116+ return o1 .getIvoaID ().compareTo (o2 .getIvoaID ());
117+
110118 }
111-
112119
113-
114120 }
115-
116121
117- public boolean isDone (){
118- if (this .percentDone <= 100 ){
119- for (Future <HttpHeadResponse > task : nodeFutureResponses ){
120- if (!task .isDone ()){
122+ public boolean isDone () {
123+ if (this .percentDone <= 100 ) {
124+ for (Future <HttpHeadResponse > task : nodeFutureResponses ) {
125+ if (!task .isDone ()) {
121126 return false ;
122127 }
123128 }
124- }
125-
129+ }
130+
126131 return true ;
127132 }
128-
129- public Long getPercentsDone (){
133+
134+ public Long getPercentsDone () {
130135 Long result ;
131- if (isDone ()){
132- result = 101L ;
133- } else {
136+ if (isDone ()) {
137+ result = 101L ;
138+ } else {
134139 Long now = new Date ().getTime ();
135- result = (100L *(now -startTime )/Settings .HTTP_HEAD_TIMEOUT .getInt ());
140+ result = (100L * (now - startTime ) / Settings .HTTP_HEAD_TIMEOUT
141+ .getInt ());
136142 }
137143 this .percentDone = result ;
138144 return result ;
139145 }
140146
141- public String getStringStatus (){
147+ public String getStringStatus () {
142148 if (isDone ())
143149 return "Done" ;
144- return "" +getNodes ().size ()+" nodes of " +nodeFutureResponses .size ()+" responded" ;
150+ return "" + getNodes ().size () + " nodes of "
151+ + nodeFutureResponses .size () + " responded" ;
145152 }
146-
147- public void cancel (){
148- for (Future <HttpHeadResponse > task : nodeFutureResponses ){
153+
154+ public void cancel () {
155+ for (Future <HttpHeadResponse > task : nodeFutureResponses ) {
149156 if (!task .isDone ())
150157 task .cancel (true );
151158 }
152159 }
153-
154- public void clear (){
160+
161+ public void clear () {
155162 cancel ();
156- nodeFutureResponses = new ArrayList <Future <HttpHeadResponse >>();
163+ nodeFutureResponses = new ArrayList <Future <HttpHeadResponse >>();
157164 }
158-
159- public String refine (){
165+
166+ public String refine () {
160167 clear ();
161- if (!queryData .isGuidedQuery ())
168+ if (!queryData .isGuidedQuery ())
162169 return RedirectPage .QUERY ;
163170 else
164171 return RedirectPage .QUERYTREE ;
165172 }
166-
167173
174+ /**
175+ * Set SSL protocols to be used.
176+ * Fix a bug found when switching from java 7 to 8 :
177+ * If this list is not set, the HTTPS request failed with java 8 but not
178+ * with java 7
179+ *
180+ */
181+ private void setSSLProtocols () {
182+ if (!securedProtocolsAreSet ) {
183+ System .setProperty ("https.protocols" , "TLSv1,TLSv1.1,TLSv1.2" );
184+ this .securedProtocolsAreSet = true ;
185+ }
186+ }
187+
168188}
0 commit comments