svn commit: r1336592 - /jackrabbit/oak/trunk/oak-core/pom.xml
Author: mduerig Date: Thu May 10 11:14:38 2012 New Revision: 1336592 URL: http://svn.apache.org/viewvc?rev=1336592view=rev Log: OAK-94: oak-it/osgi fails due to required packages not being exported Add missing packages to Export-Package directive Modified: jackrabbit/oak/trunk/oak-core/pom.xml Modified: jackrabbit/oak/trunk/oak-core/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1336592r1=1336591r2=1336592view=diff == --- jackrabbit/oak/trunk/oak-core/pom.xml (original) +++ jackrabbit/oak/trunk/oak-core/pom.xml Thu May 10 11:14:38 2012 @@ -43,7 +43,9 @@ org.apache.jackrabbit.oak.core, org.apache.jackrabbit.oak.util, org.apache.jackrabbit.oak.namepath, - org.apache.jackrabbit.oak.plugins.name + org.apache.jackrabbit.oak.plugins.name, + org.apache.jackrabbit.oak.security.principal, + org.apache.jackrabbit.oak.spi.security.principal /Export-Package Bundle-Activator org.apache.jackrabbit.oak.osgi.Activator
svn commit: r1336628 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceMappings.java
Author: reschke Date: Thu May 10 12:02:13 2012 New Revision: 1336628 URL: http://svn.apache.org/viewvc?rev=1336628view=rev Log: remove unused import Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceMappings.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceMappings.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceMappings.java?rev=1336628r1=1336627r2=1336628view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceMappings.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceMappings.java Thu May 10 12:02:13 2012 @@ -16,21 +16,21 @@ */ package org.apache.jackrabbit.oak.plugins.name; -import org.apache.jackrabbit.JcrConstants; -import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.api.ContentSession; -import org.apache.jackrabbit.oak.api.PropertyState; -import org.apache.jackrabbit.oak.api.Root; -import org.apache.jackrabbit.oak.api.Tree; - -import javax.jcr.PropertyType; -import javax.jcr.RepositoryException; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import javax.jcr.PropertyType; +import javax.jcr.RepositoryException; + +import org.apache.jackrabbit.oak.api.CommitFailedException; +import org.apache.jackrabbit.oak.api.ContentSession; +import org.apache.jackrabbit.oak.api.PropertyState; +import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.api.Tree; + /** * Prove of concept implementation for OAK-61. *
svn commit: r1336712 - /jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/ArrayUtils.java
Author: mduerig Date: Thu May 10 14:17:28 2012 New Revision: 1336712 URL: http://svn.apache.org/viewvc?rev=1336712view=rev Log: remove unused/redundant method Modified: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/ArrayUtils.java Modified: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/ArrayUtils.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/ArrayUtils.java?rev=1336712r1=1336711r2=1336712view=diff == --- jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/ArrayUtils.java (original) +++ jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/ArrayUtils.java Thu May 10 14:17:28 2012 @@ -225,17 +225,4 @@ public class ArrayUtils { return new HashSetT(java.util.Arrays.asList(elements)); } -// TODO duplicate of copyArrayAdd? -/** - * Create a new array of the same type with an additional element added. - * @param array - * @param value - * @param T - * @return array of {@code array.length + 1} with {@code value} as its last element. - */ -public static T T[] add(T[] array, T value) { -T[] copy = java.util.Arrays.copyOf(array, array.length + 1); -copy[array.length] = value; -return copy; -} }
svn commit: r1336714 - in /jackrabbit/oak/trunk: oak-it/jcr/pom.xml oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java
Author: reschke Date: Thu May 10 14:21:41 2012 New Revision: 1336714 URL: http://svn.apache.org/viewvc?rev=1336714view=rev Log: OAK-16: implement random access in BinaryImpl Modified: jackrabbit/oak/trunk/oak-it/jcr/pom.xml jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java Modified: jackrabbit/oak/trunk/oak-it/jcr/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/jcr/pom.xml?rev=1336714r1=1336713r2=1336714view=diff == --- jackrabbit/oak/trunk/oak-it/jcr/pom.xml (original) +++ jackrabbit/oak/trunk/oak-it/jcr/pom.xml Thu May 10 14:21:41 2012 @@ -46,7 +46,6 @@ value org.apache.jackrabbit.test.api.NodeReadMethodsTest#testGetPrimaryItem org.apache.jackrabbit.test.api.NodeReadMethodsTest#testGetUUID -org.apache.jackrabbit.test.api.BinaryPropertyTest#testRandomAccess org.apache.jackrabbit.test.api.SessionReadMethodsTest#testGetNodeByUUIDFailure org.apache.jackrabbit.test.api.SessionReadMethodsTest#testGetNodeByUUID org.apache.jackrabbit.test.api.PathTest#testGetItem Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java?rev=1336714r1=1336713r2=1336714view=diff == --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/BinaryImpl.java Thu May 10 14:21:41 2012 @@ -55,8 +55,15 @@ class BinaryImpl implements Binary { @Override public int read(byte[] b, long position) throws IOException, RepositoryException { -// TODO -throw new UnsupportedOperationException(implementation missing); +InputStream stream = value.unwrap().getNewStream(); +try { +if (position != stream.skip(position)) { +throw new IOException(Can't skip to position + position); +} +return stream.read(b); +} finally { +stream.close(); +} } @Override
svn commit: r1336717 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/api/ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ oak-core/src/main/java/org/apache/jackrab
Author: thomasm Date: Thu May 10 14:30:40 2012 New Revision: 1336717 URL: http://svn.apache.org/viewvc?rev=1336717view=rev Log: OAK-34 Define query API - support workspaces and access rights in queries Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/QueryEngine.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ChildNodeImpl.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/DescendantNodeImpl.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SameNodeImpl.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/QueryEngine.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/QueryEngine.java?rev=1336717r1=1336716r2=1336717view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/QueryEngine.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/QueryEngine.java Thu May 10 14:30:40 2012 @@ -49,12 +49,13 @@ public interface QueryEngine { * * @param statement the query statement * @param language the language + * @param session the content session to use * @param bindings the bind variable value bindings * @return the result * @throws ParseException if the statement could not be parsed * @throws IllegalArgumentException if there was an error executing the query */ -Result executeQuery(String statement, String language, MapString, CoreValue bindings) throws ParseException; +Result executeQuery(String statement, String language, ContentSession session, MapString, CoreValue bindings) throws ParseException; // TODO pass namespace mapping // TODO pass node type information (select * from [xyz] is supposed to return at least the mandatory columns for xyz) Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java?rev=1336717r1=1336716r2=1336717view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java Thu May 10 14:30:40 2012 @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.apache.jackrabbit.mk.api.MicroKernel; +import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.CoreValue; import org.apache.jackrabbit.oak.api.CoreValueFactory; import org.apache.jackrabbit.oak.query.ast.AstVisitorBase; @@ -69,6 +70,7 @@ public class Query { private long offset; private boolean prepared; private final CoreValueFactory valueFactory; +private ContentSession session; Query(SourceImpl source, ConstraintImpl constraint, OrderingImpl[] orderings, ColumnImpl[] columns, CoreValueFactory valueFactory) { @@ -461,6 +463,10 @@ public class Query { return new ArrayListString(bindVariableMap.keySet()); } +public String getWorkspaceName() { +return session.getWorkspaceName(); +} + public void setQueryEngine(QueryEngineImpl queryEngine) { this.queryEngine = queryEngine; } @@ -469,4 +475,8 @@ public class Query { return queryEngine.getBestIndex(filter); } +public void setSession(ContentSession session) { +this.session = session; +} + } Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java?rev=1336717r1=1336716r2=1336717view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java (original) +++
svn commit: r1336718 - /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java
Author: thomasm Date: Thu May 10 14:33:29 2012 New Revision: 1336718 URL: http://svn.apache.org/viewvc?rev=1336718view=rev Log: OAK-16 Proper ValueFactory implementation and Value handling (toString, reduce noise) Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java?rev=1336718r1=1336717r2=1336718view=diff == --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java Thu May 10 14:33:29 2012 @@ -37,7 +37,7 @@ import java.util.Calendar; import java.util.TimeZone; /** - * ValueImpl... + * The implementation of JCR values. */ class ValueImpl implements Value { @@ -48,7 +48,7 @@ class ValueImpl implements Value { private final CoreValue value; private final NamePathMapper namePathMapper; - + private InputStream stream = null; /** @@ -67,17 +67,12 @@ class ValueImpl implements Value { } //-- Value --- -/** - * @see javax.jcr.Value#getType() - */ + @Override public int getType() { return value.getType(); } -/** - * @see javax.jcr.Value#getBoolean() - */ @Override public boolean getBoolean() throws RepositoryException { if (getType() == PropertyType.STRING || getType() == PropertyType.BINARY || getType() == PropertyType.BOOLEAN) { @@ -87,9 +82,6 @@ class ValueImpl implements Value { } } -/** - * @see javax.jcr.Value#getDate() - */ @Override public Calendar getDate() throws RepositoryException { Calendar cal; @@ -109,9 +101,6 @@ class ValueImpl implements Value { return cal; } -/** - * @see javax.jcr.Value#getDecimal() - */ @Override public BigDecimal getDecimal() throws RepositoryException { try { @@ -127,9 +116,6 @@ class ValueImpl implements Value { } } -/** - * @see javax.jcr.Value#getDouble() - */ @Override public double getDouble() throws RepositoryException { try { @@ -145,9 +131,6 @@ class ValueImpl implements Value { } } -/** - * @see javax.jcr.Value#getLong() - */ @Override public long getLong() throws RepositoryException { try { @@ -163,9 +146,6 @@ class ValueImpl implements Value { } } -/** - * @see javax.jcr.Value#getString() - */ @Override public String getString() throws RepositoryException { switch (getType()) { @@ -187,10 +167,6 @@ class ValueImpl implements Value { } } - -/** - * @see javax.jcr.Value#getStream() - */ @Override public InputStream getStream() throws IllegalStateException, RepositoryException { if (stream == null) { @@ -207,22 +183,17 @@ class ValueImpl implements Value { stream = value.getNewStream(); } } - + return stream; } -/** - * @see javax.jcr.Value#getBinary() - */ @Override public Binary getBinary() throws RepositoryException { return new BinaryImpl(this); } //- Object --- -/** - * @see Object#equals(Object) - */ + @Override public boolean equals(Object obj) { if (obj instanceof ValueImpl) { @@ -232,11 +203,14 @@ class ValueImpl implements Value { } } -/** - * @see Object#hashCode() - */ -@Override + @Override public int hashCode() { return value.hashCode(); } + +@Override +public String toString() { +return value.toString(); +} + } \ No newline at end of file
svn commit: r1336730 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
Author: mduerig Date: Thu May 10 14:57:42 2012 New Revision: 1336730 URL: http://svn.apache.org/viewvc?rev=1336730view=rev Log: demote field to local var Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java?rev=1336730r1=1336729r2=1336730view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java Thu May 10 14:57:42 2012 @@ -55,7 +55,6 @@ public class ContentRepositoryImpl imple private static final String APP_NAME = jackrabbit.oak; -private final MicroKernel microKernel; private final QueryEngine queryEngine; private final NodeStore nodeStore; @@ -75,11 +74,10 @@ public class ContentRepositoryImpl imple * Creates an Oak repository instance based on the given, already * initialized components. * - * @param mk underlying kernel instance + * @param microKernel underlying kernel instance * @param indexProvider index provider */ -public ContentRepositoryImpl(MicroKernel mk, QueryIndexProvider indexProvider) { -microKernel = mk; +public ContentRepositoryImpl(MicroKernel microKernel, QueryIndexProvider indexProvider) { nodeStore = new KernelNodeStore(microKernel, new EmptyCommitHook()); QueryIndexProvider qip = (indexProvider == null) ? getDefaultIndexProvider(microKernel) : indexProvider; queryEngine = new QueryEngineImpl(nodeStore, microKernel, qip);
svn commit: r1336742 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java
Author: mduerig Date: Thu May 10 15:15:17 2012 New Revision: 1336742 URL: http://svn.apache.org/viewvc?rev=1336742view=rev Log: typo Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java?rev=1336742r1=1336741r2=1336742view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/CoreValueFactory.java Thu May 10 15:15:17 2012 @@ -76,7 +76,7 @@ public interface CoreValueFactory { * @return a new value instance. * @throws IllegalArgumentException if the specified {@code InputStream} is {@code null}. * @throws IOException If an error occurs while processing the stream. - * @throws //TODO define exceptions (currently impl. throws MikrokernelException) + * @throws //TODO define exceptions (currently impl. throws MicrokernelException) */ CoreValue createValue(InputStream value) throws IOException;
svn commit: r1336746 - in /jackrabbit/oak/trunk/oak-it/jcr: pom.xml src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java
Author: reschke Date: Thu May 10 15:31:15 2012 New Revision: 1336746 URL: http://svn.apache.org/viewvc?rev=1336746view=rev Log: OAK-6: add test content for export tests, update test exclusions Modified: jackrabbit/oak/trunk/oak-it/jcr/pom.xml jackrabbit/oak/trunk/oak-it/jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java Modified: jackrabbit/oak/trunk/oak-it/jcr/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/jcr/pom.xml?rev=1336746r1=1336745r2=1336746view=diff == --- jackrabbit/oak/trunk/oak-it/jcr/pom.xml (original) +++ jackrabbit/oak/trunk/oak-it/jcr/pom.xml Thu May 10 15:31:15 2012 @@ -48,6 +48,11 @@ org.apache.jackrabbit.test.api.NodeReadM org.apache.jackrabbit.test.api.NodeReadMethodsTest#testGetUUID org.apache.jackrabbit.test.api.SessionReadMethodsTest#testGetNodeByUUIDFailure org.apache.jackrabbit.test.api.SessionReadMethodsTest#testGetNodeByUUID +org.apache.jackrabbit.test.api.ExportSysViewTest#testExportSysView_handler_session_saveBinary_recurse +org.apache.jackrabbit.test.api.ExportSysViewTest#testExportSysView_stream_session_skipBinary_recurse +org.apache.jackrabbit.test.api.ExportSysViewTest#testExportSysView_stream_session_skipBinary_noRecurse +org.apache.jackrabbit.test.api.ExportSysViewTest#testExportSysView_stream_session_saveBinary_noRecurse +org.apache.jackrabbit.test.api.ExportSysViewTest#testExportSysView_stream_session_saveBinary_recurse org.apache.jackrabbit.test.api.PathTest#testGetItem org.apache.jackrabbit.test.api.PathTest#testCreatePathValue org.apache.jackrabbit.test.api.PathTest#testCreateMultiplePathValue Modified: jackrabbit/oak/trunk/oak-it/jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java?rev=1336746r1=1336745r2=1336746view=diff == --- jackrabbit/oak/trunk/oak-it/jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java (original) +++ jackrabbit/oak/trunk/oak-it/jcr/src/test/java/org/apache/jackrabbit/oak/jcr/TestContentLoader.java Thu May 10 15:31:15 2012 @@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.Calendar; +import javax.jcr.Binary; import javax.jcr.Node; import javax.jcr.PathNotFoundException; import javax.jcr.PropertyType; @@ -28,6 +29,7 @@ import javax.jcr.Session; import javax.jcr.ValueFactory; import org.apache.jackrabbit.commons.JcrUtils; +import org.apache.jackrabbit.value.BinaryValue; public class TestContentLoader { @@ -42,6 +44,7 @@ public class TestContentLoader { addPropertyTestData(getOrAddNode(data, property)); addQueryTestData(getOrAddNode(data, query)); addNodeTestData(getOrAddNode(data, node)); +addExportTestData(getOrAddNode(data, docViewTest)); session.save(); } @@ -105,9 +108,7 @@ public class TestContentLoader { resource.addMixin(mix:referenceable); resource.setProperty(jcr:encoding, ENCODING); resource.setProperty(jcr:mimeType, text/plain); -resource.setProperty( -jcr:data, -new ByteArrayInputStream(Hello w\u00F6rld..getBytes(ENCODING))); +resource.setProperty(jcr:data, new BinaryValue(Hello w\u00F6rld..getBytes(ENCODING))); resource.setProperty(jcr:lastModified, Calendar.getInstance()); @@ -129,4 +130,72 @@ public class TestContentLoader { node, testFile, text/plain, new ByteArrayInputStream(Hello, World!.getBytes(UTF-8))); } + +private void addExportTestData(Node node) throws RepositoryException, IOException { +getOrAddNode(node, invalidXmlName).setProperty(propName, some text); + +// three nodes which should be serialized as xml text in docView export +// separated with spaces +getOrAddNode(node, jcr:xmltext).setProperty( +jcr:xmlcharacters, A text without any special character.); +getOrAddNode(node, some-element); +getOrAddNode(node, jcr:xmltext).setProperty( +jcr:xmlcharacters, + The entity reference characters: , ', ,, , \ should ++ be escaped in xml export. ); +getOrAddNode(node, some-element); +getOrAddNode(node, jcr:xmltext).setProperty( +jcr:xmlcharacters, A text without any special character.); + +Node big = getOrAddNode(node, bigNode); +big.setProperty( +propName0, +SGVsbG8gd8O2cmxkLg==;SGVsbG8gd8O2cmxkLg==.split(;), +PropertyType.BINARY); +big.setProperty(propName1, text 1); +big.setProperty( +propName2, +multival text 1;multival text 2;multival text
svn commit: r1336763 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/LoginModuleImpl.java
Author: angela Date: Thu May 10 15:56:25 2012 New Revision: 1336763 URL: http://svn.apache.org/viewvc?rev=1336763view=rev Log: OAK-91 - Implement Authentication Support (WIP) Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/LoginModuleImpl.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/LoginModuleImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/LoginModuleImpl.java?rev=1336763r1=1336762r2=1336763view=diff == --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/LoginModuleImpl.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/LoginModuleImpl.java Thu May 10 15:56:25 2012 @@ -36,7 +36,51 @@ import java.util.Map; import java.util.Set; /** - * LoginModuleImpl... + * Default login module implementation that authenticates JCR {@code Credentials} + * against the repository. Based on the credentials the {@link Principal}s + * associated with user are retrieved from a configurable {@link PrincipalProvider}. + * + * h3Credentials/h3 + * + * The {@code Credentials} are collected during {@link #login()} using the + * following logic: + * + * ul + * li{@code Credentials} as specified in {@link javax.jcr.Repository#login(javax.jcr.Credentials)} + * in which case they are retrieved from the {@code CallbackHandler}./li + * liA {@link #SHARED_KEY_CREDENTIALS} entry in the shared state. The + * expected value is a set of {@code Credentials}. Ffor backwards compatibility + * with the Jackrabbit 2.x) the former {@link #SHARED_KEY_JR_CREDENTIALS} + * entry in the shared state is also respected. In the latter case + * the expected value is a single {@code Credentials} object./li + * liIf neither of the above variants provides Credentials this module + * tries to obtain them from the subject. See also + * {@link Subject#getSubject(java.security.AccessControlContext)}/li + * /ul + * + * This implementation of the {@code LoginModule} currently supports the following + * types of JCR Credentials: + * + * ul + * li{@link SimpleCredentials}/li + * li{@link GuestCredentials}/li + * li// TODO {@link TokenCredentials}/li + * /ul + * + * The {@link Credentials} obtained during the {@link #login()} are added to + * the shared state and - upon successful {@link #commit()} to the {@link Subject}. + * + * h3Principals/h3 + * + * TODO + * + * h3Login vs. Impersonation/h3 + * + * TODO + * + * + * + * */ public class LoginModuleImpl implements LoginModule { @@ -45,11 +89,34 @@ public class LoginModuleImpl implements */ private static final Logger log = LoggerFactory.getLogger(LoginModuleImpl.class); +/** + * Backwards compatibility: Key of the sharedState entry referring to a + * Credentials object being passed between multiple login modules. + * + * @deprecated Use {@link #SHARED_KEY_CREDENTIALS} instead. + */ +private static final String SHARED_KEY_JR_CREDENTIALS = org.apache.jackrabbit.credentials; + +/** + * Key of the sharedState entry referring to a Set of Credentials that is + * shared between multiple login modules. + */ +public static final String SHARED_KEY_CREDENTIALS = org.apache.jackrabbit.oak.credentials; + +//public static final String SHARED_KEY_LOGIN_NAME = javax.security.auth.login.name; + +protected static final SetClass SUPPORTED_CREDENTIALS = new HashSetClass(2); +static { +SUPPORTED_CREDENTIALS.add(SimpleCredentials.class); +SUPPORTED_CREDENTIALS.add(GuestCredentials.class); +} + private Subject subject; private CallbackHandler callbackHandler; +private Map sharedState; private SetCredentials credentials; -private String principalName; +private SetPrincipal principals; // LoginModule --- @Override @@ -58,14 +125,15 @@ public class LoginModuleImpl implements this.subject = subject; this.callbackHandler = callbackHandler; +this.sharedState = sharedState; } @Override public boolean login() throws LoginException { // TODO -credentials = retrieveCredentials(); +credentials = getCredentials(); if (supportsCredentials()) { -principalName = retrievePrincipalName(); +principals = getPrincipals(); return true; } else { return false; @@ -76,91 +144,156 @@ public class LoginModuleImpl implements public boolean commit() throws LoginException { // TODO -