svn commit: r1513729 - in /sling/trunk: bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp
Author: enorman Date: Wed Aug 14 05:28:14 2013 New Revision: 1513729 URL: http://svn.apache.org/r1513729 Log: SLING-3010 integrate patch from Anjan. Added integration tests to guard against future regressions. Modified: sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Modified: sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java?rev=1513729r1=1513728r2=1513729view=diff == --- sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java (original) +++ sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java Wed Aug 14 05:28:14 2013 @@ -484,6 +484,9 @@ public class AccessControlUtil { if (privilege.isAggregate()) { Privilege[] privileges = privilege.getAggregatePrivileges(); for (Privilege disaggregate : privileges) { + if (disaggregate.isAggregate()) { + continue; //nested aggregate, so skip it since the privileges are already included. + } disaggregatedPrivilegeNames.add(disaggregate.getName()); } } else { Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java?rev=1513729r1=1513728r2=1513729view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Wed Aug 14 05:28:14 2013 @@ -855,4 +855,140 @@ public class ModifyAceTest extends Abstr JSONObject jsonObject = new JSONObject(json); assertNotNull(jsonObject); } + + + /** +* Test for SLING-3010 +*/ + public void testMergeAceForUserGrantNestedAggregatePrivilegeAfterDenySuperAggregatePrivilege() throws IOException, JSONException { + testUserId = createTestUser(); + + testFolderUrl = createTestFolder(); + +String postUrl = testFolderUrl + .modifyAce.json; + +//1. setup an initial set of denied privileges for the test user +ListNameValuePair postParams = new ArrayListNameValuePair(); + postParams.add(new NameValuePair(principalId, testUserId)); + postParams.add(new NameValuePair(privilege@jcr:versionManagement, denied)); + postParams.add(new NameValuePair(privilege@jcr:read, denied)); + postParams.add(new NameValuePair(privilege@jcr:modifyAccessControl, denied)); + postParams.add(new NameValuePair(privilege@rep:write, denied)); + + Credentials creds = new UsernamePasswordCredentials(admin, admin); + /*String json = */getAuthenticatedPostContent(creds, postUrl, CONTENT_TYPE_JSON, postParams, HttpServletResponse.SC_OK); + + +//2. now grant the jcr:write subset from the rep:write aggregate privilege + postParams = new ArrayListNameValuePair(); + postParams.add(new NameValuePair(principalId, testUserId)); + postParams.add(new NameValuePair(privilege@jcr:versionManagement, granted)); + postParams.add(new NameValuePair(privilege@jcr:read, granted)); + postParams.add(new NameValuePair(privilege@jcr:modifyAccessControl, granted)); + postParams.add(new NameValuePair(privilege@jcr:write, granted)); //sub-aggregate of rep:write + + /*String json = */getAuthenticatedPostContent(creds, postUrl, CONTENT_TYPE_JSON, postParams, HttpServletResponse.SC_OK); + + //3. verify that the acl has the correct values + //fetch the JSON for the acl to verify the settings. + String getUrl = testFolderUrl + .acl.json; + + String json = getAuthenticatedContent(creds, getUrl, CONTENT_TYPE_JSON, null, HttpServletResponse.SC_OK); + assertNotNull(json
svn commit: r1395846 - in /sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post: AbstractGetAclServlet.java GetAclServlet.java GetEffective
Author: enorman Date: Tue Oct 9 02:28:57 2012 New Revision: 1395846 URL: http://svn.apache.org/viewvc?rev=1395846view=rev Log: SLING-2616 Enable tidy output from acl servlets Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java?rev=1395846r1=1395845r2=1395846view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java Tue Oct 9 02:28:57 2012 @@ -23,8 +23,8 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import javax.jcr.AccessDeniedException; import javax.jcr.Item; @@ -69,7 +69,21 @@ public abstract class AbstractGetAclServ response.setContentType(application/json); response.setCharacterEncoding(UTF-8); - acl.write(response.getWriter()); + boolean isTidy = false; + final String[] selectors = request.getRequestPathInfo().getSelectors(); + if (selectors != null selectors.length 0) { + for (final String level : selectors) { + if(tidy.equals(level)) { + isTidy = true; + } + } + } + + if (isTidy) { + response.getWriter().append(acl.toString(2)); + } else { + acl.write(response.getWriter()); + } } catch (AccessDeniedException ade) { response.sendError(HttpServletResponse.SC_NOT_FOUND); } catch (ResourceNotFoundException rnfe) { Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java?rev=1395846r1=1395845r2=1395846view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java Tue Oct 9 02:28:57 2012 @@ -115,7 +115,10 @@ import org.apache.sling.jcr.jackrabbit.a @Property (name=sling.servlet.methods, value=GET), @Property (name=sling.servlet.selectors, - value=acl), + value={ + acl, + tidy.acl + }), @Property (name=sling.servlet.extensions, value=json) }) Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java?rev=1395846r1=1395845r2=1395846view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java Tue Oct 9 02:28:57 2012 @@ -115,7 +115,10 @@ import org.apache.sling.jcr.jackrabbit.a @Property (name=sling.servlet.methods, value=GET), @Property (name=sling.servlet.selectors, - value=eacl), + value={ + eacl
svn commit: r1395204 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ launchpad/integration-tests/src/main/java/org/apache/slin
Author: enorman Date: Sun Oct 7 01:48:44 2012 New Revision: 1395204 URL: http://svn.apache.org/viewvc?rev=1395204view=rev Log: SLING-2600 Effective ACL servlet returns incorrect information Added: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/GetAclTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/SlingDateValuesTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java?rev=1395204r1=1395203r2=1395204view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java Sun Oct 7 01:48:44 2012 @@ -96,6 +96,8 @@ public abstract class AbstractAccessPost case COPY : htmlResponse.onCopied(change.getSource(), change.getDestination()); break; case CREATE : htmlResponse.onCreated(change.getSource()); break; case ORDER : htmlResponse.onChange(ordered, change.getSource(), change.getDestination()); break; + default: + break; } } Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java?rev=1395204r1=1395203r2=1395204view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java Sun Oct 7 01:48:44 2012 @@ -16,6 +16,9 @@ */ package org.apache.sling.jcr.jackrabbit.accessmanager.post; +import java.util.ArrayList; +import java.util.List; + import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.security.AccessControlEntry; @@ -131,13 +134,16 @@ public class GetAclServlet extends Abstr protected AccessControlEntry[] getAccessControlEntries(Session session, String absPath) throws RepositoryException { AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session); AccessControlPolicy[] policies = accessControlManager.getPolicies(absPath); +ListAccessControlEntry allEntries = new ArrayListAccessControlEntry(); for (AccessControlPolicy accessControlPolicy : policies) { if (accessControlPolicy instanceof AccessControlList) { AccessControlEntry[] accessControlEntries = ((AccessControlList)accessControlPolicy).getAccessControlEntries(); - return accessControlEntries; +for (AccessControlEntry accessControlEntry : accessControlEntries) { + allEntries.add(accessControlEntry); + } } } - return new AccessControlEntry[0]; +return allEntries.toArray(new AccessControlEntry[allEntries.size()]); } } Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java?rev=1395204r1=1395203r2=1395204view=diff
svn commit: r1353206 - /sling/trunk/bundles/resourceresolver/pom.xml
Author: enorman Date: Sat Jun 23 22:16:08 2012 New Revision: 1353206 URL: http://svn.apache.org/viewvc?rev=1353206view=rev Log: fixing build for a fresh environment Modified: sling/trunk/bundles/resourceresolver/pom.xml Modified: sling/trunk/bundles/resourceresolver/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/pom.xml?rev=1353206r1=1353205r2=1353206view=diff == --- sling/trunk/bundles/resourceresolver/pom.xml (original) +++ sling/trunk/bundles/resourceresolver/pom.xml Sat Jun 23 22:16:08 2012 @@ -23,7 +23,7 @@ groupIdorg.apache.sling/groupId artifactIdsling/artifactId version13-SNAPSHOT/version -relativePath../../../parent/pom.xml/relativePath +relativePath../../parent/pom.xml/relativePath /parent artifactIdorg.apache.sling.resourceresolver/artifactId
svn commit: r1353212 - /sling/trunk/bundles/scripting/jsp-jstl/
Author: enorman Date: Sat Jun 23 22:51:46 2012 New Revision: 1353212 URL: http://svn.apache.org/viewvc?rev=1353212view=rev Log: svn:ignore build artifacts and eclipse files Modified: sling/trunk/bundles/scripting/jsp-jstl/ (props changed) Propchange: sling/trunk/bundles/scripting/jsp-jstl/ -- --- svn:ignore (added) +++ svn:ignore Sat Jun 23 22:51:46 2012 @@ -0,0 +1,4 @@ +.settings +target +.classpath +.project
svn commit: r1348688 - in /sling/trunk/samples/custom-selector-login-form: ./ src/ src/main/ src/main/resources/ src/main/resources/org/ src/main/resources/org/apache/ src/main/resources/org/apache/sl
Author: enorman Date: Mon Jun 11 00:07:41 2012 New Revision: 1348688 URL: http://svn.apache.org/viewvc?rev=1348688view=rev Log: SLING-2504 - adding sample that demonstrates how to customize the auth.selector login page as requested by Dragos Dascalita Haut Added: sling/trunk/samples/custom-selector-login-form/ sling/trunk/samples/custom-selector-login-form/LICENSE sling/trunk/samples/custom-selector-login-form/NOTICE sling/trunk/samples/custom-selector-login-form/README.txt sling/trunk/samples/custom-selector-login-form/pom.xml sling/trunk/samples/custom-selector-login-form/src/ sling/trunk/samples/custom-selector-login-form/src/main/ sling/trunk/samples/custom-selector-login-form/src/main/resources/ sling/trunk/samples/custom-selector-login-form/src/main/resources/org/ sling/trunk/samples/custom-selector-login-form/src/main/resources/org/apache/ sling/trunk/samples/custom-selector-login-form/src/main/resources/org/apache/sling/ sling/trunk/samples/custom-selector-login-form/src/main/resources/org/apache/sling/auth/ sling/trunk/samples/custom-selector-login-form/src/main/resources/org/apache/sling/auth/selector/ sling/trunk/samples/custom-selector-login-form/src/main/resources/org/apache/sling/auth/selector/custom_login.html Added: sling/trunk/samples/custom-selector-login-form/LICENSE URL: http://svn.apache.org/viewvc/sling/trunk/samples/custom-selector-login-form/LICENSE?rev=1348688view=auto == --- sling/trunk/samples/custom-selector-login-form/LICENSE (added) +++ sling/trunk/samples/custom-selector-login-form/LICENSE Mon Jun 11 00:07:41 2012 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 +http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + License shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + Licensor shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + Legal Entity shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + control means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + You (or Your) shall mean an individual or Legal Entity + exercising permissions granted by this License. + + Source form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + Object form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + Work shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + Derivative Works shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + Contribution shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, submitted + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise
svn commit: r1302034 - in /sling/trunk: bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/ launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/
Author: enorman Date: Sat Mar 17 22:33:45 2012 New Revision: 1302034 URL: http://svn.apache.org/viewvc?rev=1302034view=rev Log: SLING-2415 Added ability to match all child nodes for the :applyTo parameter by using '*' as the last segment of the value. The applies to the delete, move and copy operations. Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletCopyTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletDeleteTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletMoveTest.java Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java?rev=1302034r1=1302033r2=1302034view=diff == --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java (original) +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java Sat Mar 17 22:33:45 2012 @@ -478,6 +478,8 @@ public abstract class AbstractPostOperat private Resource nextResource; +private IteratorResource resourceIterator = null; + ApplyToIterator(SlingHttpServletRequest request, String[] paths) { this.resolver = request.getResourceResolver(); this.baseResource = request.getResource(); @@ -507,13 +509,48 @@ public abstract class AbstractPostOperat } private Resource seek() { + if (resourceIterator != null) { + if (resourceIterator.hasNext()) { + //return the next resource in the iterator + Resource res = resourceIterator.next(); + return res; + } else { + resourceIterator = null; + } + } while (pathIndex paths.length) { String path = paths[pathIndex]; pathIndex++; -Resource res = resolver.getResource(baseResource, path); -if (res != null) { -return res; +//SLING-2415 - support wildcard as the last segment of the applyTo path +if (path.endsWith(*)) { + if (path.length() == 1) { + resourceIterator = baseResource.listChildren(); + } else if (path.endsWith(/*)) { + path = path.substring(0, path.length() - 2); + if (path.length() == 0) { + resourceIterator = baseResource.listChildren(); + } else { + Resource res = resolver.getResource(baseResource, path); +if (res != null) { + resourceIterator = res.listChildren(); +} + } +} + if (resourceIterator != null) { + //return the first resource in the iterator + if (resourceIterator.hasNext()) { + Resource res = resourceIterator.next(); + return res; + } else { + resourceIterator = null; + } + } +} else { +Resource res = resolver.getResource(baseResource, path); +if (res != null) { +return res; +} } } Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletCopyTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletCopyTest.java?rev=1302034r1=1302033r2=1302034view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletCopyTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post
svn commit: r1231244 - in /sling/trunk: bundles/auth/core/src/main/java/org/apache/sling/auth/core/AuthUtil.java launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integration
Author: enorman Date: Fri Jan 13 18:55:13 2012 New Revision: 1231244 URL: http://svn.apache.org/viewvc?rev=1231244view=rev Log: SLING-2165 fixed regression loading the login page of the launchpad Modified: sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/AuthUtil.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/login/RedirectOnLoginErrorTest.java Modified: sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/AuthUtil.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/AuthUtil.java?rev=1231244r1=1231243r2=1231244view=diff == --- sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/AuthUtil.java (original) +++ sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/AuthUtil.java Fri Jan 13 18:55:13 2012 @@ -403,19 +403,21 @@ public final class AuthUtil { */ public static boolean checkReferer(HttpServletRequest request, String loginForm) { //SLING-2165: if a Referer header is supplied check if it matches the login path for this handler -String referer = request.getHeader(Referer); -if (referer != null) { -String expectedPath = String.format(%s%s, request.getContextPath(), loginForm); -try { -URL uri = new URL(referer); -if (!expectedPath.equals(uri.getPath())) { -//not for this selector, so let the next one handle it. -return false; + if (POST.equals(request.getMethod())) { +String referer = request.getHeader(Referer); +if (referer != null) { +String expectedPath = String.format(%s%s, request.getContextPath(), loginForm); +try { +URL uri = new URL(referer); +if (!expectedPath.equals(uri.getPath())) { +//not for this selector, so let the next one handle it. +return false; +} +} catch (MalformedURLException e) { +getLog().debug(Failed to parse the referer value for the login form + loginForm, e); } -} catch (MalformedURLException e) { -getLog().debug(Failed to parse the referer value for the login form + loginForm, e); } -} + } return true; } Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/login/RedirectOnLoginErrorTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/login/RedirectOnLoginErrorTest.java?rev=1231244r1=1231243r2=1231244view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/login/RedirectOnLoginErrorTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/login/RedirectOnLoginErrorTest.java Fri Jan 13 18:55:13 2012 @@ -144,4 +144,15 @@ public class RedirectOnLoginErrorTest ex } assertEquals(Expected to remain on the form/login page, loginPageUrl, location); } + +/** + * Test SLING-2165. Verify that a GET request to the default login page does not + * result in an error condition. + * + * @throws Exception + */ +public void testGetDefaultLoginPage() throws Exception { +final String loginPageUrl = String.format(%s/system/sling/login, HTTP_BASE_URL); +assertHttpStatus(loginPageUrl, HttpServletResponse.SC_OK); +} }
svn commit: r1225347 - in /sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference: ./ src/main/java/org/apache/sling/archetype/servlet/testing/ src/test/java/org/apache/slin
Author: enorman Date: Wed Dec 28 21:34:43 2011 New Revision: 1225347 URL: http://svn.apache.org/viewvc?rev=1225347view=rev Log: fixing build on windows Modified: sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/pom.xml (props changed) sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/main/java/org/apache/sling/archetype/servlet/testing/ByPathServlet.java (props changed) sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/main/java/org/apache/sling/archetype/servlet/testing/ByResourceTypeServlet.java (props changed) sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/main/java/org/apache/sling/archetype/servlet/testing/SimpleFilter.java (props changed) sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/test/java/org/apache/sling/archetype/servlet/testing/ByPathServletTest.java (props changed) Propchange: sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/pom.xml -- svn:eol-style = native Propchange: sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/main/java/org/apache/sling/archetype/servlet/testing/ByPathServlet.java -- svn:eol-style = native Propchange: sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/main/java/org/apache/sling/archetype/servlet/testing/ByResourceTypeServlet.java -- svn:eol-style = native Propchange: sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/main/java/org/apache/sling/archetype/servlet/testing/SimpleFilter.java -- svn:eol-style = native Propchange: sling/trunk/maven/archetypes/servlet/src/test/resources/projects/normal/reference/src/test/java/org/apache/sling/archetype/servlet/testing/ByPathServletTest.java -- svn:eol-style = native
svn commit: r1208229 - in /sling/trunk/bundles/jcr: contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanage
Author: enorman Date: Wed Nov 30 03:05:52 2011 New Revision: 1208229 URL: http://svn.apache.org/viewvc?rev=1208229view=rev Log: SLING-2308 Remove user password digesting from sling Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentImporter.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/JcrContentHelper.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractUserPostServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java?rev=1208229r1=1208228r2=1208229view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java Wed Nov 30 03:05:52 2011 @@ -18,10 +18,7 @@ */ package org.apache.sling.jcr.contentloader.internal; -import java.io.UnsupportedEncodingException; -import java.security.NoSuchAlgorithmException; import java.util.Calendar; -import java.util.Dictionary; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -69,16 +66,6 @@ public class ContentLoaderService implem public static final String BUNDLE_CONTENT_NODE = /var/sling/bundle-content; -/** - * To be used for the encryption. E.g. for passwords in - * {@link javax.jcr.SimpleCredentials#getPassword()} SimpleCredentials} - * - * @scr.property valueRef=DEFAULT_PASSWORD_DIGEST_ALGORITHM - */ -private static final String PROP_PASSWORD_DIGEST_ALGORITHM = password.digest.algorithm; -private static final String DEFAULT_PASSWORD_DIGEST_ALGORITHM = sha1; -private String passwordDigestAlgoritm = null; - /** default log */ final Logger log = LoggerFactory.getLogger(getClass()); @@ -215,27 +202,6 @@ public class ContentLoaderService implem } } -/** - * Digest the given password using the configured digest algorithm - * - * @param pwd the value to digest - * @return the digested value - * @throws IllegalArgumentException - */ -public String digestPassword(String pwd) throws IllegalArgumentException { -try { -StringBuffer password = new StringBuffer(); -password.append({).append(passwordDigestAlgoritm).append(}); - password.append(DefaultContentCreator.digest(passwordDigestAlgoritm, -pwd.getBytes(UTF-8))); -return password.toString(); -} catch (NoSuchAlgorithmException e) { -throw new IllegalArgumentException(e.toString()); -} catch (UnsupportedEncodingException e) { -throw new IllegalArgumentException(e.toString()); -} -} - // -- SCR Integration - /** Activates this component, called by SCR before registering as a service */ @@ -245,14 +211,6 @@ public class ContentLoaderService implem componentContext.getBundleContext().addBundleListener(this); -Dictionary?, ? props = componentContext.getProperties(); -Object propValue = props.get(PROP_PASSWORD_DIGEST_ALGORITHM); -if (propValue instanceof String) { -passwordDigestAlgoritm = (String) propValue; -} else { -passwordDigestAlgoritm = DEFAULT_PASSWORD_DIGEST_ALGORITHM; -} - Session session = null; try { session = this.getSession(); @@ -307,7 +265,6 @@ public class ContentLoaderService implem this.initialContentLoader.dispose(); this.initialContentLoader = null; } -passwordDigestAlgoritm = null; } // -- internal helper -- Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr
svn commit: r1208235 - in /sling/trunk/bundles/jcr/jackrabbit-accessmanager: ./ src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/
Author: enorman Date: Wed Nov 30 03:30:19 2011 New Revision: 1208235 URL: http://svn.apache.org/viewvc?rev=1208235view=rev Log: SLING-2309 AccessManager - Convert @scr Java Doc Tags to SCR Annotations Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml?rev=1208235r1=1208234r2=1208235view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml Wed Nov 30 03:30:19 2011 @@ -144,5 +144,12 @@ groupIdorg.slf4j/groupId artifactIdslf4j-api/artifactId /dependency + +dependency +groupIdorg.apache.felix/groupId +artifactIdorg.apache.felix.scr.annotations/artifactId +version1.6.0/version +scopeprovided/scope +/dependency /dependencies /project Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java?rev=1208235r1=1208234r2=1208235view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java Wed Nov 30 03:30:19 2011 @@ -28,7 +28,12 @@ import javax.jcr.Session; import javax.jcr.security.AccessControlEntry; import javax.jcr.security.AccessControlList; import javax.jcr.security.AccessControlManager; +import javax.servlet.Servlet; +import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Properties; +import org.apache.felix.scr.annotations.Property; +import org.apache.felix.scr.annotations.Service; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.resource.ResourceNotFoundException; import org.apache.sling.api.servlets.HtmlResponse; @@ -67,15 +72,21 @@ import org.apache.sling.servlets.post.Sl * dt500/dt * ddFailure. HTML explains the failure./dd * /dl - * - * @scr.component immediate=true label=%deleteAces.post.operation.name - *description=%deleteAces.post.operation.description - * @scr.service interface=javax.servlet.Servlet - * @scr.service interface=org.apache.sling.jcr.jackrabbit.accessmanager.DeleteAces - * @scr.property name=sling.servlet.resourceTypes value=sling/servlet/default - * @scr.property name=sling.servlet.methods value=POST - * @scr.property name=sling.servlet.selectors value=deleteAce */ +@Component (immediate=true, + label=%deleteAces.post.operation.name, + description=%deleteAces.post.operation.description) +@Service (value={ + Servlet.class, + DeleteAces.class}) +@Properties ({ + @Property (name=sling.servlet.resourceTypes, + value=sling/servlet/default), + @Property (name=sling.servlet.methods, + value=POST), + @Property (name=sling.servlet.selectors, + value=deleteAce) +}) public class DeleteAcesServlet extends AbstractAccessPostServlet implements DeleteAces { private static final long serialVersionUID = 3784866802938282971L; Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java?rev=1208235r1=1208234r2=1208235view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java
svn commit: r1207745 - /sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml
Author: enorman Date: Tue Nov 29 04:06:38 2011 New Revision: 1207745 URL: http://svn.apache.org/viewvc?rev=1207745view=rev Log: SLING-2303 Use a PersistanceManager that is not deprecated Modified: sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml Modified: sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml?rev=1207745r1=1207744r2=1207745view=diff == --- sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml (original) +++ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml Tue Nov 29 04:06:38 2011 @@ -47,10 +47,9 @@ FileSystem class=org.apache.jackrabbit.core.fs.local.LocalFileSystem param name=path value=${wsp.home}/ /FileSystem -PersistenceManager class=org.apache.jackrabbit.core.persistence.db.DerbyPersistenceManager +PersistenceManager class=org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager param name=url value=jdbc:derby:${wsp.home}/db;create=true/ param name=schemaObjectPrefix value=${wsp.name}_/ - param name=shutdownOnClose value=false/ /PersistenceManager SearchIndex class=org.apache.jackrabbit.core.query.lucene.SearchIndex param name=path value=${wsp.home}/index/ @@ -63,10 +62,9 @@ param name=path value=${rep.home}/version / /FileSystem -PersistenceManager class=org.apache.jackrabbit.core.persistence.db.DerbyPersistenceManager +PersistenceManager class=org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager param name=url value=jdbc:derby:${rep.home}/version/db;create=true/ param name=schemaObjectPrefix value=version_/ - param name=shutdownOnClose value=false/ /PersistenceManager /Versioning
svn commit: r1206611 - in /sling/trunk: bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/
Author: enorman Date: Sat Nov 26 21:40:18 2011 New Revision: 1206611 URL: http://svn.apache.org/viewvc?rev=1206611view=rev Log: SLING-2108 PostServlet :import operation does not take autoCheckout into account Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ContentImportListener.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentImporter.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java sling/trunk/bundles/jcr/contentloader/src/test/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreatorTest.java sling/trunk/bundles/servlets/post/pom.xml sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java sling/trunk/launchpad/integration-tests/pom.xml sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/servlets/post/testimport3.json Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ContentImportListener.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ContentImportListener.java?rev=1206611r1=1206610r2=1206611view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ContentImportListener.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ContentImportListener.java Sat Nov 26 21:40:18 2011 @@ -64,4 +64,17 @@ public interface ContentImportListener { */ void onReorder(String orderedPath, String beforeSibbling); +/** + * A versionable Node has been checked in. The source path provides the path of the + * newly checked in Node. + * @since 2.1.4 + */ + void onCheckin(String srcPath); + + /** + * A versionable Node has been checked out. The source path provides the path of the + * newly checked out Node. + * @since 2.1.4 + */ + void onCheckout(String srcPath); } Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java?rev=1206611r1=1206610r2=1206611view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java Sat Nov 26 21:40:18 2011 @@ -46,6 +46,16 @@ public abstract class ImportOptions { public abstract boolean isCheckin(); /** +* Specifies whether versionable nodes is automatically checked out when +* necessary. +* @return true to checkout the versionable nodes, false otherwise + * @since 2.1.4 +*/ + public boolean isAutoCheckout() { + return true; + } + + /** * Check if the import provider for the given file extension should * be ignored. * Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java?rev=1206611r1=1206610r2=1206611view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java Sat Nov 26 21:40:18 2011 @@ -50,6 +50,7 @@ import java.util.Map.Entry; import java.util.regex.Pattern; import javax.jcr.Item; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; @@ -251,6 +252,7 @@ public class DefaultContentCreator imple if ( !isParentImport
svn commit: r1201491 - /sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java
Author: enorman Date: Sun Nov 13 19:43:29 2011 New Revision: 1201491 URL: http://svn.apache.org/viewvc?rev=1201491view=rev Log: SLING-2270 Junit Core HtmlRenderer outputs invalid HTML Apply patch by Brian Riggs (Many thanks) Modified: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java Modified: sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java?rev=1201491r1=1201490r2=1201491view=diff == --- sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java (original) +++ sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java Sun Nov 13 19:43:29 2011 @@ -142,7 +142,7 @@ public class HtmlRenderer extends RunLis super.testFinished(description); output.print(p class='finished'Test finished: ); HtmlFilter.escape(output, description.toString()); -output.println(/p); +output.println(/p/div); } @Override
svn commit: r1201565 - /sling/trunk/bundles/engine/pom.xml
Author: enorman Date: Mon Nov 14 00:48:49 2011 New Revision: 1201565 URL: http://svn.apache.org/viewvc?rev=1201565view=rev Log: SLING-2257 File uploads 2GB are not available as request parameters (reported by Dominique Pfister) Removed embedded commons-fileupload and import the same packages from the o.a.c.fileupload v1.2.2 bundle. Modified: sling/trunk/bundles/engine/pom.xml Modified: sling/trunk/bundles/engine/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/pom.xml?rev=1201565r1=1201564r2=1201565view=diff == --- sling/trunk/bundles/engine/pom.xml (original) +++ sling/trunk/bundles/engine/pom.xml Mon Nov 14 00:48:49 2011 @@ -69,14 +69,15 @@ org.apache.sling.engine.impl.* /Private-Package Import-Package +org.apache.commons.fileupload;version=1.2, +org.apache.commons.fileupload.disk;version=1.2, +org.apache.commons.fileupload.portlet;version=1.2, +org.apache.commons.fileupload.servlet;version=1.2, org.osgi.service.useradmin; javax.portlet; org.apache.commons.math.*;resolution:=optional, * /Import-Package -Embed-Dependency -commons-fileupload -/Embed-Dependency /instructions /configuration /plugin @@ -140,7 +141,7 @@ dependency groupIdcommons-fileupload/groupId artifactIdcommons-fileupload/artifactId -version1.1.1/version +version1.2.2/version scopeprovided/scope /dependency dependency
svn commit: r1201346 - in /sling/trunk: bundles/auth/core/src/main/java/org/apache/sling/auth/core/spi/ bundles/auth/form/ bundles/auth/form/src/main/java/org/apache/sling/auth/form/impl/ bundles/auth
Author: enorman Date: Sat Nov 12 22:22:51 2011 New Revision: 1201346 URL: http://svn.apache.org/viewvc?rev=1201346view=rev Log: SLING-2165 Form based login failure should stay on the same login page to show the login error Added: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/login/RedirectOnLoginErrorTest.java Modified: sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/spi/AbstractAuthenticationHandler.java sling/trunk/bundles/auth/form/pom.xml sling/trunk/bundles/auth/form/src/main/java/org/apache/sling/auth/form/impl/FormAuthenticationHandler.java sling/trunk/bundles/auth/openid/pom.xml sling/trunk/bundles/auth/openid/src/main/java/org/apache/sling/auth/openid/impl/OpenIDAuthenticationHandler.java sling/trunk/bundles/auth/selector/pom.xml sling/trunk/bundles/auth/selector/src/main/java/org/apache/sling/auth/selector/SelectorAuthenticationHandler.java sling/trunk/launchpad/builder/src/main/bundles/list.xml Modified: sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/spi/AbstractAuthenticationHandler.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/spi/AbstractAuthenticationHandler.java?rev=1201346r1=1201345r2=1201346view=diff == --- sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/spi/AbstractAuthenticationHandler.java (original) +++ sling/trunk/bundles/auth/core/src/main/java/org/apache/sling/auth/core/spi/AbstractAuthenticationHandler.java Sat Nov 12 22:22:51 2011 @@ -20,6 +20,8 @@ package org.apache.sling.auth.core.spi; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; @@ -420,4 +422,29 @@ public abstract class AbstractAuthentica // TODO: log.error(Failed to send 403/Forbidden response, ioe); } } + + /** +* Check if the request is for this authentication handler. +* +* @param request the current request +* @return true if the referer matches this handler, or false otherwise +*/ + public static boolean checkReferer(HttpServletRequest request, String loginForm) { + //SLING-2165: if a Referer header is supplied check if it matches the login path for this handler +String referer = request.getHeader(Referer); +if (referer != null) { + String expectedPath = String.format(%s%s, request.getContextPath(), loginForm); + try { + URL uri = new URL(referer); + if (!expectedPath.equals(uri.getPath())) { + //not for this selector, so let the next one handle it. + return false; + } + } catch (MalformedURLException e) { + LoggerFactory.getLogger(AbstractAuthenticationHandler.class) + .debug(Failed to parse the referer value for the login form + loginForm, e); + } +} +return true; + } } Modified: sling/trunk/bundles/auth/form/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/auth/form/pom.xml?rev=1201346r1=1201345r2=1201346view=diff == --- sling/trunk/bundles/auth/form/pom.xml (original) +++ sling/trunk/bundles/auth/form/pom.xml Sat Nov 12 22:22:51 2011 @@ -98,7 +98,7 @@ dependency groupIdorg.apache.sling/groupId artifactIdorg.apache.sling.auth.core/artifactId -version1.0.4/version +version1.0.7-SNAPSHOT/version scopeprovided/scope /dependency dependency Modified: sling/trunk/bundles/auth/form/src/main/java/org/apache/sling/auth/form/impl/FormAuthenticationHandler.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/auth/form/src/main/java/org/apache/sling/auth/form/impl/FormAuthenticationHandler.java?rev=1201346r1=1201345r2=1201346view=diff == --- sling/trunk/bundles/auth/form/src/main/java/org/apache/sling/auth/form/impl/FormAuthenticationHandler.java (original) +++ sling/trunk/bundles/auth/form/src/main/java/org/apache/sling/auth/form/impl/FormAuthenticationHandler.java Sat Nov 12 22:22:51 2011 @@ -353,6 +353,12 @@ public class FormAuthenticationHandler e return false; } +//check the referer to see if the request is for this handler +if (!checkReferer(request, loginForm)) { + //not for this handler, so return + return false; +} + final String resource
svn commit: r1201348 - in /sling/trunk/samples/usermanager-ui/src/main/resources: SLING-INF/i18n/ css/usermanager/ images/ js/usermanager/ libs/sling/group/ libs/sling/groups/ libs/sling/user/ libs/sl
Author: enorman Date: Sat Nov 12 22:50:56 2011 New Revision: 1201348 URL: http://svn.apache.org/viewvc?rev=1201348view=rev Log: SLING-1562 improvements to the usermanager.ui sample 1. user/group delete action was broken when the app was not mounted at the root context 2. block rendering of several pages for the anonymous user 3. misc ui tweaks Removed: sling/trunk/samples/usermanager-ui/src/main/resources/images/ajax-loader.gif Modified: sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.min.css sling/trunk/samples/usermanager-ui/src/main/resources/js/usermanager/usermanager.js sling/trunk/samples/usermanager-ui/src/main/resources/js/usermanager/usermanager.min.js sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/group/update_body.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/groups/body.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/groups/html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/groups/searchresult.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/body.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/searchresult.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/body.html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/html.esp sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/searchresult.html.esp Modified: sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json?rev=1201348r1=1201347r2=1201348view=diff == --- sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json (original) +++ sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json Sat Nov 12 22:50:56 2011 @@ -77,7 +77,7 @@ prop.label.loginEnabled: { jcr:primaryType: sling:MessageEntry, sling:key: prop.label.loginEnabled, -sling:message: Login Enabled +sling:message: Is Login Enabled }, prop.label.loginEnabled.yes: { jcr:primaryType: sling:MessageEntry, Modified: sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css?rev=1201348r1=1201347r2=1201348view=diff == --- sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css (original) +++ sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css Sat Nov 12 22:50:56 2011 @@ -183,17 +183,13 @@ img, a img text-align: center; } -#authorizables-body -{ -min-width: 750px; -} - #find-authorizables-quick-nav { padding: 2px 4px; } -#authorizables-results-body +#authorizables-results-body, +#authorizables-results-progress { margin-top: 5px; } @@ -207,7 +203,7 @@ img, a img #find-authorizables-quick-nav .ui-button-text-only .ui-button-text { line-height: 1; -padding: 3px 3px; +padding: 1px 1px; font-size: 10pt; } #find-authorizables-block .ui-button-text-only .ui-button-text @@ -262,6 +258,7 @@ img, a img font-weight: bold; display: inline; line-height: 33px; +border-style: none; } @@ -290,7 +287,7 @@ img, a img { float: left; display: inline; -width: 15%; +width: 20%; text-align: right; } @@ -298,7 +295,7 @@ img, a img #create-group-form input { margin-left: 10px; -width: 75%; +width: 70%; } #create-user-form button, @@ -341,7 +338,7 @@ img, a img { float: left; display: inline; -width: 15%; +width: 20%; text-align: right; } @@ -352,7 +349,7 @@ img, a img #add-group-member-form input { margin-left: 10px; -width: 75%; +width: 70%; } #update-user-form button, @@ -381,14 +378,14 @@ img, a img #update-password-form label { -width: 15%; +width: 20%; text-align: right; } #update-password-form input { margin-left: 10px; -width: 75%; +width: 70%; } #update-password-form button @@ -417,7 +414,7 @@ img, a img #disabledReasonPanel input
svn commit: r1200746 - in /sling/trunk: contrib/scripting/scala/config/ contrib/scripting/scala/samples/forum/ contrib/scripting/scala/samples/hello-world/ maven/archetypes/bundle-for-jcrinstall/ mave
Author: enorman Date: Fri Nov 11 06:21:39 2011 New Revision: 1200746 URL: http://svn.apache.org/viewvc?rev=1200746view=rev Log: svn:ignore eclipse project files Modified: sling/trunk/contrib/scripting/scala/config/ (props changed) sling/trunk/contrib/scripting/scala/samples/forum/ (props changed) sling/trunk/contrib/scripting/scala/samples/hello-world/ (props changed) sling/trunk/maven/archetypes/bundle/ (props changed) sling/trunk/maven/archetypes/bundle-for-jcrinstall/ (props changed) sling/trunk/samples/installing-dependencies/ (props changed) Propchange: sling/trunk/contrib/scripting/scala/config/ -- --- svn:ignore (original) +++ svn:ignore Fri Nov 11 06:21:39 2011 @@ -1 +1,4 @@ +.classpath +.project +.settings target Propchange: sling/trunk/contrib/scripting/scala/samples/forum/ -- --- svn:ignore (original) +++ svn:ignore Fri Nov 11 06:21:39 2011 @@ -1 +1,4 @@ +.classpath +.project +.settings target Propchange: sling/trunk/contrib/scripting/scala/samples/hello-world/ -- --- svn:ignore (original) +++ svn:ignore Fri Nov 11 06:21:39 2011 @@ -1 +1,4 @@ +.classpath +.project +.settings target Propchange: sling/trunk/maven/archetypes/bundle/ -- --- svn:ignore (original) +++ svn:ignore Fri Nov 11 06:21:39 2011 @@ -1 +1,3 @@ +.project +.settings target Propchange: sling/trunk/maven/archetypes/bundle-for-jcrinstall/ -- --- svn:ignore (original) +++ svn:ignore Fri Nov 11 06:21:39 2011 @@ -1 +1,3 @@ +.project +.settings target Propchange: sling/trunk/samples/installing-dependencies/ -- --- svn:ignore (added) +++ svn:ignore Fri Nov 11 06:21:39 2011 @@ -0,0 +1 @@ +target
svn commit: r1200172 - /sling/trunk/bundles/servlets/compat/
Author: enorman Date: Thu Nov 10 06:04:06 2011 New Revision: 1200172 URL: http://svn.apache.org/viewvc?rev=1200172view=rev Log: svn:ignore eclipse project files Modified: sling/trunk/bundles/servlets/compat/ (props changed) Propchange: sling/trunk/bundles/servlets/compat/ -- --- svn:ignore (original) +++ svn:ignore Thu Nov 10 06:04:06 2011 @@ -1 +1,4 @@ target +.classpath +.project +.settings
svn commit: r1158505 - in /sling/trunk/samples/accessmanager-ui/src/main/resources: SLING-INF/i18n/resources.json js/accessmanager/accessmanager.js js/accessmanager/accessmanager.min.js libs/sling/ser
Author: enorman Date: Wed Aug 17 04:27:43 2011 New Revision: 1158505 URL: http://svn.apache.org/viewvc?rev=1158505view=rev Log: SLING-2065 Add ui for the additional JCR 2.0 privileges Modified: sling/trunk/samples/accessmanager-ui/src/main/resources/SLING-INF/i18n/resources.json sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.js sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.min.js sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/ace_body.html.esp Modified: sling/trunk/samples/accessmanager-ui/src/main/resources/SLING-INF/i18n/resources.json URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/src/main/resources/SLING-INF/i18n/resources.json?rev=1158505r1=1158504r2=1158505view=diff == --- sling/trunk/samples/accessmanager-ui/src/main/resources/SLING-INF/i18n/resources.json (original) +++ sling/trunk/samples/accessmanager-ui/src/main/resources/SLING-INF/i18n/resources.json Wed Aug 17 04:27:43 2011 @@ -197,6 +197,31 @@ jcr:primaryType: sling:MessageEntry, sling:key: label.privilege.jcr:modifyAccessControl, sling:message: Modify Permissions +}, +label.privilege.jcr_lockManagement: { +jcr:primaryType: sling:MessageEntry, +sling:key: label.privilege.jcr:lockManagement, +sling:message: Lock Management +}, +label.privilege.jcr_versionManagement: { +jcr:primaryType: sling:MessageEntry, +sling:key: label.privilege.jcr:versionManagement, +sling:message: Version Management +}, +label.privilege.jcr_nodeTypeManagement: { +jcr:primaryType: sling:MessageEntry, +sling:key: label.privilege.jcr:nodeTypeManagement, +sling:message: NodeType Management +}, +label.privilege.jcr_retentionManagement: { +jcr:primaryType: sling:MessageEntry, +sling:key: label.privilege.jcr:retentionManagement, +sling:message: Retention Management +}, +label.privilege.jcr_lifecycleManagement: { +jcr:primaryType: sling:MessageEntry, +sling:key: label.privilege.jcr:lifecycleManagement, +sling:message: Lifecycle Management }, button.save: { Modified: sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.js URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.js?rev=1158505r1=1158504r2=1158505view=diff == --- sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.js (original) +++ sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.js Wed Aug 17 04:27:43 2011 @@ -205,6 +205,12 @@ AccessManager.Ace = { m.setAggregatePrivilege(jcr:readAccessControl, value); m.setAggregatePrivilege(jcr:modifyAccessControl, value); + + m.setAggregatePrivilege(jcr:lockManagement, value); + m.setAggregatePrivilege(jcr:versionManagement, value); + m.setAggregatePrivilege(jcr:nodeTypeManagement, value); + m.setAggregatePrivilege(jcr:retentionManagement, value); + m.setAggregatePrivilege(jcr:lifecycleManagement, value); } else { var writeGranted = $(input[name='privilege@jcr:write'][value=granted]:radio:checked); var writeDenied = $(input[name='privilege@jcr:write'][value=denied]:radio:checked); @@ -227,6 +233,12 @@ AccessManager.Ace = { m.setAggregatePrivilege(jcr:readAccessControl, this.value); m.setAggregatePrivilege(jcr:modifyAccessControl, this.value); + + m.setAggregatePrivilege(jcr:lockManagement, this.value); + m.setAggregatePrivilege(jcr:versionManagement, this.value); + m.setAggregatePrivilege(jcr:nodeTypeManagement, this.value); + m.setAggregatePrivilege(jcr:retentionManagement, this.value); + m.setAggregatePrivilege(jcr:lifecycleManagement, this.value); }); $(input[name='privilege@jcr:write']:radio).bind(change, function(e) { Modified: sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.min.js URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/src/main/resources/js/accessmanager/accessmanager.min.js
svn commit: r1150196 - /sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/FileDataStore.java
Author: enorman Date: Sat Jul 23 19:24:14 2011 New Revision: 1150196 URL: http://svn.apache.org/viewvc?rev=1150196view=rev Log: SLING-2131 handle special characters in the generated filename that are not allowed by windows Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/FileDataStore.java Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/FileDataStore.java URL: http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/FileDataStore.java?rev=1150196r1=1150195r2=1150196view=diff == --- sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/FileDataStore.java (original) +++ sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/FileDataStore.java Sat Jul 23 19:24:14 2011 @@ -148,7 +148,11 @@ public class FileDataStore { final int pos = url.lastIndexOf('/'); final String name = url.substring(pos + 1); final String filename = (hint == null ? rsrc : hint) + '-' + name + '-' + getNextSerialNumber() + .ser; -final File file = this.getDataFile(filename); + +//replace special characters from the filename that are not allowed by the OS +final String filename2 = filename.replaceAll([\\*\/\\[\\]\\:\\;\\|\\=\\,]+, _); // Windows + +final File file = this.getDataFile(filename2); this.copyToLocalStorage(stream, file);
svn commit: r1149041 - in /sling/trunk: maven/archetypes/launchpad-standalone/ maven/archetypes/launchpad-webapp/ samples/usermanager-ui/
Author: enorman Date: Thu Jul 21 05:35:49 2011 New Revision: 1149041 URL: http://svn.apache.org/viewvc?rev=1149041view=rev Log: svn:ignore eclipse project files Modified: sling/trunk/maven/archetypes/launchpad-standalone/ (props changed) sling/trunk/maven/archetypes/launchpad-webapp/ (props changed) sling/trunk/samples/usermanager-ui/ (props changed) Propchange: sling/trunk/maven/archetypes/launchpad-standalone/ -- --- svn:ignore (original) +++ svn:ignore Thu Jul 21 05:35:49 2011 @@ -1 +1,3 @@ target +.project +.settings Propchange: sling/trunk/maven/archetypes/launchpad-webapp/ -- --- svn:ignore (original) +++ svn:ignore Thu Jul 21 05:35:49 2011 @@ -1 +1,3 @@ target +.project +.settings Propchange: sling/trunk/samples/usermanager-ui/ -- --- svn:ignore (original) +++ svn:ignore Thu Jul 21 05:35:49 2011 @@ -1 +1,4 @@ target +.classpath +.settings +.project
svn commit: r1137043 - in /sling/trunk/bundles/jcr/resource/src: main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolver.java test/java/org/apache/sling/jcr/resource/internal/JcrResourceR
Author: enorman Date: Fri Jun 17 21:40:03 2011 New Revision: 1137043 URL: http://svn.apache.org/viewvc?rev=1137043view=rev Log: SLING-2093 empty path should map to the root Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolver.java sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverTest.java Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolver.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolver.java?rev=1137043r1=1137042r2=1137043view=diff == --- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolver.java (original) +++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolver.java Fri Jun 17 21:40:03 2011 @@ -666,6 +666,9 @@ public class JcrResourceResolver // and then we have the mapped path to work on mappedPath = buf.toString(); +} else { +// root if no segments + mappedPath = /; } LOGGER.debug(map: Alias mapping resolves to path {}, mappedPath); Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverTest.java?rev=1137043r1=1137042r2=1137043view=diff == --- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverTest.java (original) +++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverTest.java Fri Jun 17 21:40:03 2011 @@ -41,7 +41,6 @@ import javax.servlet.http.HttpSession; import junitx.util.PrivateAccessor; -import org.apache.jackrabbit.api.security.principal.PrincipalManager; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.sling.api.SlingConstants; import org.apache.sling.api.resource.NonExistingResource; @@ -1624,6 +1623,11 @@ public class JcrResourceResolverTest ext assertEquals(path, mapped); } +public void testMapEmptyPath() throws Exception { +String mapped = resResolver.map(); +assertEquals(/, mapped); +} + public void testMapExtensionFragmentQuery() throws Exception { String path = rootNode.getPath(); String mapped = resResolver.map(path);
svn commit: r1125779 - in /sling/trunk/bundles/jcr: jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ jackrabbit-accessmanager/src/main/resources/OSGI-INF/meta
Author: enorman Date: Sat May 21 19:51:21 2011 New Revision: 1125779 URL: http://svn.apache.org/viewvc?rev=1125779view=rev Log: cleanup metatype labels Added: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractPostServlet.java (with props) Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/resources/OSGI-INF/metatype/metatype.properties sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/DeleteAuthorizableServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateUserServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/resource/AuthorizableResourceProvider.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/resources/OSGI-INF/metatype/metatype.properties Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java?rev=1125779r1=1125778r2=1125779view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java Sat May 21 19:51:21 2011 @@ -68,7 +68,8 @@ import org.apache.sling.servlets.post.Sl * ddFailure. HTML explains the failure./dd * /dl * - * @scr.component immediate=true + * @scr.component immediate=true label=%deleteAces.post.operation.name + *description=%deleteAces.post.operation.description * @scr.service interface=javax.servlet.Servlet * @scr.service interface=org.apache.sling.jcr.jackrabbit.accessmanager.DeleteAces * @scr.property name=sling.servlet.resourceTypes value=sling/servlet/default Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java?rev=1125779r1=1125778r2=1125779view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java Sat May 21 19:51:21 2011 @@ -93,7 +93,8 @@ import org.apache.sling.jcr.jackrabbit.a * /pre * /code * - * @scr.component immediate=true + * @scr.component immediate=true label=%getAcl.get.operation.name + *description=%getAcl.get.operation.description * @scr.service interface=javax.servlet.Servlet * @scr.service interface=org.apache.sling.jcr.jackrabbit.accessmanager.GetAcl * @scr.property name=sling.servlet.resourceTypes value=sling/servlet/default Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java?rev=1125779r1=1125778r2=1125779view=diff
svn commit: r1124538 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/
Author: enorman Date: Thu May 19 05:24:07 2011 New Revision: 1124538 URL: http://svn.apache.org/viewvc?rev=1124538view=rev Log: SLING-2083 AccessManager permissions manipulation services that mirror the functionality of the REST operations for programmatic access management code. Added: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/DeleteAces.java (with props) sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java (with props) sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java (with props) sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ModifyAce.java (with props) Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/DeleteAcesServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java sling/trunk/launchpad/builder/src/main/bundles/list.xml Added: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/DeleteAces.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/DeleteAces.java?rev=1124538view=auto == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/DeleteAces.java (added) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/DeleteAces.java Thu May 19 05:24:07 2011 @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * License); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.sling.jcr.jackrabbit.accessmanager; + +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +/** + * The codeDeleteAces/code service api. + * p + * This interface is not intended to be implemented by bundles. It is + * implemented by this bundle and may be used by client bundles. + * /p + */ +public interface DeleteAces { + + /** +* Deletes one or more ACEs from the access control list of a resource. +* +* @param jcrSession the JCR session of the user updating the user +* @param resourcePath The path of the resource to update the ACL for (required) +* @param principalNamesToDelete An array of ace principal names to delete.. (required) +* @throws RepositoryException +*/ + public void deleteAces(Session jcrSession, + String resourcePath, + String [] principalNamesToDelete + ) throws RepositoryException; + +} Propchange: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/DeleteAces.java -- svn:eol-style = native Added: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java?rev=1124538view=auto == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit
svn commit: r1100046 - /sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java
Author: enorman Date: Fri May 6 04:29:01 2011 New Revision: 1100046 URL: http://svn.apache.org/viewvc?rev=1100046view=rev Log: revert change from revision 1100034 that checked in by accident. Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java?rev=1100046r1=1100045r2=1100046view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java Fri May 6 04:29:01 2011 @@ -243,6 +243,15 @@ public class AuthorizablePrivilegesInfoI return true; } } + + //check if the user is a member of the 'User administrator' group + Authorizable userAdmin = userManager.getAuthorizable(this.userAdminGroupName); + if (userAdmin instanceof Group) { + boolean isMember = ((Group)userAdmin).isMember(currentUser); + if (isMember) { + return true; + } + } } } catch (RepositoryException e) { log.warn(Failed to determine if {} can remove authorizable {}, jcrSession.getUserID(), groupId);
svn commit: r1099482 - in /sling/trunk: bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ launchpad/integration-tests/src/main/java/org/apache/sling/l
Author: enorman Date: Wed May 4 15:11:25 2011 New Revision: 1099482 URL: http://svn.apache.org/viewvc?rev=1099482view=rev Log: SLING-2069 PW reset through administrator is not possible. Following the jackrabbit model, members of the UserAdmin group can set the password of other users. Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/UpdateUserTest.java sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java?rev=1099482r1=1099481r2=1099482view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java Wed May 4 15:11:25 2011 @@ -17,6 +17,7 @@ package org.apache.sling.jackrabbit.usermanager.impl.post; import java.lang.reflect.Method; +import java.util.Dictionary; import java.util.List; import javax.jcr.Credentials; @@ -24,12 +25,19 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.api.security.user.Authorizable; +import org.apache.jackrabbit.api.security.user.Group; import org.apache.jackrabbit.api.security.user.User; +import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceNotFoundException; import org.apache.sling.api.servlets.HtmlResponse; +import org.apache.sling.commons.osgi.OsgiUtil; +import org.apache.sling.jcr.base.util.AccessControlUtil; import org.apache.sling.servlets.post.Modification; +import org.osgi.service.component.ComponentContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * p @@ -45,7 +53,7 @@ import org.apache.sling.servlets.post.Mo * h4Post Parameters/h4 * dl * dtoldPwd/dt - * ddThe current password for the user (required)/dd + * ddThe current password for the user (required for non-administrators)/dd * dtnewPwd/dt * ddThe new password for the user (required)/dd * dtnewPwdConfirm/dt @@ -63,13 +71,13 @@ import org.apache.sling.servlets.post.Mo * h4Example/h4 * * code - * curl -FoldPwd=oldpassword -FnewPwd=newpassword =FnewPwdConfirm=newpassword http://localhost:8080/system/userManager/user/ieb.changePassword.html + * curl -FoldPwd=oldpassword -FnewPwd=newpassword -FnewPwdConfirm=newpassword http://localhost:8080/system/userManager/user/ieb.changePassword.html * /code * * h4Notes/h4 * * - * @scr.component metatype=no immediate=true + * @scr.component immediate=true * @scr.service interface=javax.servlet.Servlet * @scr.property name=sling.servlet.resourceTypes value=sling/user * @scr.property name=sling.servlet.methods value=POST @@ -78,6 +86,46 @@ import org.apache.sling.servlets.post.Mo public class ChangeUserPasswordServlet extends AbstractUserPostServlet { private static final long serialVersionUID = 1923614318474654502L; +/** + * default log + */ +private final Logger log = LoggerFactory.getLogger(getClass()); + +/** + * The name of the configuration parameter providing the + * name of the group whose members are allowed to reset the password + * of a user without the 'oldPwd' value. + * + * @scr.property valueRef=DEFAULT_USER_ADMIN_GROUP_NAME + */ +private static final String PAR_USER_ADMIN_GROUP_NAME = user.admin.group.name; + +/** + * The default 'User administrator' group name + * + * @see #PAR_USER_ADMIN_GROUP_NAME + */ +private static final String DEFAULT_USER_ADMIN_GROUP_NAME = UserAdmin; + +private String userAdminGroupName = DEFAULT_USER_ADMIN_GROUP_NAME; + +// -- SCR integration - + +/** + * Activates this component. + * + * @param componentContext The OSGi codeComponentContext/code of this + *component. + */ +protected void activate(ComponentContext componentContext) { +super.activate(componentContext); +Dictionary?, ? props = componentContext.getProperties(); + +this.userAdminGroupName = OsgiUtil.toString(props.get
svn commit: r1098913 - in /sling/trunk: bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ launchpad/integration-tests/src/main/java/org/apache/sling/l
Author: enorman Date: Tue May 3 05:29:58 2011 New Revision: 1098913 URL: http://svn.apache.org/viewvc?rev=1098913view=rev Log: SLING-2070 Members of the UserAdmin group can not create a new user Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java?rev=1098913r1=1098912r2=1098913view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java Tue May 3 05:29:58 2011 @@ -24,10 +24,12 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import org.apache.jackrabbit.api.security.user.Authorizable; +import org.apache.jackrabbit.api.security.user.Group; import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.servlets.HtmlResponse; +import org.apache.sling.commons.osgi.OsgiUtil; import org.apache.sling.servlets.post.impl.helper.RequestProperty; import org.apache.sling.jackrabbit.usermanager.impl.resource.AuthorizableResourceProvider; import org.apache.sling.jcr.api.SlingRepository; @@ -105,6 +107,23 @@ public class CreateUserServlet extends A private Boolean selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED; /** + * The name of the configuration parameter providing the + * 'User administrator' group name. + * + * @scr.property valueRef=DEFAULT_USER_ADMIN_GROUP_NAME + */ +private static final String PAR_USER_ADMIN_GROUP_NAME = user.admin.group.name; + +/** + * The default 'User administrator' group name + * + * @see #PAR_USER_ADMIN_GROUP_NAME + */ +private static final String DEFAULT_USER_ADMIN_GROUP_NAME = UserAdmin; + +private String userAdminGroupName = DEFAULT_USER_ADMIN_GROUP_NAME; + +/** * The JCR Repository we access to resolve resources * * @scr.reference @@ -155,6 +174,10 @@ public class CreateUserServlet extends A } else { selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED; } + +this.userAdminGroupName = OsgiUtil.toString(props.get(PAR_USER_ADMIN_GROUP_NAME), + DEFAULT_USER_ADMIN_GROUP_NAME); +log.info(User Admin Group Name {}, this.userAdminGroupName); } /* @@ -176,6 +199,18 @@ public class CreateUserServlet extends A UserManager um = AccessControlUtil.getUserManager(currentSession); User currentUser = (User) um.getAuthorizable(currentSession.getUserID()); administrator = currentUser.isAdmin(); + +if (!administrator) { + //check if the user is a member of the 'User administrator' group + Authorizable userAdmin = um.getAuthorizable(this.userAdminGroupName); + if (userAdmin instanceof Group) { + boolean isMember = ((Group)userAdmin).isMember(currentUser); + if (isMember) { + administrator = true; + } + } + +} } catch ( Exception ex ) { log.warn(Failed to determin if the user is an admin, assuming not. Cause: +ex.getMessage()); administrator = false; Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java?rev=1098913r1=1098912r2=1098913view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java Tue May 3 05:29:58
svn commit: r1098430 [4/4] - in /sling/trunk/samples: ./ accessmanager-ui/ accessmanager-ui/.settings/ accessmanager-ui/src/ accessmanager-ui/src/main/ accessmanager-ui/src/main/java/ accessmanager-ui
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp?rev=1098430view=auto == --- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp (added) +++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp Sun May 1 22:46:46 2011 @@ -0,0 +1,203 @@ +% +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var privilegesInfo = sling.getService(Packages.org.apache.sling.jackrabbit.usermanager.AuthorizablePrivilegesInfo); +var authorizable = resource.adaptTo(Packages.org.apache.jackrabbit.api.security.user.Authorizable); +var canEdit = privilegesInfo.canUpdateProperties(currentSession, authorizable.getID()); +var canRemove = privilegesInfo.canRemove(currentSession, authorizable.getID()); +var canUpdateMembers = privilegesInfo.canUpdateGroupMembers(currentSession, authorizable.getID()); +var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap); +var isMe = authorizable.getID().equals(request.getRemoteUser()); + +var rb = request.getResourceBundle(org.apache.sling.usermgr.Resources, null); + +var propNameSet = new Packages.java.util.TreeSet(valueMap.keySet()); +propNameSet.remove(declaredMemberOf); +propNameSet.remove(memberOf); + +var propKeysCsv = rb.getString(csv.static.user.prop.keys); +var items = []; +if (propKeysCsv != null propKeysCsv.length() 0 !propKeysCsv.equals(csv.static.user.prop.keys)) { +items = propKeysCsv.split(,); +} +for (var i=0; i items.length; i++) { +propNameSet.add(items[i]); +} + +function propLabel(propName) { +var key = prop.label. + propName; +var value = rb.getString(key); +if (value == key) { +return propName; +} +return value; +}; +function format(key, args) { +var value = rb.getString(key); +return Packages.java.text.MessageFormat.format(value, args); +} +function displayName(path) { +var res = request.getResourceResolver().resolve(path); +var resValueMap = res.adaptTo(Packages.org.apache.sling.api.resource.ValueMap); +var value = resValueMap.get(displayName); +if (value == null) { +value = path.substring(path.lastIndexOf('/') + 1) +} +return value; +} +% +div class=ui-widget ui-widget-content ui-corner-all usermgmt-body id=update-user-body +h3 class=ui-widget-header ui-corner-all usermgmt-header%=format(canEdit ? header.update.user : header.view.user, authorizable.getID())%/h3 + +div class=info-msg-block style=display:none; +div class=ui-state-highlight ui-corner-all +p +span class=ui-icon ui-icon-info/span +span class=info-msg-text/span +/p +/div +/div + +form id=update-user-form accept-charset=UTF-8 +action=%=request.contextPath%%=resource.path %.update.html +method=post +fieldset +input type=hidden value=UTF-8 name=_charset_ / +input id=redirect type=hidden name=:redirect value=%=request.contextPath%%=resource.path %.html / + +%-- Member Of --% +% var key = memberOf; + var value = valueMap.get(key); +% +div class=prop-line ui-helper-clearfix +label for=%=key%%=propLabel(key)%:/label + +ol id=%=key% +li id=%=key%__empty %= value.length == 0 ? : style='display:none' %%=rb.getString(memberOf.empty)%/li +% + for (i = 0; i value.length; i++) { + var group = value[i]; +% +li +a href=%=request.contextPath%%=group%.html%=displayName(group)%/a +/li +% + }/* endfor */ +% +/ol +/div + +% +var it =
svn commit: r1098430 [2/4] - in /sling/trunk/samples: ./ accessmanager-ui/ accessmanager-ui/.settings/ accessmanager-ui/src/ accessmanager-ui/src/main/ accessmanager-ui/src/main/java/ accessmanager-ui
Added: sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp?rev=1098430view=auto == --- sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp (added) +++ sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp Sun May 1 22:46:46 2011 @@ -0,0 +1,122 @@ +% +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var privilegesInfo = new Packages.org.apache.sling.jcr.jackrabbit.accessmanager.PrivilegesInfo(); +if (!privilegesInfo.canReadAccessControl(currentNode)) { + //user can't read the ACL. + response.sendError(403); +} else { + if (!response.isCommitted()) { + //don't allow caching of this page +response.setDateHeader(Expires, 0); +response.setHeader(Pragma, no-cache); +response.setHeader(Cache-control, no-cache, must-revalidate); +} + + var canModify = privilegesInfo.canModifyAccessControl(currentNode); + + var rb = request.getResourceBundle(org.apache.sling.accessmanager.Resources, null); + + function format(key, args) { + var value = rb.getString(key); + return Packages.java.text.MessageFormat.format(value, args); + } +% + +div class=ui-widget ui-widget-content ui-corner-all accessmgmt-body id=update-acl-block +% if (canModify) { % +div id='modify-acl-header' class=ui-widget-header ui-corner-all ui-helper-clearfix +h3 class=accessmgmt-header%=format(header.update.acl, [currentNode.name])%/h3 +span id=add-ace-block +a href=%=request.contextPath%%=resource.path%.ace.html%=rb.getString(menu.link.add.ace)%/a +/span +/div +% } else { /*end if(canModify) */ % +h3 class=ui-widget-header ui-corner-all accessmgmt-header%=format(header.view.acl, [currentNode.name])%/h3 +% } /* endelse */ % + +% + var accessMap = privilegesInfo.getDeclaredAccessRights(currentNode); + if (accessMap.isEmpty()) { +% +div id=acl-list-empty class=ui-corner-all ui-state-highlight%=rb.getString(msg.acl.empty)%/div +% } else { % + table id=acl-list width=100% class=ui-widget ui-widget-content ui-corner-all +thead class=ui-widget-header +tr +th align=left%=rb.getString(column.authorizable.header)%/th +th align=left width=125px%=rb.getString(column.privileges.header)%/th +th align=left width=75px#160;/th +/tr +/thead +tbody + % + var jcrSession = request.getResourceResolver().adaptTo(Packages.javax.jcr.Session); + var userManager = Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession); + + var entrySet = accessMap.entrySet(); + var iterator = entrySet.iterator(); + while (iterator.hasNext()) { + var entry = iterator.next(); + var principal = entry.getKey(); + var accessrights = entry.getValue(); + + var userDisplayName = principal.getName(); + var authorizable = userManager.getAuthorizable(principal.getName()); + if (authorizable) { + var values = authorizable.getProperty(displayName); + if (values != null values.length 0) { + userDisplayName = values[0].getString(); + } + } + % +tr +td +a title='%=rb.getString(canModify ? menu.link.update.ace : menu.link.view.ace)%' + href=%=request.contextPath%%=currentNode.path%.ace.html?pid=%=principal.getName()%%=userDisplayName%/a +/td +td width=125px + %=accessrights.getPrivilegeSetDisplayName(request.locale)% +
svn commit: r1098433 - in /sling/trunk/samples: accessmanager-ui/ usermanager-ui/
Author: enorman Date: Sun May 1 22:52:33 2011 New Revision: 1098433 URL: http://svn.apache.org/viewvc?rev=1098433view=rev Log: ignore build artifacts Modified: sling/trunk/samples/accessmanager-ui/ (props changed) sling/trunk/samples/usermanager-ui/ (props changed) Propchange: sling/trunk/samples/accessmanager-ui/ -- --- svn:ignore (added) +++ svn:ignore Sun May 1 22:52:33 2011 @@ -0,0 +1 @@ +target Propchange: sling/trunk/samples/usermanager-ui/ -- --- svn:ignore (added) +++ svn:ignore Sun May 1 22:52:33 2011 @@ -0,0 +1 @@ +target
svn commit: r1098434 - /sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java
Author: enorman Date: Sun May 1 22:59:23 2011 New Revision: 1098434 URL: http://svn.apache.org/viewvc?rev=1098434view=rev Log: correct some errors in the javadocs Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java?rev=1098434r1=1098433r2=1098434view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ChangeUserPasswordServlet.java Sun May 1 22:59:23 2011 @@ -33,10 +33,10 @@ import org.apache.sling.servlets.post.Mo /** * p - * Changes the password associated with a user. a new group. Maps on to nodes of resourceType codesling/groups/code like + * Changes the password associated with a user. Maps on to nodes of resourceType codesling/user/code like * code/rep:system/rep:userManager/rep:users/ae/fd/3e/ieb/code mapped to a resource url * code/system/userManager/user/ieb/code. This servlet responds at - * code/system/userManager/user/ieb.changePassword.create.html/code + * code/system/userManager/user/ieb.changePassword.html/code * /p * h4Methods/h4 * ul @@ -54,11 +54,11 @@ import org.apache.sling.servlets.post.Mo * h4Response/h4 * dl * dt200/dt - * ddSucess sent with no body/dd + * ddSuccess sent with no body/dd * dt404/dt * ddIf the user was not found./dd * dt500/dt - * ddFailure, including group already exists. HTML explains the failure./dd + * ddFailure, including password validation errors. HTML explains the failure./dd * /dl * h4Example/h4 *
svn commit: r1098436 - in /sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post: CreateGroupServlet.java CreateUserServlet.java
Author: enorman Date: Sun May 1 23:06:30 2011 New Revision: 1098436 URL: http://svn.apache.org/viewvc?rev=1098436view=rev Log: SLING-2066 improve error reporting for validation errors Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java?rev=1098436r1=1098435r2=1098436view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java Sun May 1 23:06:30 2011 @@ -95,7 +95,7 @@ public class CreateGroupServlet extends // check that the submitted parameter values have valid values. final String principalName = request.getParameter(SlingPostConstants.RP_NODE_NAME); -if (principalName == null) { +if (principalName == null || principalName.length() == 0) { throw new RepositoryException(Group name was not submitted); } @@ -104,41 +104,37 @@ public class CreateGroupServlet extends throw new RepositoryException(JCR Session not found); } -try { -UserManager userManager = AccessControlUtil.getUserManager(session); -Authorizable authorizable = userManager.getAuthorizable(principalName); - -if (authorizable != null) { -// principal already exists! -throw new RepositoryException( -A principal already exists with the requested name: -+ principalName); -} else { -Group group = userManager.createGroup(new Principal() { -public String getName() { -return principalName; -} -}); - -String groupPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX -+ group.getID(); - -MapString, RequestProperty reqProperties = collectContent( -request, response, groupPath); -response.setPath(groupPath); -response.setLocation(externalizePath(request, groupPath)); -response.setParentLocation(externalizePath(request, - AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PATH)); -changes.add(Modification.onCreated(groupPath)); - -// write content from form -writeContent(session, group, reqProperties, changes); - -// update the group memberships -updateGroupMembership(request, group, changes); -} -} catch (RepositoryException re) { -throw new RepositoryException(Failed to create new group., re); +UserManager userManager = AccessControlUtil.getUserManager(session); +Authorizable authorizable = userManager.getAuthorizable(principalName); + +if (authorizable != null) { +// principal already exists! +throw new RepositoryException( +A principal already exists with the requested name: ++ principalName); +} else { +Group group = userManager.createGroup(new Principal() { +public String getName() { +return principalName; +} +}); + +String groupPath = AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PREFIX ++ group.getID(); + +MapString, RequestProperty reqProperties = collectContent( +request, response, groupPath); +response.setPath(groupPath); +response.setLocation(externalizePath(request, groupPath)); +response.setParentLocation(externalizePath(request, +AuthorizableResourceProvider.SYSTEM_USER_MANAGER_GROUP_PATH)); +changes.add(Modification.onCreated(groupPath)); + +// write content from form +writeContent(session, group, reqProperties, changes); + +// update the group memberships +updateGroupMembership(request, group, changes); } } } Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit
svn commit: r1098439 - /sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java
Author: enorman Date: Sun May 1 23:13:21 2011 New Revision: 1098439 URL: http://svn.apache.org/viewvc?rev=1098439view=rev Log: SLING-2067 Added null check to AuthorizablePrivilegesInfo to fix NPE when used in a script that is being rendered for the anonymous user Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java?rev=1098439r1=1098438r2=1098439view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/AuthorizablePrivilegesInfoImpl.java Sun May 1 23:13:21 2011 @@ -23,6 +23,7 @@ import java.util.Dictionary; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.servlet.Servlet; import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.Group; @@ -31,6 +32,9 @@ import org.apache.jackrabbit.api.securit import org.apache.sling.commons.osgi.OsgiUtil; import org.apache.sling.jackrabbit.usermanager.AuthorizablePrivilegesInfo; import org.apache.sling.jcr.base.util.AccessControlUtil; +import org.osgi.framework.BundleContext; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.ServiceReference; import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -110,16 +114,18 @@ public class AuthorizablePrivilegesInfoI UserManager userManager = AccessControlUtil.getUserManager(jcrSession); Authorizable currentUser = userManager.getAuthorizable(jcrSession.getUserID()); - if (((User)currentUser).isAdmin()) { - return true; //admin user has full control - } - - //check if the user is a member of the 'Group administrator' group - Authorizable groupAdmin = userManager.getAuthorizable(this.groupAdminGroupName); - if (groupAdmin instanceof Group) { - boolean isMember = ((Group)groupAdmin).isMember(currentUser); - if (isMember) { - return true; + if (currentUser != null) { + if (((User)currentUser).isAdmin()) { + return true; //admin user has full control + } + + //check if the user is a member of the 'Group administrator' group + Authorizable groupAdmin = userManager.getAuthorizable(this.groupAdminGroupName); + if (groupAdmin instanceof Group) { + boolean isMember = ((Group)groupAdmin).isMember(currentUser); + if (isMember) { + return true; + } } } } catch (RepositoryException e) { @@ -133,23 +139,46 @@ public class AuthorizablePrivilegesInfoI */ public boolean canAddUser(Session jcrSession) { try { + //if self-registration is enabled, then anyone can create a user + if (componentContext != null) { + String filter = ((sling.servlet.resourceTypes=sling/users)(|(sling.servlet.methods=POST)(sling.servlet.selectors=create))); + BundleContext bundleContext = componentContext.getBundleContext(); + ServiceReference[] serviceReferences = bundleContext.getServiceReferences(Servlet.class.getName(), filter); + if (serviceReferences != null) { + String propName = self.registration.enabled; + for (ServiceReference serviceReference : serviceReferences) { + Object propValue = serviceReference.getProperty(propName); + if (propValue != null) { + boolean
svn commit: r1098450 - /sling/trunk/launchpad/builder/src/main/bundles/list.xml
Author: enorman Date: Mon May 2 00:23:46 2011 New Revision: 1098450 URL: http://svn.apache.org/viewvc?rev=1098450view=rev Log: SLING-1847 use the snapshot build of the o.a.s.auth.form bundle to pick up the fixed bug Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/bundles/list.xml?rev=1098450r1=1098449r2=1098450view=diff == --- sling/trunk/launchpad/builder/src/main/bundles/list.xml (original) +++ sling/trunk/launchpad/builder/src/main/bundles/list.xml Mon May 2 00:23:46 2011 @@ -81,7 +81,7 @@ bundle groupIdorg.apache.sling/groupId artifactIdorg.apache.sling.auth.form/artifactId -version1.0.2/version +version1.0.3-SNAPSHOT/version /bundle bundle groupIdorg.apache.sling/groupId
svn commit: r1098452 - /sling/trunk/launchpad/builder/src/main/bundles/list.xml
Author: enorman Date: Mon May 2 00:37:23 2011 New Revision: 1098452 URL: http://svn.apache.org/viewvc?rev=1098452view=rev Log: SLING-2066 use the snapshot build of the usermanager bundle to pick up the fixed bug Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/bundles/list.xml?rev=1098452r1=1098451r2=1098452view=diff == --- sling/trunk/launchpad/builder/src/main/bundles/list.xml (original) +++ sling/trunk/launchpad/builder/src/main/bundles/list.xml Mon May 2 00:37:23 2011 @@ -353,7 +353,7 @@ bundle groupIdorg.apache.sling/groupId artifactIdorg.apache.sling.jcr.jackrabbit.usermanager/artifactId -version2.1.0/version +version2.1.1-SNAPSHOT/version /bundle bundle groupIdorg.apache.sling/groupId
svn commit: r1098453 - in /sling/trunk/samples: accessmanager-ui/README.txt accessmanager-ui/pom.xml usermanager-ui/README.txt
Author: enorman Date: Mon May 2 00:38:33 2011 New Revision: 1098453 URL: http://svn.apache.org/viewvc?rev=1098453view=rev Log: SLING-2065, SLING-1562 updated readme Modified: sling/trunk/samples/accessmanager-ui/README.txt sling/trunk/samples/accessmanager-ui/pom.xml sling/trunk/samples/usermanager-ui/README.txt Modified: sling/trunk/samples/accessmanager-ui/README.txt URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/README.txt?rev=1098453r1=1098452r2=1098453view=diff == --- sling/trunk/samples/accessmanager-ui/README.txt (original) +++ sling/trunk/samples/accessmanager-ui/README.txt Mon May 2 00:38:33 2011 @@ -1,50 +1,47 @@ -Sling user management UI sample +Sling access manager UI sample - WHY THIS SAMPLE? -This demonstrates some sample UI for user self-regirstration and profile update. +This demonstrates some sample UI for viewing/updating the access control +lists of JCR nodes. + +PRE-REQUISITES +-- +This sample uses the i18n support provided by the org.apache.sling.i18n bundle, +so that bundle must be installed into your sling instance first. + +If using the sling launchpad, you will need to remove the following scripts from your +jackrabbit repository since this sample bundle provides a different implementation of +those scripts. +/apps/sling/servlet/default/ace.html.esp +/apps/sling/servlet/default/acl.html.esp HOW TO INSTALL -- Build this bundle and install it in Sling. -For example, if Sling is running on port 8080 (which happens if you start -the launchpad/testing module with mvn jetty:run), this will build and +For example, if Sling is running on port (which happens if you start +the launchpad/builder module with mvn launchpad:run), this will build and install it: -mvn -P autoInstallBundle clean install -Dsling.url=http://localhost:8080/system/console +mvn -P autoInstallBundle clean install -Dsling.url=http://localhost:/system/console To verify that the bundle is correctly installed: -1) http://localhost:8080/apps/espblog/html.esp must return the html.esp +1) http://localhost:/libs/sling/accessmanager/page.html.esp must return the page.html.esp script. -2) The console at http://localhost:8080/system/console/bundles must -list the bundle named Sling - ESP blog sample as active. +2) The console at http://localhost:/system/console/bundles must +list the bundle named Apache Sling Access Manager UI sample as active. HOW TO TEST --- -Start by logging in at http://localhost:8080/?sling:authRequestLogin=true, -using username=admin and password=admin (or use the login link on the -/index.html page). - -Once logged in, /index.html should say you are currently logged in as -user admin to workspace default. - -Then, http://localhost:8080/content/espblog/*.html should display the Sling ESP -blog sample page, with the Home/Admin/New Post/... menu. - -If you get Sling's default HTML rendition instead (Resource dumped by -HtmlRendererServlet) that's probably because the path-based-rtp bundle -is not installed. Run the above mvn...clean install command in the -sling/samples/path-based-rtp folder to install it, and reload the page. +Login as the admin user. -Create a new post using the New Post menu. +Open http://localhost:/[node_path_here].acl.html to view the access control list for +a JCR node where [node_path_here] is replaced with the path of the node. -The post can include an attachment, if that's an image the included -ThumbnailGeneratorService generates thumbnails in different sizes, displayed -on the post's page. This happens asynchronously, so depending on your -machine's speed the thumbnails might only appear after a few seconds. +Use the links on the page to add/update/remove access control entries to the list +to provision privileges for users or groups. -The ESP scripts are found under /apps/espblog in the repository. Modified: sling/trunk/samples/accessmanager-ui/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/pom.xml?rev=1098453r1=1098452r2=1098453view=diff == --- sling/trunk/samples/accessmanager-ui/pom.xml (original) +++ sling/trunk/samples/accessmanager-ui/pom.xml Mon May 2 00:38:33 2011 @@ -99,7 +99,6 @@ configuration instructions Export-Package -org.apache.sling.accessmanager /Export-Package Sling-Bundle-Resources /images, Modified: sling/trunk/samples/usermanager-ui/README.txt URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/README.txt?rev=1098453r1=1098452r2=1098453view=diff == --- sling/trunk/samples
svn commit: r1095594 - /sling/trunk/launchpad/builder/src/main/bundles/list.xml
Author: enorman Date: Thu Apr 21 03:48:02 2011 New Revision: 1095594 URL: http://svn.apache.org/viewvc?rev=1095594view=rev Log: SLING-1847 use the snapshot build of the o.a.s.auth.form bundle to pick up the fixed bug Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml Modified: sling/trunk/launchpad/builder/src/main/bundles/list.xml URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/bundles/list.xml?rev=1095594r1=1095593r2=1095594view=diff == --- sling/trunk/launchpad/builder/src/main/bundles/list.xml (original) +++ sling/trunk/launchpad/builder/src/main/bundles/list.xml Thu Apr 21 03:48:02 2011 @@ -81,7 +81,7 @@ bundle groupIdorg.apache.sling/groupId artifactIdorg.apache.sling.auth.form/artifactId -version1.0.2/version +version1.0.3-SNAPSHOT/version /bundle bundle groupIdorg.apache.sling/groupId
svn commit: r1088070 - in /sling/trunk: bundles/commons/testing/ bundles/jcr/davex/ bundles/jcr/jackrabbit-server/ bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/im
Author: enorman Date: Sat Apr 2 18:15:02 2011 New Revision: 1088070 URL: http://svn.apache.org/viewvc?rev=1088070view=rev Log: SLING-2044 Upgrade to jackrabbit 2.2.5 Added: sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/apache/ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/apache/jackrabbit/ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/apache/jackrabbit/core/ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/apache/jackrabbit/core/query/ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/apache/jackrabbit/core/query/lucene/ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/org/apache/jackrabbit/core/query/lucene/tika-config.xml (with props) Modified: sling/trunk/bundles/commons/testing/pom.xml sling/trunk/bundles/jcr/davex/pom.xml sling/trunk/bundles/jcr/jackrabbit-server/pom.xml sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/security/PluggableDefaultAccessManager.java sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/security/PluggableDefaultLoginModule.java sling/trunk/bundles/jcr/webdav/pom.xml sling/trunk/launchpad/builder/src/main/bundles/list.xml Modified: sling/trunk/bundles/commons/testing/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/pom.xml?rev=1088070r1=1088069r2=1088070view=diff == --- sling/trunk/bundles/commons/testing/pom.xml (original) +++ sling/trunk/bundles/commons/testing/pom.xml Sat Apr 2 18:15:02 2011 @@ -87,19 +87,19 @@ dependency groupIdorg.apache.jackrabbit/groupId artifactIdjackrabbit-api/artifactId -version2.1.1/version +version2.2.5/version scopecompile/scope /dependency dependency groupIdorg.apache.jackrabbit/groupId artifactIdjackrabbit-jcr-commons/artifactId -version2.1.1/version +version2.2.5/version scopecompile/scope /dependency dependency groupIdorg.apache.jackrabbit/groupId artifactIdjackrabbit-core/artifactId -version2.1.1/version +version2.2.5/version scopecompile/scope /dependency dependency Modified: sling/trunk/bundles/jcr/davex/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/davex/pom.xml?rev=1088070r1=1088069r2=1088070view=diff == --- sling/trunk/bundles/jcr/davex/pom.xml (original) +++ sling/trunk/bundles/jcr/davex/pom.xml Sat Apr 2 18:15:02 2011 @@ -95,7 +95,7 @@ dependency groupIdorg.apache.jackrabbit/groupId artifactIdjackrabbit-jcr-server/artifactId -version2.1.1/version +version2.2.5/version scopecompile/scope /dependency Modified: sling/trunk/bundles/jcr/jackrabbit-server/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-server/pom.xml?rev=1088070r1=1088069r2=1088070view=diff == --- sling/trunk/bundles/jcr/jackrabbit-server/pom.xml (original) +++ sling/trunk/bundles/jcr/jackrabbit-server/pom.xml Sat Apr 2 18:15:02 2011 @@ -94,9 +94,10 @@ org.apache.sling.jcr.jackrabbit.server.impl.Activator /Bundle-Activator Export-Package - org.apache.sling.jcr.jackrabbit.server;version=2.1.0, - org.apache.sling.jcr.jackrabbit.server.security.*;version=2.0.4-incubator, - org.apache.jackrabbit.core.security.principal;version=2.1.1 + org.apache.sling.jcr.jackrabbit.server;version=2.1.0, + org.apache.sling.jcr.jackrabbit.server.security;version=2.0.4-incubator, + org.apache.sling.jcr.jackrabbit.server.security.accessmanager;version=2.1.0, + org.apache.jackrabbit.core.security.principal;version=2.2.5 /Export-Package Private-Package org.apache.sling.jcr.jackrabbit.server.impl.*, @@ -215,7 +216,7 @@ dependency groupIdorg.apache.jackrabbit/groupId artifactIdjackrabbit-core/artifactId -version2.1.1/version +version2.2.5/version scopecompile/scope /dependency dependency Modified: sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server
svn commit: r1085787 - in /sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling: explorer/js/explorer.js servlet/default/explorer/edit.esp servlet/default/explorer/explorer.esp servle
Author: enorman Date: Sat Mar 26 19:12:29 2011 New Revision: 1085787 URL: http://svn.apache.org/viewvc?rev=1085787view=rev Log: SLING-2019 explorer doesn't work when sling is used in a non-root context Modified: sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/explorer.js sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/explorer.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/node.esp Modified: sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/explorer.js URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/explorer.js?rev=1085787r1=1085786r2=1085787view=diff == --- sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/explorer.js (original) +++ sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/explorer.js Sat Mar 26 19:12:29 2011 @@ -19,23 +19,31 @@ /** replace the default get and post jQuery utility functions */ (function($) { +Sling.contextPath = ; +if (Sling.baseurl.lastIndexOf('/') window.location.protocol.length + 3) { + Sling.contextPath = Sling.baseurl.substring(Sling.baseurl.lastIndexOf('/')); +}; + $.ajaxSetup({ timeout: 5 * 60 * 1000 // in ms, 5 minutes }); -$.getRaw = $.get; -$.getJSONRaw = $.getJSON; $.postRaw = $.post; -$.get = function(url, parameters, callback) { - return $.getRaw(Sling.baseurl + url, parameters, callback) -}; -$.getJson = function(url, parameters, callback) { - return $.getJSONRaw(Sling.baseurl + url, parameters, callback) -}; +$.ajaxRaw = $.ajax; $.post = function(url, parameters, callback) { var params = { _charset_:utf-8 }; $.extend(params, parameters); - return $.postRaw(Sling.baseurl + url, parameters, callback) + return $.postRaw(Sling.baseurl + url, parameters, callback); }; +$.ajax = function(settings) { + var url = settings.url; + if (url.charAt(0) == '/' url.indexOf(Sling.contextPath) == -1) { + settings.url = Sling.baseurl + url; + } + if (settings.url settings.url.charAt(0) == '/') { + } +return $.ajaxRaw(settings); + }; + })(jQuery); /** load the initial tree on editor startup */ @@ -164,7 +172,7 @@ load_branch = function( path, callback, }, complete: function( xmlHttpRequest, textStatus) { loadingbranch = false; -if ( textStatus.equals(timeout) ) +if ( textStatus == timeout ) { show_error(Timeout!); } Modified: sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit.esp URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit.esp?rev=1085787r1=1085786r2=1085787view=diff == --- sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit.esp (original) +++ sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit.esp Sat Mar 26 19:12:29 2011 @@ -80,7 +80,7 @@ if ( mixinTypes || canModifyProperties ) { % h3mixin types/h3 div id=property_element_%= mixinTypesId % class=multivalued property_element -form id=properties_form_%= mixinTypesId % action=%= path % method=post +form id=properties_form_%= mixinTypesId % action=%= request.getContextPath() %%= path % method=post fieldset label for=%= mixinTypesId %%= mixinTypesId %/label % @@ -131,7 +131,7 @@ } if ( !id.equals( primaryNodeTypeId ) !id.equals( mixinTypesId ) ) { % div id=property_element_%= id % class=% if ( isMultivalueProperty ) {% multivalued % } % property_element -form id=properties_form_%= id % action=%=path% method=post +form id=properties_form_%= id % action=%= request.getContextPath() %%=path% method=post fieldset label for=%= id %%= id % % if (isProperty) { % Modified: sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/explorer.esp URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/explorer.esp?rev=1085787r1=1085786r2=1085787view=diff
svn commit: r1085250 [1/2] - in /sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling: explorer/css/ explorer/js/ servlet/default/explorer/ servlet/default/explorer/edit/
Author: enorman Date: Fri Mar 25 04:18:18 2011 New Revision: 1085250 URL: http://svn.apache.org/viewvc?rev=1085250view=rev Log: SLING-1756 [explorer] should use spaces instead of tabs Modified: sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/css/explorer.css sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/css/jquery-ui.css sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/explorer.js sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/js/ui.datetimebox.js sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/edit/sling_redirect.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/explorer.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/item.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/node.esp sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/servlet/default/explorer/search.esp Modified: sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/css/explorer.css URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/css/explorer.css?rev=1085250r1=1085249r2=1085250view=diff == --- sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/css/explorer.css (original) +++ sling/trunk/bundles/extensions/explorer/src/main/resources/libs/sling/explorer/css/explorer.css Fri Mar 25 04:18:18 2011 @@ -22,7 +22,7 @@ /* # */ /* --- Main-Seperator --- */ /* # */ - + /* : */ /* --- Sub-Seperator ---*/ /* : */ @@ -31,9 +31,9 @@ * { - margin: 0; - padding: 0; - border: none; +margin: 0; +padding: 0; +border: none; } html, body @@ -42,18 +42,18 @@ html, body html /* shows always scrollbar in Firefox*/ { - overflow: visible; -} - +overflow: visible; +} + body { - font-size: 13px; - color: #545D66; - margin: 0; - padding: 0; - text-align: center; - font-family: Verdana, Arial, Helvetica, sans-serif; - overflow: hidden; +font-size: 13px; +color: #545D66; +margin: 0; +padding: 0; +text-align: center; +font-family: Verdana, Arial, Helvetica, sans-serif; +overflow: hidden; } /* : */ @@ -62,60 +62,60 @@ body h1, h2, h3, h4, h5, h6 { - font-family: Arial, Helvetica, sans-serif; - color: #485573; - margin: 0 0 20px 0; - padding: 0px; +font-family: Arial, Helvetica, sans-serif; +color: #485573; +margin: 0 0 20px 0; +padding: 0px; } - + h1 { - font-size: 22px; - line-height: /**/; +font-size: 22px; +line-height: /**/; } h2 { - font-size: 18px; - line-height: /**/; +font-size: 18px; +line-height: /**/; } h3 { - font-size: 14px; - background-color: #527EA3; - color: #F6FBFE; - padding: 5px 10px; - -moz-border-radius: 5px; - border-radius: 5px; - margin: 0 0 10px 0; +font-size: 14px; +background-color: #527EA3; +color: #F6FBFE; +padding: 5px 10px; +-moz-border-radius: 5px; +border-radius: 5px; +margin: 0 0 10px 0; } h4, h5, h6 { - font-size: 12px; - background-color: #a4bcd0; - color: #FF; - padding: 5px 10px; - -moz-border-radius: 5px; - border-radius: 5px; - margin: 0 0 10px 0; +font-size: 12px; +background-color: #a4bcd0; +color: #FF; +padding: 5px 10px; +-moz-border-radius: 5px; +border-radius: 5px; +margin: 0 0 10px 0; } b, strong, b *, strong * { - font-weight: bold; +font-weight: bold; } i, em, i *, em * { - font-style: italic; +font-style: italic; } ul, ol { - clear: both; -/* margin: 10px 0 10px 35px; */ +clear: both; +/* margin: 10px 0 10px 35px; */ } ul @@ -128,101 +128,101 @@ ol li { - margin: 5px 0; +margin: 5px 0; } p { - line-height: 18px; - margin: 0 0 10px 0; +line-height: 18px; +margin: 0 0 10px 0; } div.hr { - clear: both; - height: 1px; +clear: both; +height: 1px; } hr { - height: 1px
svn commit: r1040015 - /sling/trunk/bundles/extensions/explorer/
Author: enorman Date: Mon Nov 29 05:34:12 2010 New Revision: 1040015 URL: http://svn.apache.org/viewvc?rev=1040015view=rev Log: ignore eclipse project files Modified: sling/trunk/bundles/extensions/explorer/ (props changed) Propchange: sling/trunk/bundles/extensions/explorer/ -- --- svn:ignore (original) +++ svn:ignore Mon Nov 29 05:34:12 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project
svn commit: r995316 - /sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java
Author: enorman Date: Thu Sep 9 05:34:32 2010 New Revision: 995316 URL: http://svn.apache.org/viewvc?rev=995316view=rev Log: SLING-1733 - fix potential ClassCastException Modified: sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java Modified: sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java?rev=995316r1=995315r2=995316view=diff == --- sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java (original) +++ sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java Thu Sep 9 05:34:32 2010 @@ -114,7 +114,7 @@ public class BundleResourceProvider impl public IteratorResource listChildren(final Resource parent) throws SlingException { - if (((BundleResource)parent).getBundle() == this.bundle) { + if (parent instanceof BundleResource ((BundleResource)parent).getBundle() == this.bundle) { // bundle resources can handle this request directly when the parent // resource is in the same bundle as this provider. return ((BundleResource) parent).listChildren();
svn commit: r993606 - in /sling/trunk: bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/ launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp
Author: enorman Date: Wed Sep 8 05:10:48 2010 New Revision: 993606 URL: http://svn.apache.org/viewvc?rev=993606view=rev Log: SLING-1733 - BundleResourceProvider would fail to find resources when multiple bundles had the same Sling-Bundle-Resources path Added: sling/trunk/launchpad/test-services/src/main/resources/SLING-INF/res/sling-test/sling/SLING-1733/ sling/trunk/launchpad/test-services/src/main/resources/SLING-INF/res/sling-test/sling/SLING-1733/sling-1733.txt (with props) Modified: sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/BundleContentTest.java sling/trunk/launchpad/test-services/pom.xml Modified: sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java?rev=993606r1=993605r2=993606view=diff == --- sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java (original) +++ sling/trunk/bundles/extensions/bundleresource/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java Wed Sep 8 05:10:48 2010 @@ -114,10 +114,11 @@ public class BundleResourceProvider impl public IteratorResource listChildren(final Resource parent) throws SlingException { -// bundle resources can handle this request directly -if (parent instanceof BundleResource) { -return ((BundleResource) parent).listChildren(); -} + if (((BundleResource)parent).getBundle() == this.bundle) { +// bundle resources can handle this request directly when the parent + // resource is in the same bundle as this provider. +return ((BundleResource) parent).listChildren(); + } // ensure this provider may have children of the parent String parentPath = parent.getPath(); Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/BundleContentTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/BundleContentTest.java?rev=993606r1=993605r2=993606view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/BundleContentTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/BundleContentTest.java Wed Sep 8 05:10:48 2010 @@ -18,6 +18,8 @@ package org.apache.sling.launchpad.webap import java.io.IOException; +import org.apache.sling.commons.json.JSONException; +import org.apache.sling.commons.json.JSONObject; import org.apache.sling.commons.testing.integration.HttpTestBase; public class BundleContentTest extends HttpTestBase { @@ -39,4 +41,18 @@ public class BundleContentTest extends H final String content = getContent(HTTP_BASE_URL + /sling-test/sling.2.json, CONTENT_TYPE_JSON); assertTrue(Content contains + expected + ( + content + ), content.contains(expected)); } + +/** + * Test fix for SLING-1733 - BundleResourceProvider fails to find resources when multiple bundles have the same Sling-Bundle-Resources path + */ +public void testBundleContentParentFromMultipleBundles() throws IOException, JSONException { +final String content = getContent(HTTP_BASE_URL + /system.1.json, CONTENT_TYPE_JSON); +JSONObject jsonObj = new JSONObject(content); + +//provided by the servlets.post bundle +assertTrue(Expected sling.js in the /system folder, jsonObj.has(sling.js)); + +//provided by the launchpad.test-services bundle +assertTrue(Expected sling-1733.txt in the /system folder, jsonObj.has(sling-1733.txt)); +} } Modified: sling/trunk/launchpad/test-services/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/pom.xml?rev=993606r1=993605r2=993606view=diff == --- sling/trunk/launchpad/test-services/pom.xml (original) +++ sling/trunk/launchpad/test-services/pom.xml Wed Sep 8 05:10:48 2010 @@ -64,7 +64,10 @@ SLING-INF/nodetypes/test.cnd /Sling-Nodetypes Sling-Initial-ContentSLING-INF/content;path:=/sling-test/Sling-Initial-Content - Sling-Bundle-Resources/sling-test/sling
svn commit: r988381 - in /sling/trunk: bundles/jcr/jackrabbit-usermanager/ bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ launchpad/integration-tes
Author: enorman Date: Tue Aug 24 04:36:06 2010 New Revision: 988381 URL: http://svn.apache.org/viewvc?rev=988381view=rev Log: SLING-1676 Let UserManager POST servlets return JSON Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/AbstractAuthenticatedTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateGroupTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/UpdateGroupTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/UpdateUserTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml?rev=988381r1=988380r2=988381view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml Tue Aug 24 04:36:06 2010 @@ -68,7 +68,8 @@ /Private-Package Embed-Dependency org.apache.sling.servlets.post;inline=org/apache/sling/servlets/post/impl/helper/RequestProperty* - |org/apache/sling/servlets/post/impl/helper/DateParser* + |org/apache/sling/servlets/post/impl/helper/DateParser* + |org/apache/sling/servlets/post/impl/helper/JSONResponse* /Embed-Dependency /instructions /configuration @@ -89,7 +90,7 @@ dependency groupIdorg.apache.sling/groupId artifactIdorg.apache.sling.servlets.post/artifactId -version2.0.4-incubator/version +version2.0.5-SNAPSHOT/version /dependency dependency groupIdorg.apache.jackrabbit/groupId @@ -109,5 +110,20 @@ groupIdorg.osgi/groupId artifactIdorg.osgi.compendium/artifactId /dependency +dependency +groupIdorg.apache.sling/groupId +artifactIdorg.apache.sling.jcr.resource/artifactId +version2.0.6/version +/dependency +dependency +groupIdorg.apache.sling/groupId +artifactIdorg.apache.sling.commons.osgi/artifactId +version2.0.6/version +scopeprovided/scope +/dependency + dependency +groupIdorg.slf4j/groupId +artifactIdslf4j-api/artifactId +/dependency /dependencies /project \ No newline at end of file Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java?rev=988381r1=988380r2=988381view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java Tue Aug 24 04:36:06 2010 @@ -44,11 +44,12 @@ import org.apache.sling.api.servlets.Htm import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.apache.sling.api.wrappers.SlingRequestPaths; import org.apache.sling.commons.osgi.OsgiUtil; -import org.apache.sling.servlets.post.impl.helper.DateParser; -import org.apache.sling.servlets.post.impl.helper.RequestProperty; import org.apache.sling.jackrabbit.usermanager.impl.resource.AuthorizableResourceProvider; import org.apache.sling.servlets.post.Modification; import org.apache.sling.servlets.post.SlingPostConstants; +import org.apache.sling.servlets.post.impl.helper.DateParser; +import org.apache.sling.servlets.post.impl.helper.JSONResponse; +import org.apache.sling.servlets.post.impl.helper.RequestProperty; import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import
svn commit: r988382 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/ bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ launchpad/integratio
Author: enorman Date: Tue Aug 24 04:36:33 2010 New Revision: 988382 URL: http://svn.apache.org/viewvc?rev=988382view=rev Log: SLING-1677 Let AccessManager POST servlets return JSON Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/PrivilegesInfoTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/RemoveAcesTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml?rev=988382r1=988381r2=988382view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml Tue Aug 24 04:36:33 2010 @@ -61,6 +61,9 @@ instructions Private-Package /Private-Package +Embed-Dependency + org.apache.sling.servlets.post;inline=org/apache/sling/servlets/post/impl/helper/JSONResponse* +/Embed-Dependency Export-Package org.apache.sling.jcr.jackrabbit.accessmanager;version=${project.version}, org.apache.sling.jcr.jackrabbit.accessmanager.post;version=${project.version} @@ -114,7 +117,7 @@ dependency groupIdorg.apache.sling/groupId artifactIdorg.apache.sling.servlets.post/artifactId - version2.0.4-incubator/version + version2.0.5-SNAPSHOT/version scopeprovided/scope /dependency dependency @@ -137,5 +140,9 @@ groupIdorg.osgi/groupId artifactIdorg.osgi.compendium/artifactId /dependency + dependency +groupIdorg.slf4j/groupId +artifactIdslf4j-api/artifactId +/dependency /dependencies /project Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java?rev=988382r1=988381r2=988382view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractAccessPostServlet.java Tue Aug 24 04:36:33 2010 @@ -39,6 +39,7 @@ import org.apache.sling.api.servlets.Sli import org.apache.sling.api.wrappers.SlingRequestPaths; import org.apache.sling.servlets.post.Modification; import org.apache.sling.servlets.post.SlingPostConstants; +import org.apache.sling.servlets.post.impl.helper.JSONResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,7 +62,7 @@ public abstract class AbstractAccessPost SlingHttpServletResponse httpResponse) throws ServletException, IOException { // prepare the response -HtmlResponse htmlResponse = new HtmlResponse(); +HtmlResponse htmlResponse = createHtmlResponse(request); htmlResponse.setReferer(request.getHeader(referer)); // calculate the paths @@ -133,6 +134,23 @@ public abstract class AbstractAccessPost htmlResponse.send(httpResponse, isSetStatus(request)); } +/** + * Creates an instance of a HtmlResponse. + * @param req The request being serviced + * @return a {...@link org.apache.sling.servlets.post.impl.helper.JSONResponse} if any of these conditions are true: + * ul + * lithe response content type is application/json + * /ul + * or a {...@link org.apache.sling.api.servlets.HtmlResponse} otherwise + */ +protected HtmlResponse createHtmlResponse(SlingHttpServletRequest req
svn commit: r988387 - /sling/trunk/samples/custom-login-form/
Author: enorman Date: Tue Aug 24 04:59:38 2010 New Revision: 988387 URL: http://svn.apache.org/viewvc?rev=988387view=rev Log: svn:ignore eclipse project files Modified: sling/trunk/samples/custom-login-form/ (props changed) Propchange: sling/trunk/samples/custom-login-form/ -- --- svn:ignore (added) +++ svn:ignore Tue Aug 24 04:59:38 2010 @@ -0,0 +1,4 @@ +.settings +target +.classpath +.project
svn commit: r984646 - in /sling/trunk: bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/ launchpad/integration-tests/src/main/java/org/apache/sling/la
Author: enorman Date: Thu Aug 12 05:42:49 2010 New Revision: 984646 URL: http://svn.apache.org/viewvc?rev=984646view=rev Log: SLING-1642 User self-registration should be disabled by default Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/AbstractAuthenticatedTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java?rev=984646r1=984645r2=984646view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java Thu Aug 12 05:42:49 2010 @@ -100,7 +100,7 @@ public class CreateUserServlet extends A */ private static final String PROP_SELF_REGISTRATION_ENABLED = self.registration.enabled; -private static final Boolean DEFAULT_SELF_REGISTRATION_ENABLED = Boolean.TRUE; +private static final Boolean DEFAULT_SELF_REGISTRATION_ENABLED = Boolean.FALSE; private Boolean selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED; Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/AbstractAuthenticatedTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/AbstractAuthenticatedTest.java?rev=984646r1=984645r2=984646view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/AbstractAuthenticatedTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/AbstractAuthenticatedTest.java Thu Aug 12 05:42:49 2010 @@ -164,7 +164,8 @@ public abstract class AbstractAuthentica postParams.add(new NameValuePair(:name, testUserId)); postParams.add(new NameValuePair(pwd, testPwd)); postParams.add(new NameValuePair(pwdConfirm, testPwd)); -assertPostStatus(postUrl, HttpServletResponse.SC_OK, postParams, null); + Credentials creds = new UsernamePasswordCredentials(admin, admin); +assertAuthenticatedPostStatus(creds, postUrl, HttpServletResponse.SC_OK, postParams, null); return testUserId; } Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java?rev=984646r1=984645r2=984646view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java Thu Aug 12 05:42:49 2010 @@ -162,7 +162,8 @@ public abstract class AbstractAccessMana postParams.add(new NameValuePair(:name, testUserId)); postParams.add(new NameValuePair(pwd, testPwd)); postParams.add(new NameValuePair(pwdConfirm, testPwd)); - assertPostStatus(postUrl, HttpServletResponse.SC_OK, postParams, null); + Credentials creds = new UsernamePasswordCredentials(admin, admin); + assertAuthenticatedPostStatus(creds, postUrl, HttpServletResponse.SC_OK, postParams, null); return testUserId; } Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/CreateUserTest.java?rev
svn commit: r983863 - /sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NamespaceMappingTest.java
Author: enorman Date: Tue Aug 10 05:59:30 2010 New Revision: 983863 URL: http://svn.apache.org/viewvc?rev=983863view=rev Log: SLING-1635 fix integration test failure caused by old sudo cookie in the httpClient state Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NamespaceMappingTest.java Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NamespaceMappingTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NamespaceMappingTest.java?rev=983863r1=983862r2=983863view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NamespaceMappingTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NamespaceMappingTest.java Tue Aug 10 05:59:30 2010 @@ -79,6 +79,8 @@ public class NamespaceMappingTest extend //remove the test user if it exists. String postUrl = HTTP_BASE_URL + /system/userManager/user/ + testUserId + .delete.html; ListNameValuePair postParams = new ArrayListNameValuePair(); + //SLING-1635 the sudo cookie messes up the user delete, so clear it out before deleting the test user +postParams.add(new NameValuePair(sudo, -)); assertAuthenticatedAdminPostStatus(postUrl, HttpServletResponse.SC_OK, postParams, null); } super.tearDown();
svn commit: r984276 - /sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java
Author: enorman Date: Wed Aug 11 00:56:53 2010 New Revision: 984276 URL: http://svn.apache.org/viewvc?rev=984276view=rev Log: SLING-1639 Disabling user self-registration is not working Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java?rev=984276r1=984275r2=984276view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java Wed Aug 11 00:56:53 2010 @@ -148,7 +148,9 @@ public class CreateUserServlet extends A super.activate(componentContext); Dictionary?, ? props = componentContext.getProperties(); Object propValue = props.get(PROP_SELF_REGISTRATION_ENABLED); -if (propValue instanceof String) { +if (propValue instanceof Boolean) { + selfRegistrationEnabled = (Boolean)propValue; +} else if (propValue instanceof String) { selfRegistrationEnabled = Boolean.parseBoolean((String) propValue); } else { selfRegistrationEnabled = DEFAULT_SELF_REGISTRATION_ENABLED;
svn commit: r983425 - in /sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest: JsonQueryServletTest.java JsonRenderingTest.java
Author: enorman Date: Sun Aug 8 15:30:14 2010 New Revision: 983425 URL: http://svn.apache.org/viewvc?rev=983425view=rev Log: SLING-1632 fix broken integration test Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonRenderingTest.java Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java?rev=983425r1=983424r2=983425view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java Sun Aug 8 15:30:14 2010 @@ -173,36 +173,22 @@ public class JsonQueryServletTest extend //tidy json text should have whitespace that makes it not be equivalent to the untidy version assertNotSame(json, tidyJson); -//compare expected with actual -String expectedTidyJson = - [{\n + - \name\: \node0\,\n + - \jcr:score\: 1000,\n + - \jcr:primaryType\: \nt:unstructured\,\n + - \jcr:path\: \ + testPath + /folderA/node0\\n + - },{\n + - \name\: \node1\,\n + - \jcr:score\: 1000,\n + - \jcr:primaryType\: \nt:unstructured\,\n + - \jcr:path\: \ + testPath + /folderA/node1\\n + - },{\n + - \name\: \node2\,\n + - \jcr:score\: 1000,\n + - \jcr:primaryType\: \nt:unstructured\,\n + - \jcr:path\: \ + testPath + /folderA/node2\\n + - },{\n + - \name\: \node3\,\n + - \jcr:score\: 1000,\n + - \jcr:primaryType\: \nt:unstructured\,\n + - \jcr:path\: \ + testPath + /folderA/node3\\n + - },{\n + - \name\: \node4\,\n + - \jcr:score\: 1000,\n + - \jcr:primaryType\: \nt:unstructured\,\n + - \jcr:path\: \ + testPath + /folderA/node4\\n + - }\n + - ]; - assertEquals(expectedTidyJson.length(), tidyJson.length()); -assertEquals(expectedTidyJson, tidyJson); + int noTidyCount = countOccurences(json, '\n'); + int tidyCount = countOccurences(tidyJson, '\n'); + int delta = tidyCount - noTidyCount; + + // tidy output contains at least 25 additional EOL chars + int min = 25; + assertTrue(The .tidy selector should add at least 25 EOL chars to json output (delta= + delta + ), delta min); } + +protected static int countOccurences(String str, char toCount) { + int result = 0; + for(char c : str.toCharArray()) { + if(c == toCount) { + result++; + } + } + return result; +} } Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonRenderingTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonRenderingTest.java?rev=983425r1=983424r2=983425view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonRenderingTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonRenderingTest.java Sun Aug 8 15:30:14 2010 @@ -234,7 +234,7 @@ public class JsonRenderingTest extends H // Output contains 3 properties and a subnode with one, so at least 5 EOL chars int min = 5; - assertTrue(The .tidy selector should add at least 2 EOL chars to json output (delta= + delta + ), delta min); + assertTrue(The .tidy selector should add at least 5 EOL chars to json output (delta= + delta + ), delta min); } public void testRootNoRecursion() throws IOException {
svn commit: r983427 - in /sling/trunk/bundles/jcr/jackrabbit-usermanager: ./ src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/ src/main/java/org/apache/sling/jackrabbit/usermanager/im
Author: enorman Date: Sun Aug 8 15:31:36 2010 New Revision: 983427 URL: http://svn.apache.org/viewvc?rev=983427view=rev Log: SLING-1578 reduce code duplication between post servlet and usermanager Removed: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/ Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateUserServlet.java Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml?rev=983427r1=983426r2=983427view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/pom.xml Sun Aug 8 15:31:36 2010 @@ -66,6 +66,10 @@ Private-Package org.apache.sling.jackrabbit.usermanager.impl.* /Private-Package +Embed-Dependency + org.apache.sling.servlets.post;inline=org/apache/sling/servlets/post/impl/helper/RequestProperty* + |org/apache/sling/servlets/post/impl/helper/DateParser* +/Embed-Dependency /instructions /configuration /plugin Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java?rev=983427r1=983426r2=983427view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java Sun Aug 8 15:31:36 2010 @@ -44,8 +44,8 @@ import org.apache.sling.api.servlets.Htm import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.apache.sling.api.wrappers.SlingRequestPaths; import org.apache.sling.commons.osgi.OsgiUtil; -import org.apache.sling.jackrabbit.usermanager.impl.helper.DateParser; -import org.apache.sling.jackrabbit.usermanager.impl.helper.RequestProperty; +import org.apache.sling.servlets.post.impl.helper.DateParser; +import org.apache.sling.servlets.post.impl.helper.RequestProperty; import org.apache.sling.jackrabbit.usermanager.impl.resource.AuthorizableResourceProvider; import org.apache.sling.servlets.post.Modification; import org.apache.sling.servlets.post.SlingPostConstants; Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java?rev=983427r1=983426r2=983427view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java Sun Aug 8 15:31:36 2010 @@ -28,7 +28,7 @@ import org.apache.jackrabbit.api.securit import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.servlets.HtmlResponse; -import org.apache.sling.jackrabbit.usermanager.impl.helper.RequestProperty; +import org.apache.sling.servlets.post.impl.helper.RequestProperty; import org.apache.sling.jackrabbit.usermanager.impl.resource.AuthorizableResourceProvider; import org.apache.sling.jcr.base.util.AccessControlUtil; import org.apache.sling.servlets.post.Modification; Modified: sling/trunk/bundles/jcr/jackrabbit
svn commit: r983310 - in /sling/trunk: bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/
Author: enorman Date: Sat Aug 7 21:15:37 2010 New Revision: 983310 URL: http://svn.apache.org/viewvc?rev=983310view=rev Log: SLING-1632 The JsonQueryServlet should support the tidy selector to provided pretty printed results Modified: sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java Modified: sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java?rev=983310r1=983309r2=983310view=diff == --- sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java (original) +++ sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java Sat Aug 7 21:15:37 2010 @@ -82,11 +82,23 @@ public class JsonQueryServlet extends Sl /** rep:exerpt */ private static final String REP_EXCERPT = rep:excerpt(); +public static final String TIDY = tidy; + private final JsonResourceWriter itemWriter; public JsonQueryServlet() { itemWriter = new JsonResourceWriter(null); } + +/** True if our request wants the tidy pretty-printed format */ +protected boolean isTidy(SlingHttpServletRequest req) { +for(String selector : req.getRequestPathInfo().getSelectors()) { +if(TIDY.equals(selector)) { +return true; +} +} +return false; +} @Override protected void doGet(SlingHttpServletRequest req, @@ -151,6 +163,8 @@ public class JsonQueryServlet extends Sl resp.setCharacterEncoding(UTF-8); final JSONWriter w = new JSONWriter(resp.getWriter()); +w.setTidy(isTidy(req)); + w.array(); long count = -1; Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java?rev=983310r1=983309r2=983310view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java Sat Aug 7 21:15:37 2010 @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.httpclient.NameValuePair; +import org.apache.sling.commons.json.JSONException; import org.apache.sling.commons.testing.integration.HttpTestBase; @@ -66,9 +67,13 @@ public class JsonQueryServletTest extend testClient.delete(WEBDAV_BASE_URL + testPath); } } - private void assertCount(int expectedCount, String statement, String queryType, int offset, int rows) throws IOException { + assertCount(expectedCount, statement, queryType, offset, rows, false); +} +private void assertCount(int expectedCount, String statement, String queryType, int offset, int rows, + boolean tidy) +throws IOException { final ListNameValuePair params = new ArrayListNameValuePair(); params.add(new NameValuePair(statement, statement)); if(queryType != null) { @@ -80,7 +85,7 @@ public class JsonQueryServletTest extend if(rows 0) { params.add(new NameValuePair(rows, String.valueOf(rows))); } -final String json = getContent(testFolderUrl + .query.json, CONTENT_TYPE_JSON, params); +final String json = getContent(testFolderUrl + .query + (tidy ? .tidy : ) + .json, CONTENT_TYPE_JSON, params); assertJavascript( expectedCount + .0, json, @@ -148,4 +153,56 @@ public class JsonQueryServletTest extend } + +/** + * Test for SLING-1632: tidy rendering of query results + */ +public void testTidyResultFormat() throws IOException, JSONException { + boolean tidy = true; + //query should function the same when the output is tidy'ed. +String statement = / + testPath + /folderA/*; + String queryType = xpath; + assertCount(5, statement, queryType, 0, 0, tidy); + +final ListNameValuePair params = new ArrayListNameValuePair(); +params.add(new NameValuePair(statement, statement)); +params.add(new NameValuePair(queryType
svn commit: r983135 - in /sling/trunk: bundles/jcr/contentloader/ bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ bundles/jcr/contentloader/src/main/java/org/apache/sling/j
Author: enorman Date: Fri Aug 6 22:23:05 2010 New Revision: 983135 URL: http://svn.apache.org/viewvc?rev=983135view=rev Log: SLING-1627 import operation support for overwrite of properties Added: sling/trunk/bundles/jcr/contentloader/src/test/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreatorTest.java (with props) sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/servlets/post/testimport_replaceProps.json Modified: sling/trunk/bundles/jcr/contentloader/pom.xml sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java Modified: sling/trunk/bundles/jcr/contentloader/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/pom.xml?rev=983135r1=983134r2=983135view=diff == --- sling/trunk/bundles/jcr/contentloader/pom.xml (original) +++ sling/trunk/bundles/jcr/contentloader/pom.xml Fri Aug 6 22:23:05 2010 @@ -161,6 +161,12 @@ groupIdorg.jmock/groupId artifactIdjmock-junit4/artifactId /dependency +dependency +groupIdorg.slf4j/groupId +artifactIdslf4j-nop/artifactId +version1.5.2/version +scopetest/scope +/dependency !-- for security content loader (users/groups/acls) -- dependency Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java?rev=983135r1=983134r2=983135view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/ImportOptions.java Fri Aug 6 22:23:05 2010 @@ -24,10 +24,34 @@ package org.apache.sling.jcr.contentload */ public abstract class ImportOptions { + /** +* Specifies whether imported nodes should overwrite existing nodes. +* NOTE: this means the existing node will be deleted and a new node +* will be created in the same location. +* @return true to overwrite nodes, false otherwise +*/ public abstract boolean isOverwrite(); + /** +* Specifies whether imported properties should overwrite existing properties. +* @return true to overwrite node properties, false otherwise +*/ + public abstract boolean isPropertyOverwrite(); + + /** +* Specifies whether versionable nodes is automatically checked in at the +* end of the import operation. +* @return true to checkin the versionable nodes, false otherwise +*/ public abstract boolean isCheckin(); + /** +* Check if the import provider for the given file extension should +* be ignored. +* +* @param extension the extension to check +* @return true to ignore the provider, false otherwise +*/ public abstract boolean isIgnoredImportProvider(String extension); } \ No newline at end of file Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java?rev=983135r1=983134r2=983135view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java Fri Aug 6 22:23:05 2010 @@ -307,9 +307,10 @@ public class DefaultContentCreator imple public void createProperty(String name, int propertyType, String value) throws RepositoryException { final Node node = this.parentNodeStack.peek(); -// check if the property already exists, don't overwrite
svn commit: r983138 - /sling/trunk/bundles/jcr/davex/
Author: enorman Date: Fri Aug 6 22:46:26 2010 New Revision: 983138 URL: http://svn.apache.org/viewvc?rev=983138view=rev Log: ignore eclipse project files Modified: sling/trunk/bundles/jcr/davex/ (props changed) Propchange: sling/trunk/bundles/jcr/davex/ -- --- svn:ignore (original) +++ svn:ignore Fri Aug 6 22:46:26 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project
svn commit: r982453 - /sling/trunk/bundles/api/src/main/java/org/apache/sling/api/servlets/HtmlResponse.java
Author: enorman Date: Thu Aug 5 02:21:23 2010 New Revision: 982453 URL: http://svn.apache.org/viewvc?rev=982453view=rev Log: SLING-1628 Default status code for a post that results in an error should be 500 instead of 200 Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/servlets/HtmlResponse.java Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/servlets/HtmlResponse.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/servlets/HtmlResponse.java?rev=982453r1=982452r2=982453view=diff == --- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/servlets/HtmlResponse.java (original) +++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/servlets/HtmlResponse.java Thu Aug 5 02:21:23 2010 @@ -214,11 +214,21 @@ public class HtmlResponse { /** * Returns the status code of this instance. If the status code has never * been set by calling the {...@link #setStatus(int, String)} method, the - * response is assumed to be successful and 200 is returned. + * status code is determined by checking if there was an error. If there + * was an error, the response is assumed to be unsuccessful and 500 is returned. + * If there is no error, the response is assumed to be successful and 200 is returned. */ public int getStatusCode() { Integer status = getProperty(PN_STATUS_CODE, Integer.class); -return (status == null) ? HttpServletResponse.SC_OK : status; +if (status == null) { + if (getError() != null) { + //if there was an error + status = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; + } else { + status = HttpServletResponse.SC_OK; + } +} +return status; } public String getStatusMessage() {
svn commit: r958411 [2/2] - in /sling/trunk: bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/ bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloa
Added: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java?rev=958411view=auto == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java (added) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java Sun Jun 27 19:36:49 2010 @@ -0,0 +1,544 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sling.launchpad.webapp.integrationtest.servlets.post; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Random; +import java.util.Set; + +import org.apache.sling.commons.json.JSONArray; +import org.apache.sling.commons.json.JSONException; +import org.apache.sling.commons.json.JSONObject; +import org.apache.sling.commons.testing.integration.HttpTestBase; +import org.apache.sling.commons.testing.integration.NameValuePairList; +import org.apache.sling.servlets.post.SlingPostConstants; + +/** Test content import via the MicrojaxPostServlet */ +public class PostServletImportTest extends HttpTestBase { + +public static final String TEST_BASE_PATH = /sling-import-tests; +static Random random = new Random(); + +File testFile; + +/* (non-Javadoc) +* @see org.apache.sling.commons.testing.integration.HttpTestBase#tearDown() +*/ + @Override + protected void tearDown() throws Exception { + if (testFile != null) { + //cleanup temp file + testFile.delete(); + } + super.tearDown(); + } + + static String getStreamAsString(InputStream is) throws IOException { +final StringBuilder content = new StringBuilder(); +final byte [] buffer = new byte[16384]; +int n = 0; +while( (n = is.read(buffer, 0, buffer.length)) 0) { +content.append(new String(buffer, 0, n)); +} +return content.toString(); +} + +private File getTestFile(InputStream inputStream) throws IOException { + File tempFile = File.createTempFile(file-to-upload, null, new File(target)); + FileOutputStream outputStream = new FileOutputStream(tempFile); + byte[] bbuf = new byte[16384]; //16k + int len; + while ((len = inputStream.read(bbuf)) != -1) { + outputStream.write(bbuf, 0, len); + } + outputStream.flush(); + outputStream.close(); + return tempFile; +} + +protected void assertExpectedJSON(JSONObject expectedJson, JSONObject actualJson) throws JSONException { + IteratorString keys = expectedJson.keys(); + while (keys.hasNext()) { + String key = keys.next(); + + Object object = expectedJson.get(key); + Object object2 = actualJson.get(key); + if (object instanceof JSONObject) { + assertTrue(object instanceof JSONObject); + assertExpectedJSON((JSONObject)object, (JSONObject)object2); + } else if (object instanceof JSONArray) { + //compare the array + assertTrue(object2 instanceof JSONArray); + JSONArray actualArray = (JSONArray)object2; + SetObject actualValuesSet = new HashSetObject(); + for (int i=0; i actualArray.length(); i++) { + actualValuesSet.add(actualArray.get(i)); + } + +
svn commit: r958417 - /sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java
Author: enorman Date: Sun Jun 27 20:27:55 2010 New Revision: 958417 URL: http://svn.apache.org/viewvc?rev=958417view=rev Log: SLING-1172 fixed response code for missing required request parameters Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java?rev=958417r1=958416r2=958417view=diff == --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java (original) +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ImportOperation.java Sun Jun 27 20:27:55 2010 @@ -95,7 +95,7 @@ public class ImportOperation extends Abs String contentType = request.getParameter(SlingPostConstants.RP_CONTENT_TYPE); if (contentType == null) { -response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, +response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED, Required :contentType parameter is missing); return; } @@ -126,7 +126,7 @@ public class ImportOperation extends Abs } if (contentStream == null) { - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, +response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED, Missing content for import); return; } else {
svn commit: r958427 - /sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java
Author: enorman Date: Sun Jun 27 21:48:03 2010 New Revision: 958427 URL: http://svn.apache.org/viewvc?rev=958427view=rev Log: SLING-1172 fixed unit test Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java?rev=958427r1=958426r2=958427view=diff == --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java (original) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/PostServletImportTest.java Sun Jun 27 21:48:03 2010 @@ -117,17 +117,15 @@ public class PostServletImportTest exten urlsToDelete.add(testNode); //add node that will get replaced -String testNodeName = testNode_ + String.valueOf(random.nextInt()); props.put(propTest, propTestValue); -String importedNodeUrl = testClient.createNode(HTTP_BASE_URL + testPath + / + testNodeName, props); +String importedNodeUrl = testClient.createNode(HTTP_BASE_URL + testPath + /nodeName, props); //import with the replace option to replace the existing node. props.clear(); props.put(SlingPostConstants.RP_OPERATION, SlingPostConstants.OPERATION_IMPORT); -props.put(SlingPostConstants.RP_NODE_NAME, testNodeName); -testFile = getTestFile(getClass().getResourceAsStream(/integration-test/servlets/post/testimport.json)); +testFile = getTestFile(getClass().getResourceAsStream(/integration-test/servlets/post/testimport2.json)); props.put(SlingPostConstants.RP_CONTENT_TYPE, json); props.put(SlingPostConstants.RP_REDIRECT_TO, testPath + /*); props.put(SlingPostConstants.RP_REPLACE, true);
svn commit: r952077 - /sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java
Author: enorman Date: Mon Jun 7 03:35:32 2010 New Revision: 952077 URL: http://svn.apache.org/viewvc?rev=952077view=rev Log: SLING-1526 Extra property names of security:principals lost when loaded via contentloader. Applied patch from Mike Moulton. Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java?rev=952077r1=952076r2=952077view=diff == --- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java (original) +++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java Mon Jun 7 03:35:32 2010 @@ -739,7 +739,7 @@ public class DefaultContentCreator imple SetEntryString, Object entrySet = extraProperties.entrySet(); for (EntryString, Object entry : entrySet) { Value value = createValue(valueFactory, entry.getValue()); - authorizable.setProperty(name, value); + authorizable.setProperty(entry.getKey(), value); } } } @@ -780,7 +780,7 @@ public class DefaultContentCreator imple SetEntryString, Object entrySet = extraProperties.entrySet(); for (EntryString, Object entry : entrySet) { Value value = createValue(valueFactory, entry.getValue()); - authorizable.setProperty(name, value); + authorizable.setProperty(entry.getKey(), value); } } }
svn commit: r937907 - in /sling/trunk: parent/pom.xml samples/inplace-integration-test/pom.xml samples/simple-launchpad/pom.xml
Author: enorman Date: Mon Apr 26 01:00:16 2010 New Revision: 937907 URL: http://svn.apache.org/viewvc?rev=937907view=rev Log: Update maven-launchpad-plugin references to version 2.0.7-SNAPSHOT Modified: sling/trunk/parent/pom.xml sling/trunk/samples/inplace-integration-test/pom.xml sling/trunk/samples/simple-launchpad/pom.xml Modified: sling/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/parent/pom.xml?rev=937907r1=937906r2=937907view=diff == --- sling/trunk/parent/pom.xml (original) +++ sling/trunk/parent/pom.xml Mon Apr 26 01:00:16 2010 @@ -196,7 +196,7 @@ MAVEN_OPTS=-Xmx256M -XX:MaxPermSize=128 plugin groupIdorg.apache.sling/groupId artifactIdmaven-launchpad-plugin/artifactId -version2.0.5-SNAPSHOT/version +version2.0.7-SNAPSHOT/version /plugin plugin groupIdorg.apache.sling/groupId Modified: sling/trunk/samples/inplace-integration-test/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/samples/inplace-integration-test/pom.xml?rev=937907r1=937906r2=937907view=diff == --- sling/trunk/samples/inplace-integration-test/pom.xml (original) +++ sling/trunk/samples/inplace-integration-test/pom.xml Mon Apr 26 01:00:16 2010 @@ -84,7 +84,7 @@ plugin groupIdorg.apache.sling/groupId artifactIdmaven-launchpad-plugin/artifactId -version2.0.5-SNAPSHOT/version +version2.0.7-SNAPSHOT/version executions execution idprepare-test-webapp/id Modified: sling/trunk/samples/simple-launchpad/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/samples/simple-launchpad/pom.xml?rev=937907r1=937906r2=937907view=diff == --- sling/trunk/samples/simple-launchpad/pom.xml (original) +++ sling/trunk/samples/simple-launchpad/pom.xml Mon Apr 26 01:00:16 2010 @@ -36,7 +36,7 @@ plugin groupIdorg.apache.sling/groupId artifactIdmaven-launchpad-plugin/artifactId -version2.0.5-SNAPSHOT/version +version2.0.7-SNAPSHOT/version executions execution idprepare-package/id
svn commit: r930612 - /sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/SlingIntegrationTestClient.java
Author: enorman Date: Sun Apr 4 02:53:19 2010 New Revision: 930612 URL: http://svn.apache.org/viewvc?rev=930612view=rev Log: fixing broken launchpad.testing integration tests. The GET request from mkdir(url) that was checking if the folder already exists was failing because the node did not allow displaying an index for the folder. Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/SlingIntegrationTestClient.java Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/SlingIntegrationTestClient.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/SlingIntegrationTestClient.java?rev=930612r1=930611r2=930612view=diff == --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/SlingIntegrationTestClient.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/SlingIntegrationTestClient.java Sun Apr 4 02:53:19 2010 @@ -62,7 +62,7 @@ public class SlingIntegrationTestClient /** Create the given directory via WebDAV, if needed, under given URL */ public void mkdir(String url) throws IOException { int status = 0; -status = httpClient.executeMethod(new GetMethod(url)); +status = httpClient.executeMethod(new GetMethod(url + .txt)); if(status != 200) { status = httpClient.executeMethod(new HttpAnyMethod(MKCOL,url)); if(status!=201) {
svn commit: r925398 - in /sling/trunk: bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/ launchpad/testing/src/test/resources/integration-test/accessmanager/ la
Author: enorman Date: Fri Mar 19 19:56:10 2010 New Revision: 925398 URL: http://svn.apache.org/viewvc?rev=925398view=rev Log: added missing license headers Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/AuthorizablePrivilegesInfo.java sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/privileges-info.json.esp sling/trunk/launchpad/testing/src/test/resources/integration-test/usermanager/privileges-info.json.esp Modified: sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/AuthorizablePrivilegesInfo.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/AuthorizablePrivilegesInfo.java?rev=925398r1=925397r2=925398view=diff == --- sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/AuthorizablePrivilegesInfo.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-usermanager/src/main/java/org/apache/sling/jackrabbit/usermanager/AuthorizablePrivilegesInfo.java Fri Mar 19 19:56:10 2010 @@ -1,3 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the License); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.apache.sling.jackrabbit.usermanager; import javax.jcr.Session; Modified: sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/privileges-info.json.esp URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/privileges-info.json.esp?rev=925398r1=925397r2=925398view=diff == --- sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/privileges-info.json.esp (original) +++ sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/privileges-info.json.esp Fri Mar 19 19:56:10 2010 @@ -1,7 +1,26 @@ -{ % - var privilegesInfo = new Packages.org.apache.sling.jcr.jackrabbit.accessmanager.PrivilegesInfo(); +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * License); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + var privilegesInfo = new Packages.org.apache.sling.jcr.jackrabbit.accessmanager.PrivilegesInfo(); % +{ canAddChildren : %=privilegesInfo.canAddChildren(currentNode)%, canDeleteChildren : %=privilegesInfo.canDeleteChildren(currentNode)%, canDelete : %=privilegesInfo.canDelete(currentNode)%, Modified: sling/trunk/launchpad/testing/src/test/resources/integration-test/usermanager/privileges-info.json.esp URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/resources/integration-test/usermanager/privileges-info.json.esp?rev=925398r1=925397r2=925398view=diff == --- sling/trunk/launchpad/testing/src/test/resources/integration-test/usermanager/privileges-info.json.esp (original) +++ sling/trunk/launchpad/testing/src/test/resources/integration-test/usermanager/privileges-info.json.esp Fri Mar 19 19:56:10 2010 @@ -1,8 +1,27 @@ -{ % - var privilegesInfo = sling.getService(Packages.org.apache.sling.jackrabbit.usermanager.AuthorizablePrivilegesInfo); - var authorizable = resource.adaptTo(Packages.org.apache.jackrabbit.api.security.user.Authorizable); +/* + * Licensed to the Apache Software
svn commit: r924617 - /sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java
Author: enorman Date: Thu Mar 18 02:57:31 2010 New Revision: 924617 URL: http://svn.apache.org/viewvc?rev=924617view=rev Log: SLING-1237 regression test to ensure a group with members can be removed Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java?rev=924617r1=924616r2=924617view=diff == --- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java (original) +++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/userManager/RemoveAuthorizablesTest.java Thu Mar 18 02:57:31 2010 @@ -87,4 +87,29 @@ public class RemoveAuthorizablesTest ext getUrl = HTTP_BASE_URL + /system/userManager/group/ + groupId + .json; assertAuthenticatedHttpStatus(creds, getUrl, HttpServletResponse.SC_NOT_FOUND, null); //make sure the profile request returns some data } + + /** +* Test the problem reported as SLING-1237 +*/ + public void testRemoveGroupWithMembers() throws IOException { + String groupId = createTestGroup(); + String userId = createTestUser(); + +Credentials creds = new UsernamePasswordCredentials(admin, admin); +String addMemberPostUrl = HTTP_BASE_URL + /system/userManager/group/ + groupId + .update.html; + ListNameValuePair addMemberPostParams = new ArrayListNameValuePair(); + addMemberPostParams.add(new NameValuePair(:member, userId)); + assertAuthenticatedPostStatus(creds, addMemberPostUrl, HttpServletResponse.SC_OK, addMemberPostParams, null); + + String getUrl = HTTP_BASE_URL + /system/userManager/group/ + groupId + .json; + assertAuthenticatedHttpStatus(creds, getUrl, HttpServletResponse.SC_OK, null); //make sure the profile request returns some data + + String postUrl = HTTP_BASE_URL + /system/userManager/group/ + groupId + .delete.html; + ListNameValuePair postParams = new ArrayListNameValuePair(); + assertAuthenticatedPostStatus(creds, postUrl, HttpServletResponse.SC_OK, postParams, null); + + getUrl = HTTP_BASE_URL + /system/userManager/group/ + groupId + .json; + assertAuthenticatedHttpStatus(creds, getUrl, HttpServletResponse.SC_NOT_FOUND, null); //make sure the profile request returns some data + } + }
svn commit: r924618 - /sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java
Author: enorman Date: Thu Mar 18 02:59:13 2010 New Revision: 924618 URL: http://svn.apache.org/viewvc?rev=924618view=rev Log: added a unit test to verify that merge of a denied privilege with an ACE that already contains a grant privilege works correctly Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java?rev=924618r1=924617r2=924618view=diff == --- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java (original) +++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Thu Mar 18 02:59:13 2010 @@ -352,7 +352,7 @@ public class ModifyAceTest extends Abstr * Test for SLING-997, preserve privileges that were not posted with the modifyAce * request. */ - public void testMergeAceForUserCombineAggregatePrincipal() throws IOException, JSONException { + public void testMergeAceForUserCombineAggregatePrivilege() throws IOException, JSONException { testUserId = createTestUser(); testFolderUrl = createTestFolder(); @@ -440,5 +440,90 @@ public class ModifyAceTest extends Abstr } assertTrue(deniedPrivilegeNames2.contains(jcr:write)); } + + + /** +* Test ACE update with a deny privilege for an ACE that already contains +* a grant privilege +*/ + public void testMergeAceForUserDenyPrivilegeAfterGrantPrivilege() throws IOException, JSONException { + testUserId = createTestUser(); + testFolderUrl = createTestFolder(); + +String postUrl = testFolderUrl + .modifyAce.html; + +//1. create an initial set of privileges + ListNameValuePair postParams = new ArrayListNameValuePair(); + postParams.add(new NameValuePair(principalId, testUserId)); + postParams.add(new NameValuePair(privil...@jcr:write, granted)); + + Credentials creds = new UsernamePasswordCredentials(admin, admin); + assertAuthenticatedPostStatus(creds, postUrl, HttpServletResponse.SC_OK, postParams, null); + + //fetch the JSON for the acl to verify the settings. + String getUrl = testFolderUrl + .acl.json; + + String json = getAuthenticatedContent(creds, getUrl, CONTENT_TYPE_JSON, null, HttpServletResponse.SC_OK); + assertNotNull(json); + JSONObject jsonObj = new JSONObject(json); + String aceString = jsonObj.getString(testUserId); + assertNotNull(aceString); + + JSONObject aceObject = new JSONObject(aceString); + assertNotNull(aceObject); + + JSONArray grantedArray = aceObject.getJSONArray(granted); + assertNotNull(grantedArray); + assertEquals(1, grantedArray.length()); + SetString grantedPrivilegeNames = new HashSetString(); + for (int i=0; i grantedArray.length(); i++) { + grantedPrivilegeNames.add(grantedArray.getString(i)); + } + assertTrue(grantedPrivilegeNames.contains(jcr:write)); + + assertFalse(aceObject.has(denied)); + + +//2. post a new set of privileges to merge with the existing privileges + ListNameValuePair postParams2 = new ArrayListNameValuePair(); + postParams2.add(new NameValuePair(principalId, testUserId)); + //jcr:write is not posted, so it should remain in the granted ACE + + //deny the jcr:nodeTypeManagement privilege, which should merge with the + //existing ACE. + postParams2.add(new NameValuePair(privil...@jcr:nodeTypeManagement, denied)); //add a new privilege + + assertAuthenticatedPostStatus(creds, postUrl, HttpServletResponse.SC_OK, postParams2, null); + + + //fetch the JSON for the acl to verify the settings. + String json2 = getAuthenticatedContent(creds, getUrl, CONTENT_TYPE_JSON, null, HttpServletResponse.SC_OK); + + assertNotNull(json2); + JSONObject jsonObj2 = new JSONObject(json2); + String aceString2 = jsonObj2
svn commit: r919665 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/ launchpad/testing/src/test/java/org/apache/sling/launchpad/weba
Author: enorman Date: Fri Mar 5 23:21:58 2010 New Revision: 919665 URL: http://svn.apache.org/viewvc?rev=919665view=rev Log: SLING-1090 fixed return value of PrivilegesInfo.canDelete(..) for children of the root node + added some unit tests Added: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/PrivilegesInfoTest.java (with props) sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/ sling/trunk/launchpad/testing/src/test/resources/integration-test/accessmanager/privileges-info.json.esp Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java?rev=919665r1=919664r2=919665view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/PrivilegesInfo.java Fri Mar 5 23:21:58 2010 @@ -444,7 +444,15 @@ try { AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session); - String parentPath = absPath.substring(0, absPath.lastIndexOf('/')); + String parentPath; + int lastSlash = absPath.lastIndexOf('/'); + if (lastSlash == 0) { + //the parent is the root folder. + parentPath = /; + } else { + //strip the last segment + parentPath = absPath.substring(0, lastSlash); + } boolean canDelete = accessControlManager.hasPrivileges(absPath, new Privilege[] { accessControlManager.privilegeFromName(Privilege.JCR_REMOVE_NODE) }) canDeleteChildren(session, parentPath); Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java?rev=919665r1=919664r2=919665view=diff == --- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java (original) +++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/AbstractAccessManagerTest.java Fri Mar 5 23:21:58 2010 @@ -21,6 +21,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Random; import javax.servlet.http.HttpServletResponse; @@ -151,12 +152,12 @@ } -protected static int counter = 1; +protected static Random random = new Random(System.currentTimeMillis()); protected String createTestUser() throws IOException { String postUrl = HTTP_BASE_URL + /system/userManager/user.create.html; - String testUserId = testUser + (counter++); + String testUserId = testUser + random.nextInt(); ListNameValuePair postParams = new ArrayListNameValuePair(); postParams.add(new NameValuePair(:name, testUserId)); postParams.add(new NameValuePair(pwd, testPwd)); @@ -169,7 +170,7 @@ protected String createTestGroup() throws IOException { String postUrl = HTTP_BASE_URL + /system/userManager/group.create.html; - String testGroupId = testGroup + (counter++); + String testGroupId = testGroup + random.nextInt(); ListNameValuePair postParams = new ArrayListNameValuePair(); postParams.add(new NameValuePair(:name, testGroupId)); @@ -181,7 +182,7 @@ } protected String createTestFolder() throws IOException { -String postUrl = HTTP_BASE_URL + TEST_BASE_PATH + / + testFolder + (counter++); +String postUrl = HTTP_BASE_URL + TEST_BASE_PATH
svn commit: r917006 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ launchpad/content/src/main/resources/content/apps/sling/se
Author: enorman Date: Sat Feb 27 18:32:52 2010 New Revision: 917006 URL: http://svn.apache.org/viewvc?rev=917006view=rev Log: SLING-1411 Clarify how to un-set a privilege and fix the sample ACE edit script from the launchpad.content bundle Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java sling/trunk/launchpad/content/src/main/resources/content/apps/sling/servlet/default/ace.html.esp sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java?rev=917006r1=917005r2=917006view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java Sat Feb 27 18:32:52 2010 @@ -132,7 +132,7 @@ grantedPrivilegeNames.add(privilegeName); } else if (denied.equals(parameterValue)) { deniedPrivilegeNames.add(privilegeName); - } else { + } else if (none.equals(parameterValue)){ removedPrivilegeNames.add(privilegeName); } } Modified: sling/trunk/launchpad/content/src/main/resources/content/apps/sling/servlet/default/ace.html.esp URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/content/src/main/resources/content/apps/sling/servlet/default/ace.html.esp?rev=917006r1=917005r2=917006view=diff == --- sling/trunk/launchpad/content/src/main/resources/content/apps/sling/servlet/default/ace.html.esp (original) +++ sling/trunk/launchpad/content/src/main/resources/content/apps/sling/servlet/default/ace.html.esp Sat Feb 27 18:32:52 2010 @@ -87,7 +87,7 @@ % tr td align=left width=%=isUser ? '70%' : '55%'%%=p.getName()%/td - td align=center width=15%input type=radio name=privilege@%=p.getName()% value= %=granted.contains(p) || denied.contains(p) ? : checked% //td + td align=center width=15%input type=radio name=privilege@%=p.getName()% value=none %=granted.contains(p) || denied.contains(p) ? : checked% //td td align=center width=15%input type=radio name=privilege@%=p.getName()% value=granted %=granted.contains(p) ? checked : % //td % if (isUser) { % td align=center width=15%input type=radio name=privilege@%=p.getName()% value=denied %=denied.contains(p) ? checked : % //td Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java?rev=917006r1=917005r2=917006view=diff == --- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java (original) +++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Sat Feb 27 18:32:52 2010 @@ -78,6 +78,7 @@ postParams.add(new NameValuePair(principalId, testUserId)); postParams.add(new NameValuePair(privil...@jcr:read, granted)); postParams.add(new NameValuePair(privil...@jcr:write, denied)); + postParams.add(new NameValuePair(privil...@jcr:modifyAccessControl, bogus)); //invalid value should be ignored. Credentials creds = new UsernamePasswordCredentials(admin, admin); assertAuthenticatedPostStatus(creds, postUrl, HttpServletResponse.SC_OK, postParams, null); @@ -97,10 +98,12 @@ JSONArray grantedArray = aceObject.getJSONArray(granted); assertNotNull(grantedArray); + assertEquals(1, grantedArray.length()); assertEquals(jcr:read, grantedArray.getString(0
svn commit: r916893 - in /sling/trunk: bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/ bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ bundles/jcr/j
Author: enorman Date: Sat Feb 27 02:02:09 2010 New Revision: 916893 URL: http://svn.apache.org/viewvc?rev=916893view=rev Log: SLING-1411 Add replaceAccessControlEntry method to AccessControlUtil Thanks to Ray Davis for the contribution. Modified: sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Modified: sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java?rev=916893r1=916892r2=916893view=diff == --- sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java (original) +++ sling/trunk/bundles/jcr/base/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java Sat Feb 27 02:02:09 2010 @@ -18,10 +18,22 @@ */ package org.apache.sling.jcr.base.util; +import org.apache.jackrabbit.api.JackrabbitSession; +import org.apache.jackrabbit.api.security.principal.PrincipalManager; +import org.apache.jackrabbit.api.security.user.Authorizable; +import org.apache.jackrabbit.api.security.user.UserManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.security.Principal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Set; import javax.jcr.AccessDeniedException; import javax.jcr.RepositoryException; @@ -31,12 +43,10 @@ import javax.jcr.security.AccessControlException; import javax.jcr.security.AccessControlList; import javax.jcr.security.AccessControlManager; +import javax.jcr.security.AccessControlPolicy; +import javax.jcr.security.AccessControlPolicyIterator; import javax.jcr.security.Privilege; -import org.apache.jackrabbit.api.JackrabbitSession; -import org.apache.jackrabbit.api.security.principal.PrincipalManager; -import org.apache.jackrabbit.api.security.user.UserManager; - /** * A simple utility class providing utilities with respect to * access control over repositories. @@ -60,7 +70,7 @@ // the name of the JackrabbitAccessControlEntry method private static final String METHOD_JACKRABBIT_ACE_IS_ALLOW = isAllow; - +private static final Logger log = LoggerFactory.getLogger(AccessControlUtil.class); // -- SessionImpl methods - @@ -201,6 +211,141 @@ Class[] types = new Class[] {Principal.class, Privilege[].class, boolean.class, Map.class}; return safeInvokeRepoMethod(acl, METHOD_JACKRABBIT_ACL_ADD_ENTRY, Boolean.class, args, types); } + +/** + * Replaces existing access control entries in the ACL for the specified + * codeprincipal/code and coderesourcePath/code. Any existing granted + * or denied privileges which do not conflict with the specified privileges + * are maintained. Where conflicts exist, existing privileges are dropped. + * The end result will be at most two ACEs for the principal: one for grants + * and one for denies. Aggregate privileges are disaggregated before checking + * for conflicts. + * @param session + * @param resourcePath + * @param principal + * @param grantedPrivilegeNames + * @param deniedPrivilegeNames + * @param removedPrivilegeNames privileges which, if they exist, should be + * removed for this principal and resource + * @throws RepositoryException + */ +public static void replaceAccessControlEntry(Session session, String resourcePath, Principal principal, + String[] grantedPrivilegeNames, String[] deniedPrivilegeNames, String[] removedPrivilegeNames) + throws RepositoryException { + AccessControlManager accessControlManager = getAccessControlManager(session); + SetString specifiedPrivilegeNames = new HashSetString(); + SetString newGrantedPrivilegeNames = disaggregateToPrivilegeNames(accessControlManager, grantedPrivilegeNames, specifiedPrivilegeNames); + SetString newDeniedPrivilegeNames = disaggregateToPrivilegeNames(accessControlManager, deniedPrivilegeNames, specifiedPrivilegeNames); + disaggregateToPrivilegeNames(accessControlManager, removedPrivilegeNames, specifiedPrivilegeNames); + + // Get or create the ACL for the node
svn commit: r915670 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ launchpad/testing/src/test/java/org/apache/sling/launchpad
Author: enorman Date: Wed Feb 24 04:44:43 2010 New Revision: 915670 URL: http://svn.apache.org/viewvc?rev=915670view=rev Log: SLING-997 handle merges involving aggregate privileges properly Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java?rev=915670r1=915669r2=915670view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java Wed Feb 24 04:44:43 2010 @@ -100,7 +100,6 @@ /* (non-Javadoc) * @see org.apache.sling.jackrabbit.accessmanager.post.AbstractAccessPostServlet#handleOperation(org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.servlets.HtmlResponse, java.util.List) */ - @SuppressWarnings(unchecked) @Override protected void handleOperation(SlingHttpServletRequest request, HtmlResponse htmlResponse, ListModification changes) @@ -133,12 +132,70 @@ } } + try { + AccessControlManager accessControlManager = AccessControlUtil.getAccessControlManager(session); - ListString grantedPrivilegeNames = new ArrayListString(); - ListString deniedPrivilegeNames = new ArrayListString(); - //SLING-997: keep track of the privilege names that were posted, so the others can be preserved - SetString postedPrivilegeNames = new HashSetString(); - Enumeration parameterNames = request.getParameterNames(); + //SLING-997: keep track of the privilege names that were posted, so the others can be preserved + PrivilegesState privilegesInfo = new PrivilegesState(log.isDebugEnabled()); + + //calculate which privileges were POSTed. + collectPostedPrivilegeNames(request, + accessControlManager, + privilegesInfo); + + //find the existing ACL + AccessControlList updatedAcl = getAccessControlList(accessControlManager, resourcePath, true); + + //keep track of the existing ACEs for the target principal + ListAccessControlEntry oldAces = processExistingAccessControlEntries(resourcePath, + authorizable, + accessControlManager, + updatedAcl, + privilegesInfo); + + //remove the old ACEs. Re-created below. + if (!oldAces.isEmpty()) { + for (AccessControlEntry ace : oldAces) { + updatedAcl.removeAccessControlEntry(ace); + } + } + + //re-aggregate the granted/denied privileges into the best matched aggregate privilege + reaggregatePrivileges(resourcePath, + accessControlManager, + privilegesInfo); + + //add fresh ACEs with the granted privileges + buildFreshAccessControlEntries(authorizable, + accessControlManager, + updatedAcl, + privilegesInfo); + + //store the updated ACL + accessControlManager.setPolicy(resourcePath, updatedAcl); + if (session.hasPendingChanges()) { + session.save(); + } + + if (log.isDebugEnabled()) { + log.debug(Updated ACE for principalId {0} for resource {1) from {2} to {3}, new Object [] { + authorizable.getID(), resourcePath
svn commit: r915677 - in /sling/trunk/bundles/extensions/formauth/src/main: java/org/apache/sling/formauth/AuthenticationFormServlet.java resources/org/apache/sling/formauth/login.html
Author: enorman Date: Wed Feb 24 05:22:04 2010 New Revision: 915677 URL: http://svn.apache.org/viewvc?rev=915677view=rev Log: SLING-1116 make sure the login form action is an absolute path Modified: sling/trunk/bundles/extensions/formauth/src/main/java/org/apache/sling/formauth/AuthenticationFormServlet.java sling/trunk/bundles/extensions/formauth/src/main/resources/org/apache/sling/formauth/login.html Modified: sling/trunk/bundles/extensions/formauth/src/main/java/org/apache/sling/formauth/AuthenticationFormServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/formauth/src/main/java/org/apache/sling/formauth/AuthenticationFormServlet.java?rev=915677r1=915676r2=915677view=diff == --- sling/trunk/bundles/extensions/formauth/src/main/java/org/apache/sling/formauth/AuthenticationFormServlet.java (original) +++ sling/trunk/bundles/extensions/formauth/src/main/java/org/apache/sling/formauth/AuthenticationFormServlet.java Wed Feb 24 05:22:04 2010 @@ -112,6 +112,7 @@ form = form.replace(${resource}, getResource(request)); form = form.replace(${j_reason}, getReason(request)); +form = form.replace(${requestContextPath}, request.getContextPath()); return form; } Modified: sling/trunk/bundles/extensions/formauth/src/main/resources/org/apache/sling/formauth/login.html URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/formauth/src/main/resources/org/apache/sling/formauth/login.html?rev=915677r1=915676r2=915677view=diff == --- sling/trunk/bundles/extensions/formauth/src/main/resources/org/apache/sling/formauth/login.html (original) +++ sling/trunk/bundles/extensions/formauth/src/main/resources/org/apache/sling/formauth/login.html Wed Feb 24 05:22:04 2010 @@ -58,7 +58,7 @@ div id=main!-- Login Form -- h3Login:/h3 -form id=loginform method=POST action=j_security_check +form id=loginform method=POST action=${requestContextPath}/j_security_check enctype=multipart/form-data accept-charset=UTF-8 input type=hidden name=_charset_ value=UTF-8 /
svn commit: r912387 - in /sling/trunk: bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ launchpad/testing/src/test/java/org/apache/sling/launchpad
Author: enorman Date: Sun Feb 21 18:37:45 2010 New Revision: 912387 URL: http://svn.apache.org/viewvc?rev=912387view=rev Log: SLING-997 ModifyAceServlet replaces rather than merges privileges Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/accessManager/ModifyAceTest.java Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java?rev=912387r1=912386r2=912387view=diff == --- sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java (original) +++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/ModifyAceServlet.java Sun Feb 21 18:37:45 2010 @@ -19,7 +19,9 @@ import java.security.Principal; import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.jcr.Item; import javax.jcr.RepositoryException; @@ -134,19 +136,23 @@ ListString grantedPrivilegeNames = new ArrayListString(); ListString deniedPrivilegeNames = new ArrayListString(); + //SLING-997: keep track of the privilege names that were posted, so the others can be preserved + SetString postedPrivilegeNames = new HashSetString(); Enumeration parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { Object nextElement = parameterNames.nextElement(); if (nextElement instanceof String) { String paramName = (String)nextElement; if (paramName.startsWith(privilege@)) { + String privilegeName = paramName.substring(10); + //keep track of which privileges should be changed + postedPrivilegeNames.add(privilegeName); + String parameterValue = request.getParameter(paramName); if (parameterValue != null parameterValue.length() 0) { if (granted.equals(parameterValue)) { - String privilegeName = paramName.substring(10); grantedPrivilegeNames.add(privilegeName); } else if (denied.equals(parameterValue)) { - String privilegeName = paramName.substring(10); deniedPrivilegeNames.add(privilegeName); } } @@ -165,6 +171,9 @@ newPrivileges = new StringBuilder(); } + ListPrivilege preserveGrantedPrivileges = new ArrayListPrivilege(); + ListPrivilege preserveDeniedPrivileges = new ArrayListPrivilege(); + //keep track of the existing Aces for the target principal AccessControlEntry[] accessControlEntries = updatedAcl.getAccessControlEntries(); ListAccessControlEntry oldAces = new ArrayListAccessControlEntry(); @@ -175,20 +184,25 @@ } oldAces.add(ace); - if (log.isDebugEnabled()) { - //collect the information for debug logging - boolean isAllow = AccessControlUtil.isAllow(ace); - Privilege[] privileges = ace.getPrivileges(); - for (Privilege privilege : privileges) { - if (oldPrivileges.length() 0) { - oldPrivileges.append(, ); //separate entries by commas - } + boolean isAllow = AccessControlUtil.isAllow(ace
svn commit: r912388 - in /sling/trunk: bundles/extensions/groovy/ bundles/jcr/webconsole/ contrib/commons/fsclassloader/ contrib/commons/html/ contrib/jcr/prefs/ contrib/scripting/scala/script/
Author: enorman Date: Sun Feb 21 18:45:05 2010 New Revision: 912388 URL: http://svn.apache.org/viewvc?rev=912388view=rev Log: added some eclipse project files to svn:ignore Modified: sling/trunk/bundles/extensions/groovy/ (props changed) sling/trunk/bundles/jcr/webconsole/ (props changed) sling/trunk/contrib/commons/fsclassloader/ (props changed) sling/trunk/contrib/commons/html/ (props changed) sling/trunk/contrib/jcr/prefs/ (props changed) sling/trunk/contrib/scripting/scala/script/ (props changed) Propchange: sling/trunk/bundles/extensions/groovy/ -- --- svn:ignore (original) +++ svn:ignore Sun Feb 21 18:45:05 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project Propchange: sling/trunk/bundles/jcr/webconsole/ -- --- svn:ignore (original) +++ svn:ignore Sun Feb 21 18:45:05 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project Propchange: sling/trunk/contrib/commons/fsclassloader/ -- --- svn:ignore (original) +++ svn:ignore Sun Feb 21 18:45:05 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project Propchange: sling/trunk/contrib/commons/html/ -- --- svn:ignore (original) +++ svn:ignore Sun Feb 21 18:45:05 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project Propchange: sling/trunk/contrib/jcr/prefs/ -- --- svn:ignore (original) +++ svn:ignore Sun Feb 21 18:45:05 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project Propchange: sling/trunk/contrib/scripting/scala/script/ -- --- svn:ignore (original) +++ svn:ignore Sun Feb 21 18:45:05 2010 @@ -1 +1,4 @@ target +.settings +.classpath +.project