public void testResourceAccessor() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/test1")); Supplier supplier = getModel1Factory().createSupplier(); supplier.setName("Stepper"); resource.getContents().add(supplier); URI supplierTempURI = EcoreUtil.getURI(supplier); // Retrieving supplier from URI before commit EObject supplier1 = transaction.getResourceSet().getEObject(supplierTempURI, true); assertEquals(supplier, CDOUtil.getEObject(supplier1)); transaction.commit(); URI supplierURI = EcoreUtil.getURI(supplier); // Retrieving supplier from URI after commit EObject supplierFromURI = transaction.getResourceSet().getEObject(supplierURI, true); assertEquals(supplier, CDOUtil.getEObject(supplierFromURI)); EObject supplierAfterCommit2 = transaction.getResourceSet().getEObject(supplierTempURI, true); if (session.getRepositoryInfo().getIDGenerationLocation() == IDGenerationLocation.STORE) { assertEquals(null, supplierAfterCommit2); } else { assertEquals(supplier, supplierAfterCommit2); } }
/** bug 226317 */ public void testMultipleInheritence() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/test1")); OrderAddress orderAddress = getModel1Factory().createOrderAddress(); resource.getContents().add(orderAddress); assertEquals( getModel1Package().getAddress_City().getFeatureID(), getModel1Package().getOrderDetail_Price().getFeatureID()); orderAddress.setCity("ALLO"); orderAddress.setPrice(2.8f); orderAddress.setTestAttribute(true); assertEquals(2.8f, orderAddress.getPrice()); assertEquals("ALLO", orderAddress.getCity()); OrderDetail orderDetail = getModel1Factory().createOrderDetail(); resource.getContents().add(orderDetail); orderDetail.setPrice(3f); transaction.commit(); orderAddress.setCity("ALLO"); transaction.commit(); session.close(); session = openSession(); msg("Opening transaction"); transaction = session.openTransaction(); orderAddress = (OrderAddress) CDOUtil.getEObject( transaction.getObject(CDOUtil.getCDOObject(orderAddress).cdoID(), true)); assertEquals(2.8f, orderAddress.getPrice()); assertEquals("ALLO", orderAddress.getCity()); orderAddress.setPrice(2.8f); transaction.commit(); session.close(); session = openSession(); transaction = session.openTransaction(); orderAddress = (OrderAddress) CDOUtil.getEObject( transaction.getObject(CDOUtil.getCDOObject(orderAddress).cdoID(), true)); assertEquals(2.8f, orderAddress.getPrice()); assertEquals("ALLO", orderAddress.getCity()); orderAddress.setPrice(2.8f); session.close(); }
public void testTemporaryObject() throws Exception { msg("Opening session"); final CDOSession session = openSession(); // ************************************************************* // msg("Creating category1"); final Category category1A = getModel1Factory().createCategory(); category1A.setName("category1"); msg("Creating company"); final Company companyA = getModel1Factory().createCompany(); msg("Adding categories"); companyA.getCategories().add(category1A); msg("Opening transaction"); final CDOTransaction transaction = session.openTransaction(); transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); msg("Creating resource"); final CDOResource resourceA = transaction.createResource(getResourcePath("/test1")); msg("Adding company"); resourceA.getContents().add(companyA); msg("Committing"); final TestAdapter adapter = new TestAdapter(); category1A.eAdapters().add(adapter); transaction.commit(); // ************************************************************* // msg("Opening view"); final CDOSession session2 = openSession(); final CDOTransaction transaction2 = session2.openTransaction(); transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); final Category category1B = (Category) CDOUtil.getEObject( transaction2.getObject(CDOUtil.getCDOObject(category1A).cdoID(), true)); msg("Changing name"); category1B.setName("CHANGED NAME"); assertEquals(0, adapter.getNotifications().length); msg("Committing"); transaction2.commit(); msg("Checking after commit"); new PollingTimeOuter() { @Override protected boolean successful() { return adapter.getNotifications().length == 1; } }.assertNoTimeOut(); }
public void testSameSession_WithoutPolicy() throws Exception { final Category category1A = getModel1Factory().createCategory(); category1A.setName("category1"); final Company companyA = getModel1Factory().createCompany(); companyA.getCategories().add(category1A); final CDOSession session = openSession(); // ************************************************************* // final CDOTransaction transaction = session.openTransaction(); final CDOResource resourceA = transaction.createResource(getResourcePath("/test1")); resourceA.getContents().add(companyA); transaction.commit(); final TestAdapter adapter = new TestAdapter(); category1A.eAdapters().add(adapter); // ************************************************************* // final CDOTransaction transaction2 = session.openTransaction(); final Category category1B = (Category) CDOUtil.getEObject( transaction2.getObject(CDOUtil.getCDOObject(category1A).cdoID(), true)); category1B.setName("CHANGED NAME"); assertEquals(0, adapter.getNotifications().length); transaction2.commit(); new PollingTimeOuter() { @Override protected boolean successful() { // Commit notifications from the same session always have full deltas Notification[] notifications = adapter.getNotifications(); return notifications.length == 1; } }.assertNoTimeOut(); // Adding policy transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); adapter.clearNotifications(); category1B.setName("CHANGED NAME_VERSION 2"); assertEquals(0, adapter.getNotifications().length); transaction2.commit(); new PollingTimeOuter() { @Override protected boolean successful() { // Commit notifications from the same session always have full deltas Notification[] notifications = adapter.getNotifications(); return notifications.length == 1; } }.assertNoTimeOut(); }
public void testSeparateSession() throws Exception { Category category1A = getModel1Factory().createCategory(); category1A.setName("category1"); Company companyA = getModel1Factory().createCompany(); companyA.getCategories().add(category1A); CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); CDOResource resourceA = transaction.createResource(getResourcePath("/test1")); resourceA.getContents().add(companyA); transaction.commit(); final TestAdapter adapter = new TestAdapter(); category1A.eAdapters().add(adapter); // ************************************************************* // CDOSession session2 = openSession(); CDOTransaction transaction2 = session2.openTransaction(); Category category1B = (Category) CDOUtil.getEObject( transaction2.getObject(CDOUtil.getCDOObject(category1A).cdoID(), true)); category1B.setName("CHANGED NAME"); assertEquals(0, adapter.getNotifications().length); transaction2.commit(); new PollingTimeOuter() { @Override protected boolean successful() { // Change subscription leads to delta nnotification Notification[] notifications = adapter.getNotifications(); return notifications.length == 1; } }.assertNoTimeOut(); // Removing policy transaction.options().removeChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); adapter.clearNotifications(); category1B.setName("CHANGED NAME_VERSION 2"); assertEquals(0, adapter.getNotifications().length); transaction2.commit(); new PollingTimeOuter() { @Override protected boolean successful() { // No change subscription, other session ==> no delta notification Notification[] notifications = adapter.getNotifications(); return notifications.length != 0; } }.assertTimeOut(); }
public List<CDORevisionDelta> getDeltas(CDOObject notifier) { List<CDORevisionDelta> list = deltas.get(CDOUtil.getEObject(notifier)); if (list == null) { return Collections.emptyList(); } return list; }
public void testRemoveContained() throws Exception { List<Category> categories = new ArrayList<Category>(); categories.add(getModel1Factory().createCategory()); Company company = getModel1Factory().createCompany(); company.getCategories().add(getModel1Factory().createCategory()); company.getCategories().add(getModel1Factory().createCategory()); company.getCategories().add(getModel1Factory().createCategory()); company.getCategories().addAll(categories); company.getCategories().add(getModel1Factory().createCategory()); company.getCategories().add(getModel1Factory().createCategory()); company.getCategories().add(getModel1Factory().createCategory()); CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/test1")); resource.getContents().add(company); transaction.commit(); CDOSession session2 = openSession(); CDOView view = session2.openView(); view.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); CDOResource resource2 = view.getResource(getResourcePath("/test1")); Company company2 = (Company) resource2.getContents().get(0); Object[] strongRefs = company2.getCategories().toArray(); // Keep those in memory msg(strongRefs); final TestAdapter adapter = new TestAdapter(); company2.eAdapters().add(adapter); company.getCategories().removeAll(categories); transaction.commit(); final Object[] oldValue = {null}; new PollingTimeOuter() { @Override protected boolean successful() { for (Notification notification : adapter.getNotifications()) { if (notification.getEventType() == Notification.REMOVE && notification.getFeature() == getModel1Package().getCompany_Categories()) { oldValue[0] = notification.getOldValue(); return true; } } return false; } }.assertNoTimeOut(); assertInstanceOf(Category.class, CDOUtil.getEObject((EObject) oldValue[0])); }
public void testRemoveXRef() throws Exception { List<OrderDetail> details = new ArrayList<OrderDetail>(); details.add(getModel1Factory().createOrderDetail()); details.add(getModel1Factory().createOrderDetail()); details.add(getModel1Factory().createOrderDetail()); details.add(getModel1Factory().createOrderDetail()); details.add(getModel1Factory().createOrderDetail()); details.add(getModel1Factory().createOrderDetail()); details.add(getModel1Factory().createOrderDetail()); Product1 product = getModel1Factory().createProduct1(); product.setName("test1"); product.getOrderDetails().addAll(details); CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/test1")); resource.getContents().add(product); resource.getContents().addAll(details); transaction.commit(); CDOSession session2 = openSession(); CDOView view = session2.openView(); view.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); CDOResource resource2 = view.getResource(getResourcePath("/test1")); Product1 product2 = (Product1) resource2.getContents().get(0); Object[] strongRefs = product2.getOrderDetails().toArray(); // Keep those in memory msg(strongRefs); final TestAdapter adapter = new TestAdapter(); product2.eAdapters().add(adapter); details.remove(0); details.remove(0); details.remove(0); details.remove(1); details.remove(1); details.remove(1); product.getOrderDetails().removeAll(details); transaction.commit(); final Object[] oldValue = {null}; new PollingTimeOuter() { @Override protected boolean successful() { for (Notification notification : adapter.getNotifications()) { if (notification.getEventType() == Notification.REMOVE && notification.getFeature() == getModel1Package().getProduct1_OrderDetails()) { oldValue[0] = notification.getOldValue(); return true; } } return false; } }.assertNoTimeOut(); assertInstanceOf(OrderDetail.class, CDOUtil.getEObject((EObject) oldValue[0])); }
public void testNotificationChain() throws Exception { msg("Opening session"); final CDOSession session = openSession(); // ************************************************************* // msg("Creating category1"); final Category category1A = getModel1Factory().createCategory(); category1A.setName("category1"); msg("Creating company"); final Company companyA = getModel1Factory().createCompany(); msg("Adding categories"); companyA.getCategories().add(category1A); msg("Opening transaction"); final CDOTransaction transaction = session.openTransaction(); transaction.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL); msg("Creating resource"); final CDOResource resourceA = transaction.createResource(getResourcePath("/test1")); msg("Adding company"); resourceA.getContents().add(companyA); msg("Committing"); transaction.commit(); final TestAdapter adapter = new TestAdapter(); companyA.eAdapters().add(adapter); // ************************************************************* // msg("Opening view"); final CDOSession session2 = openSession(); final CDOTransaction transaction2 = session2.openTransaction(); final Company company1B = (Company) CDOUtil.getEObject( transaction2.getObject(CDOUtil.getCDOObject(companyA).cdoID(), true)); msg("Changing name"); company1B.setName("TEST1"); company1B.setCity("CITY1"); final Category category2B = getModel1Factory().createCategory(); company1B.getCategories().add(category2B); assertEquals(0, adapter.getNotifications().length); msg("Committing"); transaction2.commit(); msg("Checking after commit"); new PollingTimeOuter() { @Override protected boolean successful() { return adapter.getNotifications().length == 3; } }.assertNoTimeOut(); int count = 0; for (Notification notification : adapter.getNotifications()) { CDODeltaNotification cdoNotification = (CDODeltaNotification) notification; if (adapter.getNotifications().length - 1 == count) { assertEquals(false, cdoNotification.hasNext()); } else { assertEquals(true, cdoNotification.hasNext()); } if (notification.getFeature() == getModel1Package().getCategory_Name()) { assertEquals(Notification.SET, notification.getEventType()); assertEquals("TEST1", notification.getNewStringValue()); } else if (notification.getFeature() == getModel1Package().getAddress_City()) { assertEquals(Notification.SET, notification.getEventType()); assertEquals("CITY1", notification.getNewStringValue()); } else if (notification.getFeature() == getModel1Package().getCompany_Categories()) { assertEquals(Notification.ADD, notification.getEventType()); assertEquals(1, notification.getPosition()); assertEquals( transaction.getObject(CDOUtil.getCDOObject(category2B).cdoID(), true), notification.getNewValue()); } else { assertEquals(false, false); } count++; } }
@Override protected final void doRun( CDOTransaction transaction, CDOObject parent, IProgressMonitor monitor) throws Exception { ISelection selection = new StructuredSelection(CDOUtil.getEObject(parent)); newObject = doRun(transaction, parent, selection); }
@Override public void apply() { InternalEObject object = (InternalEObject) CDOUtil.getEObject(this.object); store.setContainer(object, null, object.eInternalContainer(), object.eContainerFeatureID()); }