package org.argeo.cms.jcr.gcr;
+import java.util.Arrays;
+import java.util.Iterator;
+
import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.xml.namespace.NamespaceContext;
import org.argeo.api.gcr.Content;
import org.argeo.api.gcr.spi.ContentProvider;
+import org.argeo.api.gcr.spi.ProvidedSession;
import org.argeo.cms.jcr.CmsJcrUtils;
+import org.argeo.jcr.JcrException;
+import org.argeo.jcr.JcrUtils;
-public class JcrContentProvider implements ContentProvider {
+public class JcrContentProvider implements ContentProvider, NamespaceContext {
private Repository jcrRepository;
- private Session jcrSession;
+ private Session adminSession;
public void init() {
- jcrSession = CmsJcrUtils.openDataAdminSession(jcrRepository, null);
+ adminSession = CmsJcrUtils.openDataAdminSession(jcrRepository, null);
+ }
+
+ public void destroy() {
+ JcrUtils.logoutQuietly(adminSession);
}
public void setJcrRepository(Repository jcrRepository) {
}
@Override
- public Content get() {
+ public Content get(ProvidedSession session, String mountPath, String relativePath) {
+ // TODO Auto-generated method stub
return null;
}
+ /*
+ * NAMESPACE CONTEXT
+ */
@Override
- public Content get(String relativePath) {
- // TODO Auto-generated method stub
- return null;
+ public String getNamespaceURI(String prefix) {
+ try {
+ return adminSession.getNamespaceURI(prefix);
+ } catch (RepositoryException e) {
+ throw new JcrException(e);
+ }
+ }
+
+ @Override
+ public String getPrefix(String namespaceURI) {
+ try {
+ return adminSession.getNamespacePrefix(namespaceURI);
+ } catch (RepositoryException e) {
+ throw new JcrException(e);
+ }
+ }
+
+ @Override
+ public Iterator<String> getPrefixes(String namespaceURI) {
+ try {
+ return Arrays.asList(adminSession.getNamespacePrefix(namespaceURI)).iterator();
+ } catch (RepositoryException e) {
+ throw new JcrException(e);
+ }
}
-
}