package net.java.webdav.jaxb; import java.util.HashSet; import java.util.Set; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import net.java.webdav.elements.Collection; import net.java.webdav.elements.Comment; import net.java.webdav.elements.CreationDate; import net.java.webdav.elements.Error; import net.java.webdav.elements.GetContentLength; import net.java.webdav.elements.GetContentType; import net.java.webdav.elements.GetLastModified; import net.java.webdav.elements.HRef; import net.java.webdav.elements.Location; import net.java.webdav.elements.LockEntry; import net.java.webdav.elements.LockScope; import net.java.webdav.elements.LockType; import net.java.webdav.elements.MultiStatus; import net.java.webdav.elements.Prop; import net.java.webdav.elements.PropStat; import net.java.webdav.elements.ResourceType; import net.java.webdav.elements.Response; import net.java.webdav.elements.ResponseDescription; import net.java.webdav.elements.Status; import net.java.webdav.elements.SupportedLock; import net.java.webdav.samples.elements.SampleProperty; @Provider public class WebDAVElementsProvider implements ContextResolver { private static Set> classes = new HashSet>(); private JAXBContext ctx; public WebDAVElementsProvider() { classes.add(CreationDate.class); classes.add(GetLastModified.class); classes.add(ResourceType.class); classes.add(Collection.class); classes.add(GetContentType.class); classes.add(GetContentLength.class); classes.add(SampleProperty.class); classes.add(Comment.class); classes.add(SupportedLock.class); classes.add(LockEntry.class); classes.add(LockType.class); classes.add(LockScope.class); classes.add(MultiStatus.class); classes.add(Response.class); classes.add(ResponseDescription.class); classes.add(HRef.class); classes.add(PropStat.class); classes.add(Prop.class); classes.add(Status.class); classes.add(Error.class); classes.add(Location.class); } @Override public JAXBContext getContext(Class clazz) { System.out.println(WebDAVElementsProvider.class.getName()+".getContext(..) - "+clazz); // if(ctx == null || !classes.contains(clazz)){ if(ctx == null){ System.out.println("getContext(..) - adding: "+clazz); try { ctx = JAXBContext.newInstance(classes.toArray(new Class[classes.size()])); } catch (JAXBException e) { // e.printStackTrace(); } } if(clazz.equals(MultiStatus.class)) return ctx; else return null; } }