package org.jboss.jca.adapters.sap.integration; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.Map; import javax.resource.cci.ConnectionFactory; import javax.resource.spi.ManagedConnectionFactory; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl; import org.jboss.jca.adapters.sap.cci.CciPackage; import org.jboss.jca.adapters.sap.cci.MappedRecord; import org.jboss.jca.adapters.sap.cci.RecordFactory; import org.jboss.jca.adapters.sap.cci.impl.CciPackageImpl; import org.jboss.jca.adapters.sap.spi.NonManagedEnvironmentAdmin; import org.junit.After; import org.junit.Before; import org.junit.Test; public class ITestDynamicPackage { private static final String PACKAGE_URL = CciPackage.JBOSS_SAP_URI_PREFIX + "NPL/BAPI_FLCUST_GETLIST"; private static final String PACKAGE_MODEL_FILE_URL = "file:///tmp/BAPI_FLCUST_GETLIST.ecore"; private static final String INPUT_RECORD_NAME = "INPUT_RECORD"; private static final String INPUT_RECORD_SHORT_DESCRIPTION = "Test Record Description"; private static final String INPUT_RECORD_FILE_URL = "file:///tmp/BAPI_FLCUST_GETLIST.INPUT_RECORD.ecore"; private NonManagedEnvironmentAdmin admin; @Before public void setUp() throws Exception { // Given admin = NonManagedEnvironmentAdmin.INSTANCE; admin.deployResourceAdapter(null); } @After public void tearDown() throws Exception { admin.undeployResourceAdapter(); } @Test public void testCreateStoreAndLoadOfDynamicResources() throws Exception { // // Given // // Create connection and get record factory. Map<String, String> config = new HashMap<String, String>(); config.put("ashost", "nplhost"); config.put("sysnr", "42"); config.put("client", "001"); config.put("user", "developer"); config.put("passwd", "ch4ngeme"); config.put("lang", "en"); ManagedConnectionFactory managedConnectionFactory = admin.createManagedConnectionFactory(config); ConnectionFactory connectionFactory = (ConnectionFactory) managedConnectionFactory.createConnectionFactory(); RecordFactory recordFactory = (RecordFactory) connectionFactory.getRecordFactory(); // // When // // Get the package model for flight customer get list call String nsURI = PACKAGE_URL; EPackage dPackage = recordFactory.getPackageRegistry().getEPackage(nsURI); // Save the package model ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl()); URI packageModelResourceURI = URI.createURI(PACKAGE_MODEL_FILE_URL); Resource resource = resourceSet.createResource(packageModelResourceURI); resource.getContents().add(CciPackageImpl.eINSTANCE); resource.getContents().add(dPackage); resource.save(null); // Create and save input record MappedRecord mappedRecord = recordFactory.createMappedRecord("BAPI_FLCUST_GETLIST.INPUT_RECORD"); mappedRecord.setRecordShortDescription(INPUT_RECORD_SHORT_DESCRIPTION); URI inputRecordResourceURI = URI.createURI(INPUT_RECORD_FILE_URL); resource = resourceSet.createResource(inputRecordResourceURI); resource.getContents().add(mappedRecord); resource.save(null); // Load saved input record resourceSet = new ResourceSetImpl(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl()); resourceSet.setPackageRegistry(recordFactory.getPackageRegistry()); resource = resourceSet.getResource(inputRecordResourceURI, true); resource.load(null); MappedRecord inputRecord = (MappedRecord) resource.getContents().get(0); // // THEN // assertEquals("Deserialized record name does not match original", INPUT_RECORD_NAME, inputRecord.getRecordName()); assertEquals("Deserialized record short description does not match original", INPUT_RECORD_SHORT_DESCRIPTION, inputRecord.getRecordShortDescription()); } }