You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:48:43 UTC
[sling-org-apache-sling-jcr-jackrabbit-usermanager] 14/24:
SLING-1578 reduce code duplication between post servlet and usermanager
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.jcr.jackrabbit.usermanager-2.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-jackrabbit-usermanager.git
commit 7f905a7ab07f96f1e83e2d7d851938e41b5d3156
Author: Eric Norman <en...@apache.org>
AuthorDate: Sun Aug 8 15:31:36 2010 +0000
SLING-1578 reduce code duplication between post servlet and usermanager
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/jackrabbit-usermanager@983427 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 4 +
.../usermanager/impl/helper/DateParser.java | 141 ------------
.../usermanager/impl/helper/RequestProperty.java | 256 ---------------------
.../impl/post/AbstractAuthorizablePostServlet.java | 4 +-
.../usermanager/impl/post/CreateGroupServlet.java | 2 +-
.../usermanager/impl/post/CreateUserServlet.java | 2 +-
.../usermanager/impl/post/UpdateGroupServlet.java | 2 +-
.../usermanager/impl/post/UpdateUserServlet.java | 2 +-
8 files changed, 10 insertions(+), 403 deletions(-)
diff --git a/pom.xml b/pom.xml
index 86f2168..ef4f7b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -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>
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/DateParser.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/DateParser.java
deleted file mode 100644
index e67c5df..0000000
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/DateParser.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * 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.impl.helper;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Locale;
-
-import javax.jcr.Value;
-import javax.jcr.ValueFactory;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Takes a string representation of a time-date string and tries for parse it
- * using different formats.
- */
-public class DateParser {
-
- /**
- * default log
- */
- private static final Logger log = LoggerFactory.getLogger(DateParser.class);
-
- /**
- * lits of formats
- */
- private final List<DateFormat> formats = new LinkedList<DateFormat>();
-
- /**
- * Registers a format string to the list of internally checked ones. Uses
- * the {@link SimpleDateFormat}.
- *
- * @param format format as in {@link SimpleDateFormat}
- * @throws IllegalArgumentException if the format is not valid.
- */
- public void register(String format) {
- register(new SimpleDateFormat(format, Locale.US));
- }
-
- /**
- * Registers a date format to the list of internally checked ones.
- *
- * @param format date format
- */
- public void register(DateFormat format) {
- formats.add(format);
- }
-
- /**
- * Parses the given source string and returns the respective calendar
- * instance. If no format matches returns <code>null</code>.
- * <p/>
- * Note: method is synchronized because SimpleDateFormat is not.
- *
- * @param source date time source string
- * @return calendar representation of the source or <code>null</code>
- */
- public synchronized Calendar parse(String source) {
- for (DateFormat fmt : formats) {
- try {
- Date d = fmt.parse(source);
- if (log.isDebugEnabled()) {
- log.debug("Parsed " + source + " using " + fmt + " into "
- + d);
- }
- Calendar c = Calendar.getInstance();
- c.setTime(d);
- return c;
- } catch (ParseException e) {
- if (log.isDebugEnabled()) {
- log.debug("Failed parsing " + source + " using " + fmt);
- }
- }
- }
- return null;
- }
-
- /**
- * Parses the given source strings and returns the respective calendar
- * instances. If no format matches for any of the sources returns
- * <code>null</code>.
- * <p/>
- * Note: method is synchronized because SimpleDateFormat is not.
- *
- * @param sources date time source strings
- * @return calendar representations of the source or <code>null</code>
- */
- public synchronized Calendar[] parse(String sources[]) {
- Calendar ret[] = new Calendar[sources.length];
- for (int i = 0; i < sources.length; i++) {
- if ((ret[i] = parse(sources[i])) == null) {
- return null;
- }
- }
- return ret;
- }
-
- /**
- * Parses the given source strings and returns the respective jcr date value
- * instances. If no format matches for any of the sources returns
- * <code>null</code>.
- * <p/>
- * Note: method is synchronized because SimpleDateFormat is not.
- *
- * @param sources date time source strings
- * @param factory the value factory
- * @return jcr date value representations of the source or <code>null</code>
- */
- public synchronized Value[] parse(String sources[], ValueFactory factory) {
- Value ret[] = new Value[sources.length];
- for (int i = 0; i < sources.length; i++) {
- Calendar c = parse(sources[i]);
- if (c == null) {
- return null;
- }
- ret[i] = factory.createValue(c);
- }
- return ret;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/RequestProperty.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/RequestProperty.java
deleted file mode 100644
index 8a99c1d..0000000
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/helper/RequestProperty.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * 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.impl.helper;
-
-import org.apache.sling.api.request.RequestParameter;
-import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.servlets.post.SlingPostConstants;
-
-/**
- * This is a copy of the class from 'org.apache.sling.servlets.post.impl.helper'
- * which is not exported. Encapsulates all infos from the respective request
- * parameters that are needed to create the repository property
- */
-public class RequestProperty {
-
- private static final RequestParameter[] EMPTY_PARAM_ARRAY = new RequestParameter[0];
-
- public static final String DEFAULT_IGNORE = SlingPostConstants.RP_PREFIX
- + "ignore";
-
- public static final String DEFAULT_NULL = SlingPostConstants.RP_PREFIX
- + "null";
-
- private final String path;
-
- private final String name;
-
- private final String parentPath;
-
- private RequestParameter[] values;
-
- private String[] stringValues;
-
- private String typeHint;
-
- private boolean hasMultiValueTypeHint;
-
- private RequestParameter[] defaultValues = EMPTY_PARAM_ARRAY;
-
- private boolean isDelete;
-
- private String repositoryResourcePath;
-
- private boolean isRepositoryResourceMove;
-
- public RequestProperty(String path) {
- assert path.startsWith("/");
- this.path = ResourceUtil.normalize(path);
- this.parentPath = ResourceUtil.getParent(path);
- this.name = ResourceUtil.getName(path);
- }
-
- public String getTypeHint() {
- return typeHint;
- }
-
- public boolean hasMultiValueTypeHint() {
- return this.hasMultiValueTypeHint;
- }
-
- public void setTypeHintValue(String typeHint) {
- if (typeHint != null && typeHint.endsWith("[]")) {
- this.typeHint = typeHint.substring(0, typeHint.length() - 2);
- this.hasMultiValueTypeHint = true;
- } else {
- this.typeHint = typeHint;
- this.hasMultiValueTypeHint = false;
- }
- }
-
- public String getPath() {
- return path;
- }
-
- public String getName() {
- return name;
- }
-
- public String getParentPath() {
- return parentPath;
- }
-
- public boolean hasValues() {
- return values != null;
- }
-
- public RequestParameter[] getValues() {
- return values;
- }
-
- public void setValues(RequestParameter[] values) {
- this.values = values;
- }
-
- public RequestParameter[] getDefaultValues() {
- return defaultValues;
- }
-
- public void setDefaultValues(RequestParameter[] defaultValues) {
- if (defaultValues == null) {
- this.defaultValues = EMPTY_PARAM_ARRAY;
- } else {
- this.defaultValues = defaultValues;
- }
- }
-
- public boolean isFileUpload() {
- return !values[0].isFormField();
- }
-
- /**
- * Checks if this property provides any values. this is the case if one of
- * the values is not empty or if the default handling is not 'ignore'
- *
- * @return <code>true</code> if this property provides values
- */
- public boolean providesValue() {
- // should void double creation of string values
- String[] sv = getStringValues();
- if (sv == null) {
- // is missleading return type. but means that property should not
- // get auto-create values
- return true;
- }
- for (String s : sv) {
- if (!s.equals("")) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns the assembled string array out of the provided request values and
- * default values.
- *
- * @return a String array or <code>null</code> if the property needs to be
- * removed.
- */
- public String[] getStringValues() {
- if (stringValues == null) {
- if (values.length > 1) {
- // TODO: how the default values work for MV props is not very
- // clear
- stringValues = new String[values.length];
- for (int i = 0; i < stringValues.length; i++) {
- stringValues[i] = values[i].getString();
- }
- } else {
- String value = values[0].getString();
- if (value.equals("")) {
- if (defaultValues.length == 1) {
- String defValue = defaultValues[0].getString();
- if (defValue.equals(DEFAULT_IGNORE)) {
- // ignore means, do not create empty values
- return new String[0];
- } else if (defValue.equals(DEFAULT_NULL)) {
- // null means, remove property if exist
- return null;
- }
- value = defValue;
- }
- }
- stringValues = new String[] { value };
- }
- }
- return stringValues;
- }
-
- /**
- * Specifies whether this property should be deleted before any new content
- * is to be set according to the values stored.
- *
- * @param isDelete <code>true</code> if the repository item described by
- * this is to be deleted before any other operation.
- */
- public void setDelete(boolean isDelete) {
- this.isDelete = isDelete;
- }
-
- /**
- * Returns <code>true</code> if the repository item described by this is to
- * be deleted before setting new content to it.
- */
- public boolean isDelete() {
- return isDelete;
- }
-
- /**
- * Sets the path of the repository item from which the content for this
- * property is to be copied or moved. The path may be relative in which case
- * it will be resolved relative to the absolute path of this property.
- *
- * @param sourcePath The path of the repository item to get the content from
- * @param isMove <code>true</code> if the source content is to be moved,
- * otherwise the source content is copied from the repository
- * item.
- */
- public void setRepositorySource(String sourcePath, boolean isMove) {
-
- // make source path absolute
- if (!sourcePath.startsWith("/")) {
- sourcePath = getParentPath() + "/" + sourcePath;
- sourcePath = ResourceUtil.normalize(sourcePath);
- }
-
- this.repositoryResourcePath = sourcePath;
- this.isRepositoryResourceMove = isMove;
- }
-
- /**
- * Returns <code>true</code> if the content of this property is to be set by
- * moving content from another repository item.
- *
- * @see #getRepositorySource()
- */
- public boolean hasRepositoryMoveSource() {
- return isRepositoryResourceMove;
- }
-
- /**
- * Returns <code>true</code> if the content of this property is to be set by
- * copying content from another repository item.
- *
- * @see #getRepositorySource()
- */
- public boolean hasRepositoryCopySource() {
- return getRepositorySource() != null && !hasRepositoryMoveSource();
- }
-
- /**
- * Returns the absolute path of the repository item from which the content
- * for this property is to be copied or moved.
- *
- * @see #hasRepositoryCopySource()
- * @see #hasRepositoryMoveSource()
- * @see #setRepositorySource(String, boolean)
- */
- public String getRepositorySource() {
- return repositoryResourcePath;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java
index fccf282..315f636 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java
@@ -44,8 +44,8 @@ import org.apache.sling.api.servlets.HtmlResponse;
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;
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java
index 5a63b07..5a24c84 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateGroupServlet.java
@@ -28,7 +28,7 @@ import org.apache.jackrabbit.api.security.user.Group;
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;
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java
index f983d15..c5f102d 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/CreateUserServlet.java
@@ -28,7 +28,7 @@ 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.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.api.SlingRepository;
import org.apache.sling.jcr.base.util.AccessControlUtil;
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java
index c4ed8f2..e9de57c 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateGroupServlet.java
@@ -27,7 +27,7 @@ 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.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.servlets.post.Modification;
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateUserServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateUserServlet.java
index a65dfbd..cf908a3 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateUserServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/UpdateUserServlet.java
@@ -27,7 +27,7 @@ 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.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.servlets.post.Modification;
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.