Revision a2f617f8 src/gr/grnet/pithos/web/client/Pithos.java

b/src/gr/grnet/pithos/web/client/Pithos.java
1188 1188
		upload.addStyleName("pithos-uploadButton-loading");
1189 1189
		upload.setTitle("Upload in progress. Click for details.");
1190 1190
	}
1191

  
1192
	public void scheduleFolderHeadCommand(final Folder folder, final Command callback) {
1193
		HeadRequest<Folder> headFolder = new HeadRequest<Folder>(Folder.class, getApiPath(), folder.getOwner(), folder.getUri(), folder) {
1194

  
1195
			@Override
1196
			public void onSuccess(Folder _result) {
1197
				if (callback != null)
1198
					callback.execute();
1199
			}
1200

  
1201
			@Override
1202
			public void onError(Throwable t) {
1203
		        if (t instanceof RestException) {
1204
		        	if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) {
1205
                        final String path = folder.getUri();
1206
                        PutRequest newFolder = new PutRequest(getApiPath(), folder.getOwner(), path) {
1207
                            @Override
1208
                            public void onSuccess(Resource _result) {
1209
                            	scheduleFolderHeadCommand(folder, callback);
1210
                            }
1211

  
1212
                            @Override
1213
                            public void onError(Throwable _t) {
1214
                                GWT.log("", _t);
1215
        						setError(_t);
1216
                                if(_t instanceof RestException){
1217
                                    displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText());
1218
                                }
1219
                                else
1220
                                    displayError("System error creating folder: " + _t.getMessage());
1221
                            }
1222

  
1223
            				@Override
1224
            				protected void onUnauthorized(Response response) {
1225
            					sessionExpired();
1226
            				}
1227
                        };
1228
                        newFolder.setHeader("X-Auth-Token", getToken());
1229
                        newFolder.setHeader("Content-Type", "application/folder");
1230
                        newFolder.setHeader("Accept", "*/*");
1231
                        newFolder.setHeader("Content-Length", "0");
1232
                        Scheduler.get().scheduleDeferred(newFolder);
1233
		        	}
1234
		        	else
1235
		        		displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
1236
		        }
1237
		        else
1238
		            displayError("System error heading folder: " + t.getMessage());
1239

  
1240
		        GWT.log("Error heading folder", t);
1241
				setError(t);
1242
			}
1243

  
1244
			@Override
1245
			protected void onUnauthorized(Response response) {
1246
				sessionExpired();
1247
			}
1248
		};
1249
		headFolder.setHeader("X-Auth-Token", getToken());
1250
		Scheduler.get().scheduleDeferred(headFolder);
1251
	}
1252

  
1253
	public void scheduleFileHeadCommand(File f, final Command callback) {
1254
		HeadRequest<File> headFile = new HeadRequest<File>(File.class, getApiPath(), f.getOwner(), f.getUri(), f) {
1255

  
1256
			@Override
1257
			public void onSuccess(File _result) {
1258
				if (callback != null)
1259
					callback.execute();
1260
			}
1261

  
1262
			@Override
1263
			public void onError(Throwable t) {
1264
		        GWT.log("Error heading file", t);
1265
				setError(t);
1266
		        if (t instanceof RestException)
1267
		            displayError("Error heading file: " + ((RestException) t).getHttpStatusText());
1268
		        else
1269
		            displayError("System error heading file: " + t.getMessage());
1270
			}
1271

  
1272
			@Override
1273
			protected void onUnauthorized(Response response) {
1274
				sessionExpired();
1275
			}
1276
		};
1277
		headFile.setHeader("X-Auth-Token", getToken());
1278
		Scheduler.get().scheduleDeferred(headFile);
1279
	}
1191 1280
}

Also available in: Unified diff