/* * Copyright 2004-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.compass.core.test.id; import org.compass.core.CompassHits; import org.compass.core.CompassSession; import org.compass.core.CompassTransaction; import org.compass.core.Resource; import org.compass.core.mapping.CompassMapping; import org.compass.core.mapping.ResourcePropertyMapping; import org.compass.core.mapping.osem.ClassMapping; import org.compass.core.spi.InternalCompassSession; import org.compass.core.test.AbstractTestCase; /** * @author kimchy */ public class IdTests extends AbstractTestCase { protected String[] getMappings() { return new String[]{"id/id.cpm.xml"}; } public void testMultiSaveMultiId() { CompassSession session = openSession(); CompassMapping mapping = ((InternalCompassSession) session).getMapping(); ClassMapping firstMapping = (ClassMapping) mapping.getRootMappingByClass(MultipleId.class); ResourcePropertyMapping[] mappings = firstMapping.getResourcePropertyMappings(); assertEquals(3, mappings.length); CompassTransaction tr = session.beginTransaction(); MultipleId o = new MultipleId(); o.setId(new Long(1)); o.setId2("2"); o.setValue("test"); session.save(o); session.save(o); CompassHits results = session.find("mvalue:test"); assertEquals(1, results.getLength()); o = (MultipleId) results.data(0); assertEquals(new Long(1), o.getId()); assertEquals("2", o.getId2()); assertEquals("test", o.getValue()); tr.commit(); session.close(); } public void testMultiId() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); MultipleId o = new MultipleId(); o.setId(new Long(1)); o.setId2("2"); o.setValue("test"); MultipleId ref = o; session.save(o); CompassHits results = session.find("mvalue:test"); assertEquals(1, results.getLength()); o = (MultipleId) results.data(0); assertEquals(new Long(1), o.getId()); assertEquals("2", o.getId2()); assertEquals("test", o.getValue()); o = session.load(MultipleId.class, 1, "2"); assertEquals(new Long(1), o.getId()); assertEquals("2", o.getId2()); assertEquals("test", o.getValue()); o = session.load(MultipleId.class, o); assertEquals(new Long(1), o.getId()); assertEquals("2", o.getId2()); assertEquals("test", o.getValue()); session.delete(o); o = session.get(MultipleId.class, o); assertNull(o); tr.commit(); tr = session.beginTransaction(); o = session.get(MultipleId.class, ref); assertNull(o); tr.commit(); } public void testMultiIdDelete() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); MultipleId o = new MultipleId(); o.setId(new Long(1)); o.setId2("2"); o.setValue("test"); session.save(o); o = session.load(MultipleId.class, 1, "2"); assertEquals(new Long(1), o.getId()); assertEquals("2", o.getId2()); session.delete("multiple-id", 1, "2"); o = session.get(MultipleId.class, 1, "2"); assertNull(o); tr.commit(); session.close(); } public void testSingleId() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); SingleId o = new SingleId(); o.setId(new Long(1)); o.setValue("test"); session.save(o); CompassHits results = session.find("mvalue:test"); assertEquals(1, results.getLength()); o = (SingleId) results.data(0); assertEquals(new Long(1), o.getId()); assertEquals("test", o.getValue()); results = session.find("$/single-id/id:1"); assertEquals(1, results.getLength()); o = (SingleId) session.load("single-id", new Long(1)); assertEquals(new Long(1), o.getId()); assertEquals("test", o.getValue()); o = (SingleId) session.load("single-id", o); assertEquals(new Long(1), o.getId()); assertEquals("test", o.getValue()); SingleId notFound = (SingleId) session.get("single-id", new Long(2)); assertNull(notFound); Resource resource = session.loadResource("single-id", new Long(1)); assertEquals("test", resource.getProperty("mvalue").getStringValue()); results = session.find("mvalue:test"); assertEquals(1, results.getLength()); resource = results.resource(0); assertEquals("test", resource.getProperty("mvalue").getStringValue()); session.delete(o); o = (SingleId) session.get("single-id", o); assertNull(o); tr.commit(); } public void testSingleIdDelete() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); SingleId o = new SingleId(); o.setId(new Long(1)); o.setValue("test"); session.save(o); o = (SingleId) session.load("single-id", new Long(1)); assertEquals(new Long(1), o.getId()); // must delete with the alias here, since otherwise it won't be able to // find the mapping session.delete("single-id", new Long(1)); o = (SingleId) session.get("single-id", new Long(1)); assertNull(o); tr.commit(); session.close(); } public void testNullValue() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); SingleId o = new SingleId(); o.setId(new Long(1)); o.setValue(null); session.save(o); o = (SingleId) session.load("single-id", new Long(1)); assertEquals(new Long(1), o.getId()); assertNull(o.getValue()); tr.commit(); } public void testURIId() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); URIId o = new URIId(); o.setId("http://test/uri"); session.save(o); o = (URIId) session.load(URIId.class, "http://test/uri"); assertEquals("http://test/uri", o.getId()); o.setId("this is a long string"); session.save(o); o = (URIId) session.load(URIId.class, "this is a long string"); assertEquals("this is a long string", o.getId()); tr.commit(); } }