package com.ebmwebsourcing.jbi.core.metamodel.tests;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Collections;
import junit.framework.Assert;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.junit.Test;
import com.ebmwebsourcing.petals.services.cdk.cdk5.Cdk5Package;
import com.ebmwebsourcing.petals.jbi.editor.form.extensibility.InitializeModelExtensionCommand;
import com.ebmwebsourcing.petals.jbi.filetransfer.model.filetransfer.CopyMode;
import com.ebmwebsourcing.petals.jbi.filetransfer.model.filetransfer.FileTransferPackage;
import com.ebmwebsourcing.petals.jbi.filetransfer.model.filetransfer.TransferMode;
import com.sun.java.xml.ns.jbi.Consumes;
import com.sun.java.xml.ns.jbi.DocumentRoot;
import com.sun.java.xml.ns.jbi.Provides;
public class TestJBI_EMF {
@Test
public void testCanReadAndSetCDK() throws Exception {
ResourceSet set = new ResourceSetImpl();
Resource resource = set.createResource(URI.createURI(getClass().getResource("jbi-cdk5.xml").toString()));
resource.load(set.getLoadOptions());
DocumentRoot root = (DocumentRoot) resource.getContents().get(0);
Provides provide = root.getJbi().getServices().getProvides().get(0);
InitializeModelExtensionCommand command = new InitializeModelExtensionCommand(Cdk5Package.eINSTANCE, provide);
command.prepare();
command.execute();
Assert.assertEquals("AddOrderRemote.wsdl", provide.eGet(Cdk5Package.Literals.CDK5_PROVIDES__WSDL));
provide.eSet(Cdk5Package.Literals.CDK5_PROVIDES__WSDL, "testURL");
Assert.assertEquals("testURL", provide.eGet(Cdk5Package.Literals.CDK5_PROVIDES__WSDL));
assertJbiFileContainsLine(set, root, "<petalsCDK:wsdl>testURL</petalsCDK:wsdl>");
}
@Test
public void testCanReadAndSetFileTransferProvides() throws Exception {
ResourceSet set = new ResourceSetImpl();
Resource resource = set.createResource(URI.createURI(getClass().getResource("jbi-filetransfer-provides.xml").toString()));
resource.load(set.getLoadOptions());
DocumentRoot root = (DocumentRoot) resource.getContents().get(0);
Provides provide = root.getJbi().getServices().getProvides().get(0);
InitializeModelExtensionCommand command = new InitializeModelExtensionCommand(FileTransferPackage.eINSTANCE, provide);
command.prepare();
command.execute();
Assert.assertEquals(CopyMode.CONTENT_AND_ATTACHMENTS, provide.eGet(FileTransferPackage.Literals.FILE_TRANSFER_PROVIDES__COPY_MODE));
provide.eSet(FileTransferPackage.Literals.FILE_TRANSFER_PROVIDES__COPY_MODE, CopyMode.CONTENT_ONLY);
Assert.assertEquals(CopyMode.CONTENT_ONLY, provide.eGet(FileTransferPackage.Literals.FILE_TRANSFER_PROVIDES__COPY_MODE));
String expectedLine = "<filetransfer:copy-mode>content-only</filetransfer:copy-mode>";
assertJbiFileContainsLine(set, root, expectedLine);
}
@Test
public void testCanReadAndSetFileTransferConsumes() throws Exception {
ResourceSet set = new ResourceSetImpl();
Resource resource = set.createResource(URI.createURI(getClass().getResource("jbi-filetransfer-consumes.xml").toString()));
resource.load(set.getLoadOptions());
DocumentRoot root = (DocumentRoot) resource.getContents().get(0);
Consumes consume = root.getJbi().getServices().getConsumes().get(0);
InitializeModelExtensionCommand command = new InitializeModelExtensionCommand(FileTransferPackage.eINSTANCE, consume);
command.prepare();
command.execute();
Assert.assertEquals(TransferMode.CONTENT, consume.eGet(FileTransferPackage.Literals.FILE_TRANSFER_CONSUMES__TRANSFER_MODE));
consume.eSet(FileTransferPackage.Literals.FILE_TRANSFER_CONSUMES__TRANSFER_MODE, TransferMode.ATTACHMENTS);
Assert.assertEquals(TransferMode.ATTACHMENTS, consume.eGet(FileTransferPackage.Literals.FILE_TRANSFER_CONSUMES__TRANSFER_MODE));
String expectedLine = "<filetransfer:transfer-mode>attachments</filetransfer:transfer-mode>";
assertJbiFileContainsLine(set, root, expectedLine);
}
private void assertJbiFileContainsLine(ResourceSet set, DocumentRoot root, String expectedLine) throws IOException, FileNotFoundException {
File tmpFile = File.createTempFile("jbi", ".xml");
tmpFile.deleteOnExit();
Resource outResource = set.createResource(URI.createFileURI(tmpFile.getAbsolutePath()));
outResource.getContents().add(root);
outResource.save(Collections.EMPTY_MAP);
BufferedReader reader = new BufferedReader(new FileReader(tmpFile));
boolean found = false;
String line = null;
while (!found && (line = reader.readLine()) != null) {
found = line.contains(expectedLine);
}
reader.close();
Assert.assertTrue(found);
}
}