/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.object;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.mysema.rdfbean.TEST;
import com.mysema.rdfbean.annotations.ClassMapping;
import com.mysema.rdfbean.annotations.Default;
import com.mysema.rdfbean.annotations.Id;
import com.mysema.rdfbean.annotations.Predicate;
import com.mysema.rdfbean.model.IDType;
import com.mysema.rdfbean.model.MiniRepository;
import com.mysema.rdfbean.model.RDF;
import com.mysema.rdfbean.model.STMT;
import com.mysema.rdfbean.model.UID;
public class AutowireTest {
@ClassMapping
public final static class DomainType<T> {
@Predicate(ns = RDF.NS, ln = "type")
Class<T> parametrizedClass;
@Id(IDType.URI)
String uri = TEST.NS + "domainType";
}
public static class Command {
@Default(ns = TEST.NS, ln = "domainType")
DomainType<DomainType<?>> domainType;
}
@Test
public void ClassReference() {
MiniRepository repository = new MiniRepository();
repository.add(
new STMT(new UID(TEST.NS, "domainType"), RDF.type, new UID(TEST.NS, "DomainType"))
);
Session session = SessionUtil.openSession(repository, DomainType.class);
Command command = new Command();
assertNull(command.domainType);
session.autowire(command);
assertNotNull(command.domainType);
assertNotNull(command.domainType.parametrizedClass);
assertTrue(DomainType.class.isAssignableFrom(command.domainType.parametrizedClass));
}
}