mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
REPO-908: V1 REST API - minor test fwk improvement
- change default port from 8081 to 8765 (to avoid clash with Share, if already running in local dev env) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@133650 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,28 +1,28 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.rest.api.tests;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -73,9 +73,9 @@ public abstract class AbstractTestApi
|
||||
@Before
|
||||
public void setupTests() throws Exception
|
||||
{
|
||||
TestFixture testFixture = getTestFixture(false);
|
||||
this.applicationContext = testFixture.getApplicationContext();
|
||||
this.repoService = testFixture.getRepoService();
|
||||
TestFixture testFixture = getTestFixture(false);
|
||||
this.applicationContext = testFixture.getApplicationContext();
|
||||
this.repoService = testFixture.getRepoService();
|
||||
this.transactionHelper = (RetryingTransactionHelper)applicationContext.getBean("retryingTransactionHelper");
|
||||
|
||||
HttpClientProvider httpClientProvider = (HttpClientProvider)applicationContext.getBean("httpClientProvider");
|
||||
@@ -95,7 +95,7 @@ public abstract class AbstractTestApi
|
||||
};
|
||||
AuthenticationDetailsProvider authenticationDetailsProvider = new UserAuthenticationDetailsProviderImpl(userDataService, "admin", "admin");
|
||||
AuthenticatedHttp authenticatedHttp = new AuthenticatedHttp(httpClientProvider, authenticationDetailsProvider);
|
||||
this.httpClient = new PublicApiHttpClient("localhost", TestFixture.PORT, TestFixture.CONTEXT_PATH,
|
||||
this.httpClient = new PublicApiHttpClient(TestFixture.HOST, TestFixture.PORT, TestFixture.CONTEXT_PATH,
|
||||
TestFixture.PUBLIC_API_SERVLET_NAME, authenticatedHttp);
|
||||
this.publicApiClient = new PublicApiClient(httpClient, userDataService);
|
||||
}
|
||||
@@ -223,9 +223,9 @@ public abstract class AbstractTestApi
|
||||
}
|
||||
|
||||
protected abstract TestFixture getTestFixture() throws Exception;
|
||||
|
||||
/**
|
||||
* @param createTestData The created instance can optionally create test data if required
|
||||
*/
|
||||
protected abstract TestFixture getTestFixture(boolean createTestData) throws Exception;
|
||||
|
||||
/**
|
||||
* @param createTestData The created instance can optionally create test data if required
|
||||
*/
|
||||
protected abstract TestFixture getTestFixture(boolean createTestData) throws Exception;
|
||||
}
|
||||
|
@@ -1,28 +1,28 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.rest.api.tests;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
@@ -54,12 +54,12 @@ public abstract class AbstractTestFixture implements TestFixture
|
||||
protected TreeMap<String, TestNetwork> networks = new TreeMap<String, TestNetwork>();
|
||||
protected TreeMap<String, SiteInformation> sites = new TreeMap<String, SiteInformation>();
|
||||
|
||||
protected String[] configLocations;
|
||||
protected final String[] classLocations;
|
||||
protected int port = 8081;
|
||||
protected String contextPath = "/alfresco";
|
||||
protected String servletName = "api";
|
||||
protected String hostname = "localhost";
|
||||
private String[] configLocations;
|
||||
private final String[] classLocations;
|
||||
private int port = PORT;
|
||||
private String contextPath = CONTEXT_PATH;
|
||||
private String servletName = PUBLIC_API_SERVLET_NAME;
|
||||
|
||||
protected JettyComponent jetty;
|
||||
protected boolean cleanup;
|
||||
protected Random random = new Random();
|
||||
@@ -94,29 +94,49 @@ public abstract class AbstractTestFixture implements TestFixture
|
||||
{
|
||||
return port;
|
||||
}
|
||||
|
||||
|
||||
public String getContextPath()
|
||||
{
|
||||
return contextPath;
|
||||
}
|
||||
|
||||
public String getServletName()
|
||||
{
|
||||
return servletName;
|
||||
}
|
||||
|
||||
public String[] getConfigLocations()
|
||||
{
|
||||
return configLocations;
|
||||
}
|
||||
|
||||
public String[] getClassLocations()
|
||||
{
|
||||
return classLocations;
|
||||
}
|
||||
|
||||
protected abstract JettyComponent makeJettyComponent();
|
||||
protected abstract void populateTestData();
|
||||
protected abstract RepoService makeRepoService() throws Exception;
|
||||
|
||||
public void setup() throws Exception
|
||||
{
|
||||
setup(true);
|
||||
}
|
||||
|
||||
public void setup(boolean createTestData) throws Exception
|
||||
{
|
||||
setup(true);
|
||||
}
|
||||
|
||||
public void setup(boolean createTestData) throws Exception
|
||||
{
|
||||
this.jetty = makeJettyComponent();
|
||||
this.jetty.start();
|
||||
this.applicationContext = jetty.getApplicationContext();
|
||||
this.repoService = makeRepoService();
|
||||
this.transactionHelper = (RetryingTransactionHelper)repoService.getApplicationContext().getBean("retryingTransactionHelper");
|
||||
|
||||
if (createTestData)
|
||||
{
|
||||
populateTestData();
|
||||
createTestData();
|
||||
}
|
||||
if (createTestData)
|
||||
{
|
||||
populateTestData();
|
||||
createTestData();
|
||||
}
|
||||
}
|
||||
|
||||
public RepoService getRepoService()
|
||||
@@ -146,11 +166,11 @@ public abstract class AbstractTestFixture implements TestFixture
|
||||
|
||||
public TestNetwork getRandomNetwork()
|
||||
{
|
||||
if (networks.isEmpty())
|
||||
{
|
||||
populateTestData();
|
||||
createTestData();
|
||||
}
|
||||
if (networks.isEmpty())
|
||||
{
|
||||
populateTestData();
|
||||
createTestData();
|
||||
}
|
||||
int r = random.nextInt(networks.size());
|
||||
List<TestNetwork> a = new ArrayList<TestNetwork>();
|
||||
a.addAll(networks.values());
|
||||
|
@@ -1,28 +1,28 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.rest.api.tests;
|
||||
|
||||
import org.alfresco.repo.web.util.JettyComponent;
|
||||
@@ -45,21 +45,21 @@ public class EnterprisePublicApiTestFixture extends EnterpriseTestFixture
|
||||
/*
|
||||
* Note: synchronized for multi-threaded test access
|
||||
*/
|
||||
public synchronized static EnterprisePublicApiTestFixture getInstance(boolean createTestData) throws Exception
|
||||
public synchronized static EnterprisePublicApiTestFixture getInstance(boolean createTestData) throws Exception
|
||||
{
|
||||
if(instance == null)
|
||||
{
|
||||
instance = new EnterprisePublicApiTestFixture();
|
||||
instance.setup(createTestData);
|
||||
instance.setup(createTestData);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static EnterprisePublicApiTestFixture getInstance() throws Exception
|
||||
{
|
||||
return getInstance(true);
|
||||
}
|
||||
|
||||
public static EnterprisePublicApiTestFixture getInstance() throws Exception
|
||||
{
|
||||
return getInstance(true);
|
||||
}
|
||||
|
||||
private EnterprisePublicApiTestFixture()
|
||||
{
|
||||
super(CONFIG_LOCATIONS, CLASS_LOCATIONS, PORT, CONTEXT_PATH, PUBLIC_API_SERVLET_NAME, DEFAULT_NUM_MEMBERS_PER_SITE, false);
|
||||
@@ -68,7 +68,7 @@ public class EnterprisePublicApiTestFixture extends EnterpriseTestFixture
|
||||
@Override
|
||||
protected JettyComponent makeJettyComponent()
|
||||
{
|
||||
JettyComponent jettyComponent = new EnterpriseJettyComponent(port, contextPath, configLocations, classLocations);
|
||||
JettyComponent jettyComponent = new EnterpriseJettyComponent(getPort(), getContextPath(), getConfigLocations(), getClassLocations());
|
||||
return jettyComponent;
|
||||
}
|
||||
|
||||
|
@@ -23,25 +23,26 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.rest.api.tests;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.alfresco.repo.web.util.JettyComponent;
|
||||
import org.alfresco.rest.api.tests.RepoService.TestNetwork;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
public interface TestFixture
|
||||
{
|
||||
public final static int PORT = 8081;
|
||||
public final static String CONTEXT_PATH = "/alfresco";
|
||||
public final static String PUBLIC_API_SERVLET_NAME = "api";
|
||||
|
||||
ApplicationContext getApplicationContext();
|
||||
RepoService getRepoService();
|
||||
Iterator<TestNetwork> getNetworksIt();
|
||||
TestNetwork getRandomNetwork();
|
||||
Iterator<TestNetwork> networksIterator();
|
||||
JettyComponent getJettyComponent();
|
||||
TestNetwork getNetwork(String name);
|
||||
}
|
||||
package org.alfresco.rest.api.tests;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.alfresco.repo.web.util.JettyComponent;
|
||||
import org.alfresco.rest.api.tests.RepoService.TestNetwork;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
public interface TestFixture
|
||||
{
|
||||
public final static String HOST = "localhost";
|
||||
public final static int PORT = 8765;
|
||||
public final static String CONTEXT_PATH = "/alfresco";
|
||||
public final static String PUBLIC_API_SERVLET_NAME = "api";
|
||||
|
||||
ApplicationContext getApplicationContext();
|
||||
RepoService getRepoService();
|
||||
Iterator<TestNetwork> getNetworksIt();
|
||||
TestNetwork getRandomNetwork();
|
||||
Iterator<TestNetwork> networksIterator();
|
||||
JettyComponent getJettyComponent();
|
||||
TestNetwork getNetwork(String name);
|
||||
}
|
||||
|
@@ -23,96 +23,97 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.rest.api.tests.client;
|
||||
|
||||
package org.alfresco.rest.api.tests.client;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
|
||||
import org.alfresco.repo.tenant.TenantService;
|
||||
import org.alfresco.repo.tenant.TenantUtil;
|
||||
import org.alfresco.repo.web.scripts.BaseWebScriptTest.PatchMethod;
|
||||
import org.alfresco.rest.api.tests.client.AuthenticatedHttp.HttpRequestCallback;
|
||||
import org.alfresco.rest.framework.Api;
|
||||
import org.alfresco.rest.framework.Api.SCOPE;
|
||||
import org.alfresco.rest.framework.core.ResourceInspector;
|
||||
import org.alfresco.rest.framework.resource.EntityResource;
|
||||
import org.alfresco.rest.framework.resource.RelationshipResource;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.util.Pair;
|
||||
import org.apache.commons.httpclient.Header;
|
||||
import org.apache.commons.httpclient.HttpException;
|
||||
import org.apache.commons.httpclient.HttpMethod;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
|
||||
import org.alfresco.repo.tenant.TenantService;
|
||||
import org.alfresco.repo.tenant.TenantUtil;
|
||||
import org.alfresco.repo.web.scripts.BaseWebScriptTest.PatchMethod;
|
||||
import org.alfresco.rest.api.tests.TestFixture;
|
||||
import org.alfresco.rest.api.tests.client.AuthenticatedHttp.HttpRequestCallback;
|
||||
import org.alfresco.rest.framework.Api;
|
||||
import org.alfresco.rest.framework.Api.SCOPE;
|
||||
import org.alfresco.rest.framework.core.ResourceInspector;
|
||||
import org.alfresco.rest.framework.resource.EntityResource;
|
||||
import org.alfresco.rest.framework.resource.RelationshipResource;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.util.Pair;
|
||||
import org.apache.commons.httpclient.Header;
|
||||
import org.apache.commons.httpclient.HttpException;
|
||||
import org.apache.commons.httpclient.HttpMethod;
|
||||
import org.apache.commons.httpclient.HttpMethodBase;
|
||||
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
|
||||
import org.apache.commons.httpclient.methods.DeleteMethod;
|
||||
import org.apache.commons.httpclient.methods.GetMethod;
|
||||
import org.apache.commons.httpclient.methods.HeadMethod;
|
||||
import org.apache.commons.httpclient.methods.OptionsMethod;
|
||||
import org.apache.commons.httpclient.methods.PostMethod;
|
||||
import org.apache.commons.httpclient.methods.PutMethod;
|
||||
import org.apache.commons.httpclient.methods.DeleteMethod;
|
||||
import org.apache.commons.httpclient.methods.GetMethod;
|
||||
import org.apache.commons.httpclient.methods.HeadMethod;
|
||||
import org.apache.commons.httpclient.methods.OptionsMethod;
|
||||
import org.apache.commons.httpclient.methods.PostMethod;
|
||||
import org.apache.commons.httpclient.methods.PutMethod;
|
||||
import org.apache.commons.httpclient.methods.RequestEntity;
|
||||
import org.apache.commons.httpclient.methods.StringRequestEntity;
|
||||
import org.apache.commons.httpclient.methods.TraceMethod;
|
||||
import org.apache.commons.httpclient.methods.StringRequestEntity;
|
||||
import org.apache.commons.httpclient.methods.TraceMethod;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
|
||||
import org.springframework.core.type.classreading.MetadataReader;
|
||||
import org.springframework.core.type.classreading.MetadataReaderFactory;
|
||||
|
||||
/**
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
|
||||
import org.springframework.core.type.classreading.MetadataReader;
|
||||
import org.springframework.core.type.classreading.MetadataReaderFactory;
|
||||
|
||||
/**
|
||||
* A http client for talking to the rest apis. The caller can pass in a rest api
|
||||
* implementation class to the http method (get, post, put, delete supported)
|
||||
* and the url will be generated.
|
||||
* and the url will be generated.
|
||||
*
|
||||
* @author steveglover
|
||||
*/
|
||||
public class PublicApiHttpClient
|
||||
{
|
||||
private static final Log logger = LogFactory.getLog(PublicApiHttpClient.class);
|
||||
|
||||
private static final String OLD_BASE_URL = "{0}://{1}:{2}{3}{4}{5}/api/";
|
||||
* @author steveglover
|
||||
*/
|
||||
public class PublicApiHttpClient
|
||||
{
|
||||
private static final Log logger = LogFactory.getLog(PublicApiHttpClient.class);
|
||||
|
||||
private static final String OLD_BASE_URL = "{0}://{1}:{2}{3}{4}{5}/api/";
|
||||
private static final String INDEX_URL = "{0}://{1}:{2}{3}{4}";
|
||||
private static final String BASE_URL = "{0}://{1}:{2}{3}{4}{5}/{6}/{7}/versions/{8}";
|
||||
private static final String PUBLICAPI_CMIS_SERVICE_URL = "{0}://{1}:{2}{3}{4}cmis/versions/{5}/{6}";
|
||||
private static final String PUBLICAPI_CMIS_URL = "{0}://{1}:{2}{3}{4}{5}/{6}/cmis/versions/{7}/{8}";
|
||||
private static final String PUBLICAPI_CMIS_URL_SUFFIX = "{0}/{1}/cmis/versions/{2}/{3}";
|
||||
private static final String PUBLICAPI_CMIS_URL_SUFFIX = "{0}/{1}/cmis/versions/{2}/{3}";
|
||||
private static final String ATOM_PUB_URL = "{0}://{1}:{2}{3}cmisatom";
|
||||
|
||||
|
||||
private String scheme = "http";
|
||||
private String host = "localhost";
|
||||
private int port = 8081;
|
||||
|
||||
private String contextPath;
|
||||
private String servletName;
|
||||
private AuthenticatedHttp authenticatedHttp;
|
||||
|
||||
private String host = TestFixture.HOST;
|
||||
private int port = TestFixture.PORT;
|
||||
|
||||
private String contextPath;
|
||||
private String servletName;
|
||||
private AuthenticatedHttp authenticatedHttp;
|
||||
|
||||
private ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
|
||||
private MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(this.resourcePatternResolver);
|
||||
|
||||
|
||||
// can be overriden by other clients like the workflow client
|
||||
protected String apiName = "alfresco";
|
||||
|
||||
|
||||
public PublicApiHttpClient(String host, int port, String contextPath, String servletName, AuthenticatedHttp authenticatedHttp)
|
||||
{
|
||||
this("http", host, port, contextPath, servletName, authenticatedHttp);
|
||||
}
|
||||
|
||||
|
||||
public PublicApiHttpClient(String scheme, String host, int port, String contextPath, String servletName, AuthenticatedHttp authenticatedHttp)
|
||||
{
|
||||
super();
|
||||
@@ -135,7 +136,7 @@ public class PublicApiHttpClient
|
||||
}
|
||||
this.authenticatedHttp = authenticatedHttp;
|
||||
}
|
||||
|
||||
|
||||
public String getCmisUrl(String repositoryId, String operation)
|
||||
{
|
||||
StringBuilder url = new StringBuilder();
|
||||
@@ -149,16 +150,16 @@ public class PublicApiHttpClient
|
||||
url.append("/");
|
||||
url.append(repositoryId);
|
||||
}
|
||||
|
||||
|
||||
if (operation != null)
|
||||
{
|
||||
url.append("/");
|
||||
url.append(operation);
|
||||
}
|
||||
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
|
||||
public String getPublicApiCmisUrl(String networkId, Binding binding, String version, String operation)
|
||||
{
|
||||
StringBuilder url = new StringBuilder();
|
||||
@@ -172,41 +173,41 @@ public class PublicApiHttpClient
|
||||
url.append(MessageFormat.format(PUBLICAPI_CMIS_URL, new Object[] { scheme, host, String.valueOf(port), contextPath, servletName,
|
||||
networkId, "public", version, binding.toString().toLowerCase() }));
|
||||
}
|
||||
|
||||
|
||||
if (operation != null)
|
||||
{
|
||||
url.append("/");
|
||||
url.append(operation);
|
||||
}
|
||||
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
public String getPublicApiCmisUrlSuffix(String networkId, Binding binding, String version, String operation)
|
||||
{
|
||||
StringBuilder url = new StringBuilder();
|
||||
|
||||
public String getPublicApiCmisUrlSuffix(String networkId, Binding binding, String version, String operation)
|
||||
{
|
||||
StringBuilder url = new StringBuilder();
|
||||
|
||||
url.append(MessageFormat.format(PUBLICAPI_CMIS_URL_SUFFIX, new Object[] { networkId, "public", version, binding.toString().toLowerCase() }));
|
||||
|
||||
|
||||
if (operation != null)
|
||||
{
|
||||
url.append("/");
|
||||
url.append(operation);
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
{
|
||||
url.append("/");
|
||||
url.append(operation);
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
public void setHost(String host)
|
||||
{
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
|
||||
public void setPort(int port)
|
||||
{
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
|
||||
public void setContextPath(String contextPath)
|
||||
{
|
||||
this.contextPath = contextPath;
|
||||
@@ -224,19 +225,19 @@ public class PublicApiHttpClient
|
||||
}
|
||||
}
|
||||
|
||||
protected AnnotationMetadata getAnnotationMetadata(String classname) throws IOException
|
||||
{
|
||||
protected AnnotationMetadata getAnnotationMetadata(String classname) throws IOException
|
||||
{
|
||||
MetadataReader metadataReader = this.metadataReaderFactory.getMetadataReader(classname);
|
||||
AnnotationMetadata annotationMetaData = metadataReader.getAnnotationMetadata();
|
||||
return annotationMetaData;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public HttpResponse submitRequest(HttpMethod req, final RequestContext rq) throws HttpException, IOException
|
||||
{
|
||||
{
|
||||
try
|
||||
{
|
||||
final long start = System.currentTimeMillis();
|
||||
|
||||
|
||||
final HttpRequestCallback<HttpResponse> callback = new HttpRequestCallback<HttpResponse>()
|
||||
{
|
||||
@Override
|
||||
@@ -250,14 +251,14 @@ public class PublicApiHttpClient
|
||||
{
|
||||
headersMap = new HashMap<String, String>(headers.length);
|
||||
for (Header header : headers)
|
||||
{
|
||||
headersMap.put(header.getName(), header.getValue());
|
||||
}
|
||||
{
|
||||
headersMap.put(header.getName(), header.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return new HttpResponse(method, rq.getRunAsUser(), method.getResponseBody(), headersMap, (end - start));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onError(HttpMethod method, Throwable t)
|
||||
{
|
||||
@@ -283,40 +284,40 @@ public class PublicApiHttpClient
|
||||
req.releaseConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public HttpResponse get(final RequestContext rq, final String urlSuffix, Map<String, String> params) throws IOException
|
||||
}
|
||||
|
||||
public HttpResponse get(final RequestContext rq, final String urlSuffix, Map<String, String> params) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), urlSuffix, params);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
GetMethod req = new GetMethod(url);
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse get(final Class<?> c, final RequestContext rq, final Object entityId, final Object relationshipEntityId,
|
||||
Map<String, String> params) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(c, rq.getNetworkId(), entityId, relationshipEntityId, params);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
GetMethod req = new GetMethod(url);
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse get(final RequestContext rq, String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, Map<String, String> params) throws IOException
|
||||
{
|
||||
return get(rq, scope, 1, entityCollectionName, entityId, relationCollectionName, relationshipEntityId, params);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse get(final RequestContext rq, final String scope, final int version, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, Map<String, String> params) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), scope, version, entityCollectionName, entityId, relationCollectionName,
|
||||
relationshipEntityId, params);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
GetMethod req = new GetMethod(url);
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
@@ -338,7 +339,7 @@ public class PublicApiHttpClient
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
public HttpResponse get(final String urlSuffix, final RequestContext rq, Map<String, String> params) throws IOException
|
||||
public HttpResponse get(final String urlSuffix, final RequestContext rq, Map<String, String> params) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(urlSuffix, params);
|
||||
String url = endpoint.getUrl();
|
||||
@@ -347,15 +348,15 @@ public class PublicApiHttpClient
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
public HttpResponse getWithPassword(final String urlSuffix, final RequestContext rq, Map<String, String> params) throws IOException
|
||||
public HttpResponse getWithPassword(final String urlSuffix, final RequestContext rq, Map<String, String> params) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(urlSuffix, params);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
GetMethod req = new GetMethod(url);
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse post(final Class<?> c, final RequestContext rq, final Object entityId, final Object relationshipEntityId, final String body)
|
||||
throws IOException
|
||||
{
|
||||
@@ -371,11 +372,11 @@ public class PublicApiHttpClient
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
public HttpResponse post(final RequestContext rq, final String urlSuffix, String body) throws IOException
|
||||
public HttpResponse post(final RequestContext rq, final String urlSuffix, String body) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), urlSuffix, null);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
PostMethod req = new PostMethod(url.toString());
|
||||
if (body != null)
|
||||
{
|
||||
@@ -384,12 +385,12 @@ public class PublicApiHttpClient
|
||||
}
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse post(final RequestContext rq, Binding cmisBinding, String version, String cmisOperation, final String body) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), cmisBinding, version, cmisOperation, null);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
PostMethod req = new PostMethod(url.toString());
|
||||
if (body != null)
|
||||
{
|
||||
@@ -406,7 +407,7 @@ public class PublicApiHttpClient
|
||||
}
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse put(final RequestContext rq, Binding cmisBinding, String version, String cmisOperation, final String body) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), cmisBinding, version, cmisOperation, null);
|
||||
@@ -484,15 +485,15 @@ public class PublicApiHttpClient
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
public HttpResponse post(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final String body) throws IOException
|
||||
{
|
||||
return post(rq, scope, entityCollectionName, entityId, relationCollectionName, relationshipEntityId, body, "application/json");
|
||||
}
|
||||
|
||||
public HttpResponse post(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final String body, String contentType) throws IOException
|
||||
{
|
||||
public HttpResponse post(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final String body) throws IOException
|
||||
{
|
||||
return post(rq, scope, entityCollectionName, entityId, relationCollectionName, relationshipEntityId, body, "application/json");
|
||||
}
|
||||
|
||||
public HttpResponse post(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final String body, String contentType) throws IOException
|
||||
{
|
||||
return post(rq, scope, 1, entityCollectionName, entityId, relationCollectionName, relationshipEntityId, body, contentType);
|
||||
}
|
||||
|
||||
@@ -500,22 +501,22 @@ public class PublicApiHttpClient
|
||||
final String relationCollectionName, final Object relationshipEntityId, final String body, String contentType) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), scope, version, entityCollectionName, entityId, relationCollectionName,
|
||||
relationshipEntityId, null);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
PostMethod req = new PostMethod(url.toString());
|
||||
if (body != null)
|
||||
{
|
||||
if (contentType == null || contentType.isEmpty())
|
||||
{
|
||||
contentType = "application/json";
|
||||
}
|
||||
StringRequestEntity requestEntity = new StringRequestEntity(body, contentType, "UTF-8");
|
||||
req.setRequestEntity(requestEntity);
|
||||
}
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
relationshipEntityId, null);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
PostMethod req = new PostMethod(url.toString());
|
||||
if (body != null)
|
||||
{
|
||||
if (contentType == null || contentType.isEmpty())
|
||||
{
|
||||
contentType = "application/json";
|
||||
}
|
||||
StringRequestEntity requestEntity = new StringRequestEntity(body, contentType, "UTF-8");
|
||||
req.setRequestEntity(requestEntity);
|
||||
}
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
public HttpResponse post(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final byte[] body, String contentType) throws IOException
|
||||
{
|
||||
@@ -546,34 +547,34 @@ public class PublicApiHttpClient
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(c, rq.getNetworkId(), entityId, relationshipEntityId, null);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
DeleteMethod req = new DeleteMethod(url);
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse delete(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId) throws IOException
|
||||
{
|
||||
return delete(rq, scope, 1, entityCollectionName, entityId, relationCollectionName, relationshipEntityId, null);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse delete(final RequestContext rq, final String scope, final int version, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final Map<String, String> params) throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(rq.getNetworkId(), scope, version, entityCollectionName, entityId, relationCollectionName,
|
||||
relationshipEntityId, params);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
DeleteMethod req = new DeleteMethod(url);
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse put(final Class<?> c, final RequestContext rq, final Object entityId, final Object relationshipEntityId, final String body)
|
||||
throws IOException
|
||||
{
|
||||
RestApiEndpoint endpoint = new RestApiEndpoint(c, rq.getNetworkId(), entityId, relationshipEntityId, null);
|
||||
String url = endpoint.getUrl();
|
||||
|
||||
|
||||
PutMethod req = new PutMethod(url);
|
||||
if (body != null)
|
||||
{
|
||||
@@ -582,7 +583,7 @@ public class PublicApiHttpClient
|
||||
}
|
||||
return submitRequest(req, rq);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse put(final RequestContext rq, final String scope, final String entityCollectionName, final Object entityId,
|
||||
final String relationCollectionName, final Object relationshipEntityId, final String body, final Map<String, String> params) throws IOException
|
||||
{
|
||||
@@ -631,10 +632,10 @@ public class PublicApiHttpClient
|
||||
* Encapsulates information relating to a rest api end point, generating and
|
||||
* encoding urls based on the rest api implementation class.
|
||||
*/
|
||||
private class RestApiEndpoint
|
||||
{
|
||||
private class RestApiEndpoint
|
||||
{
|
||||
private String url;
|
||||
|
||||
|
||||
RestApiEndpoint(String url, Map<String, String> params) throws IOException
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(
|
||||
@@ -643,29 +644,29 @@ public class PublicApiHttpClient
|
||||
{
|
||||
sb.append(url);
|
||||
}
|
||||
|
||||
|
||||
addParams(sb, params);
|
||||
|
||||
|
||||
this.url = sb.toString();
|
||||
}
|
||||
|
||||
|
||||
RestApiEndpoint(String tenantDomain, String url, Map<String, String> params) throws IOException
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(MessageFormat.format(OLD_BASE_URL, new Object[] { scheme, host, String.valueOf(port), contextPath,
|
||||
servletName, tenantDomain == null ? TenantUtil.DEFAULT_TENANT : tenantDomain }));
|
||||
sb.append("/");
|
||||
sb.append(url);
|
||||
|
||||
|
||||
addParams(sb, params);
|
||||
|
||||
|
||||
this.url = sb.toString();
|
||||
}
|
||||
|
||||
|
||||
RestApiEndpoint(Class<?> resourceClass, String tenantDomain, Object collectionEntityId, Object relationEntityId, Map<String, String> params)
|
||||
throws IOException
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
Api api = ResourceInspector.inspectApi(resourceClass);
|
||||
SCOPE scope = api.getScope();
|
||||
int version = api.getVersion();
|
||||
@@ -676,17 +677,17 @@ public class PublicApiHttpClient
|
||||
}
|
||||
|
||||
Pair<String, String> relationshipCollectionInfo = getRelationCollectionInfo(resourceClass);
|
||||
|
||||
|
||||
sb.append(MessageFormat.format(BASE_URL, new Object[] { scheme, host, String.valueOf(port), contextPath, servletName,
|
||||
tenantDomain == null ? TenantUtil.DEFAULT_TENANT : tenantDomain, scope.toString(), name, version }));
|
||||
|
||||
|
||||
if (relationshipCollectionInfo != null)
|
||||
{
|
||||
String entityCollectionName = relationshipCollectionInfo.getFirst();
|
||||
String relationshipCollectionName = relationshipCollectionInfo.getSecond();
|
||||
String relationEntityIdString = encodeToString(relationEntityId);
|
||||
String collectionEntityIdString = encodeToString(collectionEntityId);
|
||||
|
||||
|
||||
sb.append('/');
|
||||
sb.append(entityCollectionName);
|
||||
sb.append('/');
|
||||
@@ -695,7 +696,7 @@ public class PublicApiHttpClient
|
||||
sb.append(collectionEntityIdString);
|
||||
sb.append('/');
|
||||
}
|
||||
|
||||
|
||||
sb.append(relationshipCollectionName);
|
||||
sb.append('/');
|
||||
if (relationEntityIdString != null)
|
||||
@@ -710,7 +711,7 @@ public class PublicApiHttpClient
|
||||
if (entityCollectionName != null)
|
||||
{
|
||||
String collectionEntityIdString = encodeToString(collectionEntityId);
|
||||
|
||||
|
||||
sb.append('/');
|
||||
sb.append(entityCollectionName);
|
||||
sb.append('/');
|
||||
@@ -725,16 +726,16 @@ public class PublicApiHttpClient
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
addParams(sb, params);
|
||||
|
||||
|
||||
this.url = sb.toString();
|
||||
}
|
||||
|
||||
|
||||
RestApiEndpoint(String networkId, Binding cmisBinding, String version, String cmisOperation, Map<String, String> params) throws IOException
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
if (networkId != null)
|
||||
{
|
||||
sb.append(getPublicApiCmisUrl(networkId, cmisBinding, version, cmisOperation));
|
||||
@@ -743,12 +744,12 @@ public class PublicApiHttpClient
|
||||
{
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
|
||||
addParams(sb, params);
|
||||
|
||||
|
||||
this.url = sb.toString();
|
||||
}
|
||||
|
||||
|
||||
RestApiEndpoint(String tenantDomain, String scope, int version, String collectionName, Object collectionEntityId, String relationName,
|
||||
Object relationEntityId, Map<String, String> params) throws IOException
|
||||
{
|
||||
@@ -759,7 +760,7 @@ public class PublicApiHttpClient
|
||||
String relationName, Object relationEntityId, Map<String, String> params) throws IOException
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
if (tenantDomain == null || tenantDomain.equals(TenantService.DEFAULT_DOMAIN))
|
||||
{
|
||||
tenantDomain = TenantUtil.DEFAULT_TENANT;
|
||||
@@ -772,7 +773,7 @@ public class PublicApiHttpClient
|
||||
|
||||
sb.append(MessageFormat.format(BASE_URL,
|
||||
new Object[] { scheme, host, String.valueOf(port), contextPath, servletName, tenantDomain, scope, apiName, version }));
|
||||
|
||||
|
||||
if (collectionName != null)
|
||||
{
|
||||
sb.append('/');
|
||||
@@ -783,7 +784,7 @@ public class PublicApiHttpClient
|
||||
sb.append(collectionEntityId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (relationName != null)
|
||||
{
|
||||
sb.append('/');
|
||||
@@ -794,24 +795,24 @@ public class PublicApiHttpClient
|
||||
sb.append(relationEntityId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
addParams(sb, params);
|
||||
|
||||
|
||||
this.url = sb.toString();
|
||||
}
|
||||
|
||||
|
||||
RestApiEndpoint(String tenantDomain, String scope, String collectionName, Object collectionEntityId, String relationName,
|
||||
Object relationEntityId, Map<String, String> params) throws IOException
|
||||
{
|
||||
this(tenantDomain, scope, 1, collectionName, collectionEntityId, relationName, relationEntityId, params);
|
||||
}
|
||||
|
||||
|
||||
private void addParams(StringBuilder sb, Map<String, String> params) throws UnsupportedEncodingException
|
||||
{
|
||||
if (params != null && params.size() > 0)
|
||||
{
|
||||
sb.append("?");
|
||||
|
||||
|
||||
for (String paramName : params.keySet())
|
||||
{
|
||||
sb.append(URLEncoder.encode(paramName, "UTF-8"));
|
||||
@@ -824,8 +825,8 @@ public class PublicApiHttpClient
|
||||
}
|
||||
}
|
||||
|
||||
private String encodeToString(Object o) throws UnsupportedEncodingException
|
||||
{
|
||||
private String encodeToString(Object o) throws UnsupportedEncodingException
|
||||
{
|
||||
String ret = null;
|
||||
|
||||
if (o instanceof NodeRef)
|
||||
@@ -839,10 +840,10 @@ public class PublicApiHttpClient
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
private Pair<String, String> getRelationCollectionInfo(Class<?> resourceClass) throws IOException
|
||||
{
|
||||
private Pair<String, String> getRelationCollectionInfo(Class<?> resourceClass) throws IOException
|
||||
{
|
||||
AnnotationMetadata annotationMetaData = getAnnotationMetadata(resourceClass.getCanonicalName());
|
||||
if (annotationMetaData.isConcrete() && annotationMetaData.isIndependent())
|
||||
{
|
||||
@@ -851,7 +852,7 @@ public class PublicApiHttpClient
|
||||
Map<String, Object> attrs = annotationMetaData.getAnnotationAttributes(RelationshipResource.class.getName());
|
||||
String relationshipCollectionName = (String) attrs.get("name");
|
||||
Class<?> entityResource = (Class<?>) attrs.get("entityResource");
|
||||
|
||||
|
||||
String entityCollectionName = getEntityCollectionInfo(entityResource.getCanonicalName());
|
||||
|
||||
Pair<String, String> ret = new Pair<String, String>(entityCollectionName, relationshipCollectionName);
|
||||
@@ -866,15 +867,15 @@ public class PublicApiHttpClient
|
||||
{
|
||||
throw new AlfrescoRuntimeException("");
|
||||
}
|
||||
}
|
||||
|
||||
private String getEntityCollectionInfo(Class<?> resourceClass) throws IOException
|
||||
{
|
||||
}
|
||||
|
||||
private String getEntityCollectionInfo(Class<?> resourceClass) throws IOException
|
||||
{
|
||||
return getEntityCollectionInfo(resourceClass.getCanonicalName());
|
||||
}
|
||||
|
||||
private String getEntityCollectionInfo(String className) throws IOException
|
||||
{
|
||||
}
|
||||
|
||||
private String getEntityCollectionInfo(String className) throws IOException
|
||||
{
|
||||
AnnotationMetadata annotationMetaData = getAnnotationMetadata(className);
|
||||
if (annotationMetaData.isConcrete() && annotationMetaData.isIndependent())
|
||||
{
|
||||
@@ -892,13 +893,13 @@ public class PublicApiHttpClient
|
||||
{
|
||||
throw new AlfrescoRuntimeException("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getUrl() throws UnsupportedEncodingException
|
||||
{
|
||||
return url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @author Jamal Kaabi-Mofrad
|
||||
@@ -1305,4 +1306,4 @@ public class PublicApiHttpClient
|
||||
return req;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user