mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Moving to root below branch label
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2005 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
package org.alfresco.example.webservice;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.view.ImporterService;
|
||||
import org.alfresco.service.cmr.view.Location;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.service.transaction.TransactionService;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
import com.sun.corba.se.impl.orb.ParserTable.TestContactInfoListFactory;
|
||||
|
||||
public class WebServiceBootstrapSystemTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* NOTE: You need to set the location of the indexes and content store to be a non-realtive
|
||||
* location in the repository.properties file otherwise running this test here will not
|
||||
* populate the correct index and content store and the test won't work when running against
|
||||
* the repository
|
||||
*/
|
||||
|
||||
public static final String FOLDER_NAME = "test folder";
|
||||
public static final String CONTENT_NAME = "test content";
|
||||
|
||||
public static final String PROP_STORE_REF = "storeRef";
|
||||
public static final String PROP_ROOT_NODE_REF = "rootNodeRef";
|
||||
public static final String PROP_FOLDER_NODE_REF = "folderNodeRef";
|
||||
public static final String PROP_CONTENT_NODE_REF = "contentNodeRef";
|
||||
|
||||
private static final String TEMP_BOOTSTRAP_PROPERTIES = "./WebServiceTestBootstrap.properties";
|
||||
|
||||
private static final String TEST_CONTENT = "This is some test content. This is some test content.";
|
||||
|
||||
|
||||
/**
|
||||
* Runs the bootstrap and populates the property file with the infomration required for the tests
|
||||
*/
|
||||
public void testBootstrap()
|
||||
{
|
||||
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:alfresco/application-context.xml");
|
||||
|
||||
// Get the services
|
||||
TransactionService transactionService = (TransactionService)applicationContext.getBean("transactionComponent");
|
||||
AuthenticationComponent authenticationComponent = (AuthenticationComponent)applicationContext.getBean("authenticationComponent");
|
||||
NodeService nodeService = (NodeService)applicationContext.getBean("NodeService");
|
||||
ContentService contentService = (ContentService)applicationContext.getBean("contentService");
|
||||
ImporterService importerService = (ImporterService)applicationContext.getBean("importerComponent");
|
||||
|
||||
UserTransaction userTransaction = transactionService.getUserTransaction();
|
||||
authenticationComponent.setCurrentUser(authenticationComponent.getSystemUserName());
|
||||
try
|
||||
{
|
||||
|
||||
StoreRef storeRef = null;
|
||||
NodeRef rootNodeRef = null;
|
||||
NodeRef folderNodeRef = null;
|
||||
NodeRef testContent = null;
|
||||
|
||||
try
|
||||
{
|
||||
userTransaction.begin();
|
||||
|
||||
// Create the store
|
||||
storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.currentTimeMillis());
|
||||
rootNodeRef = rootNodeRef = nodeService.getRootNode(storeRef);
|
||||
|
||||
// Import the categories
|
||||
InputStream viewStream = getClass().getClassLoader().getResourceAsStream("alfresco/bootstrap/categories.xml");
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(viewStream));
|
||||
Location importLocation = new Location(storeRef);
|
||||
importLocation.setPath("/");
|
||||
importerService.importView(reader, importLocation, null, null);
|
||||
|
||||
// Folder properties
|
||||
Map<QName, Serializable> folderProps = new HashMap<QName, Serializable>(1);
|
||||
folderProps.put(ContentModel.PROP_NAME, FOLDER_NAME);
|
||||
|
||||
// Create a folder
|
||||
folderNodeRef = nodeService.createNode(
|
||||
rootNodeRef,
|
||||
ContentModel.ASSOC_CHILDREN,
|
||||
ContentModel.ASSOC_CHILDREN,
|
||||
ContentModel.TYPE_FOLDER,
|
||||
folderProps).getChildRef();
|
||||
|
||||
Map<QName, Serializable> contentProps = new HashMap<QName, Serializable>(3);
|
||||
contentProps.put(ContentModel.PROP_NAME, CONTENT_NAME);
|
||||
|
||||
// Create some test content
|
||||
testContent = nodeService.createNode(
|
||||
rootNodeRef,
|
||||
ContentModel.ASSOC_CHILDREN,
|
||||
ContentModel.ASSOC_CHILDREN,
|
||||
ContentModel.TYPE_CONTENT,
|
||||
contentProps).getChildRef();
|
||||
ContentWriter writer = contentService.getWriter(testContent, ContentModel.PROP_CONTENT, true);
|
||||
writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
|
||||
writer.setEncoding("UTF-8");
|
||||
writer.putContent(TEST_CONTENT);
|
||||
|
||||
// Add the translatable aspect to the test content
|
||||
nodeService.addAspect(testContent, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "translatable"), null);
|
||||
|
||||
// Create content to be the translation of the translatable content
|
||||
NodeRef testContent2 = nodeService.createNode(
|
||||
rootNodeRef,
|
||||
ContentModel.ASSOC_CHILDREN,
|
||||
ContentModel.ASSOC_CHILDREN,
|
||||
ContentModel.TYPE_CONTENT,
|
||||
contentProps).getChildRef();
|
||||
ContentWriter writer2 = contentService.getWriter(testContent2, ContentModel.PROP_CONTENT, true);
|
||||
writer2.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
|
||||
writer2.setEncoding("UTF-8");
|
||||
writer2.putContent(TEST_CONTENT);
|
||||
|
||||
// Add the association from the master content to the translated content
|
||||
nodeService.createAssociation(testContent, testContent2, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "translations"));
|
||||
|
||||
userTransaction.commit();
|
||||
}
|
||||
catch(Throwable e)
|
||||
{
|
||||
// rollback the transaction
|
||||
try { if (userTransaction != null) {userTransaction.rollback();} } catch (Exception ex) {}
|
||||
try {authenticationComponent.clearCurrentSecurityContext(); } catch (Exception ex) {}
|
||||
throw new AlfrescoRuntimeException("Bootstrap failed", e);
|
||||
}
|
||||
|
||||
Properties properties = new Properties();
|
||||
properties.put(PROP_STORE_REF, storeRef.toString());
|
||||
properties.put(PROP_ROOT_NODE_REF, rootNodeRef.toString());
|
||||
properties.put(PROP_FOLDER_NODE_REF, folderNodeRef.toString());
|
||||
properties.put(PROP_CONTENT_NODE_REF, testContent.toString());
|
||||
|
||||
try
|
||||
{
|
||||
OutputStream outputStream = new FileOutputStream(TEMP_BOOTSTRAP_PROPERTIES);
|
||||
properties.store(outputStream, "Web service node store details");
|
||||
outputStream.flush();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
fail("Unable to store bootstrap details.");
|
||||
}
|
||||
|
||||
//System.out.println(NodeStoreInspector.dumpNodeStore(nodeService, storeRef));
|
||||
}
|
||||
finally
|
||||
{
|
||||
authenticationComponent.clearCurrentSecurityContext();
|
||||
}
|
||||
}
|
||||
|
||||
public static Properties getBootstrapProperties()
|
||||
{
|
||||
Properties properties = new Properties();
|
||||
try
|
||||
{
|
||||
InputStream inputStream = new FileInputStream(TEMP_BOOTSTRAP_PROPERTIES);
|
||||
properties.load(inputStream);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
fail("Unable to load test bootstrap details. Try running WebServiceBootstrapSystem test, then re-start container and try again.");
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user