Issue #2751 fixed webDAV path issue

webDAV needs every part of the path created individually
made the userid portion of the url use the entire id URL encoded


Former-commit-id: 6211a9622c944171b78d04ef9263d26e6eed7687
This commit is contained in:
Brian Clements 2014-02-25 08:51:46 -06:00
parent 386e9cc96a
commit 3d365a4cd2

View file

@ -20,7 +20,9 @@
package com.raytheon.uf.viz.collaboration.display.storage; package com.raytheon.uf.viz.collaboration.display.storage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URI; import java.net.URI;
import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -46,6 +48,8 @@ import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.serialization.SerializationUtil; import com.raytheon.uf.common.serialization.SerializationUtil;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.viz.collaboration.comm.compression.CompressionUtil; import com.raytheon.uf.viz.collaboration.comm.compression.CompressionUtil;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException; import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession; import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
@ -70,7 +74,7 @@ import com.raytheon.uf.viz.remote.graphics.events.ICreationEvent;
* Apr 20, 2012 mschenke Initial creation * Apr 20, 2012 mschenke Initial creation
* Feb 17, 2014 2756 bclement added xml parsing for HTTP directory listing * Feb 17, 2014 2756 bclement added xml parsing for HTTP directory listing
* Feb 24, 2014 2751 bclement added separate paths for each provider under session id * Feb 24, 2014 2751 bclement added separate paths for each provider under session id
* * Feb 25, 2014 2751 bclement fixed provider id path for webDAV
* </pre> * </pre>
* *
* @author mschenke * @author mschenke
@ -80,6 +84,9 @@ import com.raytheon.uf.viz.remote.graphics.events.ICreationEvent;
public class CollaborationObjectEventStorage implements public class CollaborationObjectEventStorage implements
IObjectEventPersistance, IObjectEventRetrieval { IObjectEventPersistance, IObjectEventRetrieval {
private static final IUFStatusHandler log = UFStatus
.getHandler(CollaborationObjectEventStorage.class);
private static NetworkStatistics stats = com.raytheon.uf.viz.collaboration.comm.Activator private static NetworkStatistics stats = com.raytheon.uf.viz.collaboration.comm.Activator
.getDefault().getNetworkStats(); .getDefault().getNetworkStats();
@ -91,14 +98,37 @@ public class CollaborationObjectEventStorage implements
persistance.createFolder(URI.create(persistance.sessionDataURL)); persistance.createFolder(URI.create(persistance.sessionDataURL));
persistance.sessionDataURL += persistance.displayId + "/"; persistance.sessionDataURL += persistance.displayId + "/";
persistance.createFolder(URI.create(persistance.sessionDataURL)); persistance.createFolder(URI.create(persistance.sessionDataURL));
appendProviderIdToPath(persistance);
persistance.createFolder(URI.create(persistance.sessionDataURL));
return persistance; return persistance;
} }
/**
* appends URL encoded provider id to persistence URL path
*
* @param persistance
*/
@SuppressWarnings("deprecation")
private static void appendProviderIdToPath(
CollaborationObjectEventStorage persistance) {
try {
persistance.sessionDataURL += URLEncoder.encode(persistance.providerid,
"UTF-8") + "/";
} catch (UnsupportedEncodingException e) {
log.warn("URL encoding failed, retrying with default encoding: "
+ e.getLocalizedMessage());
// unlikely that utf8 isn't supported, but just go again with the
// default encoding
persistance.sessionDataURL += URLEncoder.encode(persistance.providerid);
}
}
public static IObjectEventRetrieval createRetrievalObject( public static IObjectEventRetrieval createRetrievalObject(
ISharedDisplaySession session, int displayId) { ISharedDisplaySession session, int displayId) {
CollaborationObjectEventStorage persistance = new CollaborationObjectEventStorage( CollaborationObjectEventStorage persistance = new CollaborationObjectEventStorage(
session, displayId); session, displayId);
persistance.sessionDataURL += persistance.displayId + "/"; persistance.sessionDataURL += persistance.displayId + "/";
appendProviderIdToPath(persistance);
return persistance; return persistance;
} }
@ -116,15 +146,16 @@ public class CollaborationObjectEventStorage implements
private final XMLInputFactory staxFactory = XMLInputFactory.newInstance(); private final XMLInputFactory staxFactory = XMLInputFactory.newInstance();
private final String providerid;
private CollaborationObjectEventStorage(ISharedDisplaySession session, private CollaborationObjectEventStorage(ISharedDisplaySession session,
int displayId) { int displayId) {
this.displayId = displayId; this.displayId = displayId;
this.client = HttpClient.getInstance(); this.client = HttpClient.getInstance();
VenueParticipant dataProvider = session.getCurrentDataProvider(); VenueParticipant dataProvider = session.getCurrentDataProvider();
String providerPath = dataProvider.getUserid().getName(); this.providerid = dataProvider.getUserid().getNormalizedId();
this.sessionDataURL = PeerToPeerCommHelper.getCollaborationHttpServer(); this.sessionDataURL = PeerToPeerCommHelper.getCollaborationHttpServer();
this.sessionDataURL += session.getSessionId() + "/" + providerPath this.sessionDataURL += session.getSessionId() + "/";
+ "/";
} }
/* /*