1 16 package org.outerj.daisy.repository.clientimpl; 17 18 import org.outerj.daisy.repository.commonimpl.RepositoryImpl; 19 import org.outerj.daisy.repository.commonimpl.CommonRepository; 20 import org.outerj.daisy.repository.commonimpl.AuthenticatedUser; 21 import org.outerj.daisy.repository.RepositoryException; 22 import org.outerj.daisy.repository.clientimpl.infrastructure.AbstractRemoteStrategy; 23 import org.outerj.daisy.repository.clientimpl.infrastructure.DaisyHttpClient; 24 import org.apache.commons.httpclient.methods.GetMethod; 25 import org.apache.commons.httpclient.NameValuePair; 26 27 import java.util.Map ; 28 import java.util.Iterator ; 29 30 public class RemoteRepositoryImpl extends RepositoryImpl { 31 private RemoteClient remoteClient; 32 private RemoteRepositoryManager.Context context; 33 34 public RemoteRepositoryImpl(CommonRepository delegate, AuthenticatedUser user, RemoteRepositoryManager.Context context) { 35 super(delegate, user); 36 this.context = context; 37 } 38 39 48 public GetMethod getResource(String path, Map parameters) throws RepositoryException { 49 if (remoteClient == null) 50 remoteClient = new RemoteClient(context); 51 52 GetMethod getMethod = new GetMethod(path); 53 NameValuePair[] queryString = new NameValuePair[parameters.size()]; 54 int i = 0; 55 Iterator parametersIt = parameters.entrySet().iterator(); 56 while (parametersIt.hasNext()) { 57 Map.Entry entry = (Map.Entry )parametersIt.next(); 58 String key = (String )entry.getKey(); 59 String value = entry.getValue().toString(); 60 queryString[i] = new NameValuePair(key, value); 61 i++; 62 } 63 getMethod.setQueryString(queryString); 64 65 DaisyHttpClient httpClient = remoteClient.getHttpClientForCurrentUser(); 66 httpClient.executeMethod(getMethod, null, false); 67 68 return getMethod; 69 } 70 71 public DaisyHttpClient getHttpClient() { 72 if (remoteClient == null) 73 remoteClient = new RemoteClient(context); 74 75 DaisyHttpClient httpClient = remoteClient.getHttpClientForCurrentUser(); 76 return httpClient; 77 } 78 79 public String getBaseURL() { 80 return context.getBaseURL(); 81 } 82 83 private class RemoteClient extends AbstractRemoteStrategy { 84 public RemoteClient(RemoteRepositoryManager.Context context) { 85 super(context); 86 } 87 88 protected DaisyHttpClient getHttpClientForCurrentUser() { 89 return getClient(user); 90 } 91 } 92 93 public Object clone() { 94 return new RemoteRepositoryImpl(getCommonRepository(), getUser(), context); 95 } 96 } 97 | Popular Tags |