jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gaetano Sferra <gsfe...@imnet.it>
Subject Jackrabbit and OCM annotations troubles
Date Tue, 30 Dec 2008 09:57:52 GMT
Hi,

I'm facing a lot of difficulties using Jackrabbit 1.4 and hope someone 
will help me.
1 - Instantiating a TransientRepository using JDK 1.5 throws a 
"java.lang.UnsupportedClassVersionError: Bad version number in .class 
file" (Jackrabbit should support JDK 1.4 at least, isn't it?)

2 - Define a simple node class using @Node annotation without specify 
"discriminator=false" will result in a "Unknown mixin type 
ocm:discriminator for mapped class class Type; nested exception is 
javax.jcr.nodetype.NoSuchNodeTypeException: 
{http://jackrabbit.apache.org/ocm}discriminator"; eg:

@Node
public class Type {
    @Field(path=true) private path;
    @Field(uuid=true) private uuid;
    @Field private String description;
    // Getter and setter follows..
}

3 - What's wrong in following code? (throws "Node type: nt:unstructured 
has no descriptor" on getObject(String)):

@Node(discriminator=false, jcrSuperTypes="nt:base", 
jcrMixinTypes="mix:referenceable")
public class Type {
  @Field(path=true) private String path;
  @Field(uuid=true) private String uuid;
  @Field private String description;
   // Getter and setter follows..
}

@Node(discriminator=false, jcrMixinTypes="mix:versionable")
public class Element {
  @Field(path=true) private String path;
  @Bean(converter=ReferenceBeanConverterImpl.class) private Type type;
   // Getter and setter follows..
}

public class Main {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(Main.class.getName());
        ArrayList<Class> classes = null;
        ObjectContentManager ocm = null;
        Mapper mapper = null;
        Session session = null;
        Repository repository = null;

        try {
            repository = new TransientRepository();
            session = repository.login(new SimpleCredentials("user", 
"pass".toCharArray()));
            try {
                
session.getWorkspace().getNamespaceRegistry().registerNamespace("ocm", 
"http://jackrabbit.apache.org/ocm");
            } catch (NamespaceException nsce) {
                logger.info(nsce.getMessage());
            }

            classes = new ArrayList<Class>();
            classes.add(Type.class);
            classes.add(Element.class);
     
            mapper = new AnnotationMapperImpl(classes);
            ocm = new ObjectContentManagerImpl(session, mapper);

            Type type = new Type();
            type.setPath("/primary");
            type.setDescription("My primary element type");
            ocm.insert(type);
            ocm.save();
     
            Element element = new Element();
            element.setPath("/first-element");
            element.setType((Type) ocm.getObject("/primary"));
            ocm.insert(element);
            ocm.save();
        } catch (Exception e) {
            logger.severe(e.getMessage());
        }
    }
}

I'm searching on this ML and looking at test code but everything seems 
so easy and clean that I really not able to find something wrong.
Please help, thank you.
--
GaS

Mime
View raw message