dflorey 2004/06/17 07:54:57
Modified:
proposals/projector/src/java/org/apache/slide/projector/processor/security
DeleteUser.java AddRole.java
proposals/projector/src/java/org/apache/slide/projector/processor/table
TableGenerator.java TableMapRenderer.java
TablePager.java
proposals/projector/src/java/org/apache/slide/projector/connector/webdav
WebdavConnector.java
proposals/projector/src/java/org/apache/slide/projector/processor/query
PropertyQuery.java
proposals/projector/src/java/org/apache/slide/projector/connector
Connector.java
proposals/projector/src/java/org/apache/slide/projector/processor
TemplateMapRenderer.java
proposals/projector/src/java/org/apache/slide/projector/descriptor
MapValueDescriptor.java
proposals/projector/src/java/org/apache/slide/projector/processor/tree
TreeLocalizer.java
Added:
proposals/projector/src/java/org/apache/slide/projector/processor/security
RemoveRole.java DeleteRole.java ListRoles.java
CreateRole.java
proposals/projector/src/java/org/apache/slide/projector/connector
RoleExistsException.java
Log:
Admin application core working (but still ugly...)
Revision Changes Path
1.3 +7 -5
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/DeleteUser.java
Index: DeleteUser.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/DeleteUser.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DeleteUser.java 16 Jun 2004 16:45:37 -0000 1.2
+++ DeleteUser.java 17 Jun 2004 14:54:56 -0000 1.3
@@ -23,6 +23,7 @@
package org.apache.slide.projector.processor.security;
+import org.apache.slide.projector.Constants;
import org.apache.slide.projector.Context;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Result;
@@ -30,6 +31,7 @@
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.descriptor.*;
import org.apache.slide.projector.i18n.ParameterMessage;
+import org.apache.slide.projector.value.URIValue;
import java.util.Map;
@@ -47,8 +49,8 @@
private final static ResultDescriptor resultDescriptor = new
ResultDescriptor(new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR });
public Result process(Map parameter, Context context) throws Exception {
- URI uri = (URI)parameter.get(USER);
- ConnectorFactory.getConnector().deleteUser(uri, context.getCredentials());
+ URI user = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(USER));
+ ConnectorFactory.getConnector().deleteUser(user, context.getCredentials());
return Result.OK;
}
1.2 +6 -4
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/AddRole.java
Index: AddRole.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/AddRole.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AddRole.java 16 Jun 2004 16:45:37 -0000 1.1
+++ AddRole.java 17 Jun 2004 14:54:56 -0000 1.2
@@ -23,6 +23,7 @@
package org.apache.slide.projector.processor.security;
+import org.apache.slide.projector.Constants;
import org.apache.slide.projector.Context;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Result;
@@ -30,6 +31,7 @@
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.descriptor.*;
import org.apache.slide.projector.i18n.ParameterMessage;
+import org.apache.slide.projector.value.URIValue;
import java.util.Map;
@@ -49,8 +51,8 @@
private final static ResultDescriptor resultDescriptor = new
ResultDescriptor(new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR });
public Result process(Map parameter, Context context) throws Exception {
- URI user = (URI)parameter.get(USER);
- URI role = (URI)parameter.get(ROLE);
+ URI user = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(USER));
+ URI role = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(ROLE));
ConnectorFactory.getConnector().addRole(user, role, context.getCredentials());
return Result.OK;
}
1.1
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/RemoveRole.java
Index: RemoveRole.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/RemoveRole.java,v
1.1 2004/06/17 14:54:56 dflorey Exp $
* $Revision: 1.1 $
* $Date: 2004/06/17 14:54:56 $
*
* ====================================================================
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.slide.projector.processor.security;
import org.apache.slide.projector.Constants;
import org.apache.slide.projector.Context;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Result;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.descriptor.*;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.value.URIValue;
import java.util.Map;
/**
* The Event class
*
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
*/
public class RemoveRole implements Processor {
public final static String USER = "user";
public final static String ROLE = "role";
private final static ParameterDescriptor[] parameterDescriptors = new
ParameterDescriptor[] {
new ParameterDescriptor(USER, new
ParameterMessage("addRole/parameter/user"), new URIValueDescriptor()),
new ParameterDescriptor(ROLE, new
ParameterMessage("addRole/parameter/role"), new URIValueDescriptor())
};
private final static ResultDescriptor resultDescriptor = new
ResultDescriptor(new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR });
public Result process(Map parameter, Context context) throws Exception {
URI user = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(USER));
URI role = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(ROLE));
ConnectorFactory.getConnector().removeRole(user, role,
context.getCredentials());
return Result.OK;
}
public ParameterDescriptor[] getParameterDescriptors() {
return parameterDescriptors;
}
public ResultDescriptor getResultDescriptor() {
return resultDescriptor;
}
}
1.1
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/DeleteRole.java
Index: DeleteRole.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/DeleteRole.java,v
1.1 2004/06/17 14:54:56 dflorey Exp $
* $Revision: 1.1 $
* $Date: 2004/06/17 14:54:56 $
*
* ====================================================================
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.slide.projector.processor.security;
import org.apache.slide.projector.Constants;
import org.apache.slide.projector.Context;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Result;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.descriptor.*;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.value.URIValue;
import java.util.Map;
/**
* The Event class
*
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
*/
public class DeleteRole implements Processor {
public final static String ROLE = "role";
private final static ParameterDescriptor[] parameterDescriptors = new
ParameterDescriptor[] {
new ParameterDescriptor(ROLE, new
ParameterMessage("deleteRole/parameter/role"), new URIValueDescriptor())
};
private final static ResultDescriptor resultDescriptor = new
ResultDescriptor(new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR });
public Result process(Map parameter, Context context) throws Exception {
URI role = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(ROLE));
ConnectorFactory.getConnector().deleteRole(role, context.getCredentials());
return Result.OK;
}
public ParameterDescriptor[] getParameterDescriptors() {
return parameterDescriptors;
}
public ResultDescriptor getResultDescriptor() {
return resultDescriptor;
}
}
1.1
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/ListRoles.java
Index: ListRoles.java
===================================================================
package org.apache.slide.projector.processor.security;
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.connector.UserExistsException;
import org.apache.slide.projector.descriptor.*;
import org.apache.slide.projector.i18n.DefaultMessage;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.value.ArrayValue;
import org.apache.slide.projector.value.NullValue;
import org.apache.slide.projector.value.URIValue;
import org.apache.slide.projector.value.Value;
import org.apache.slide.projector.Information;
import org.apache.slide.projector.*;
import java.util.Map;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
* @version $Revision: 1.1 $
*/
public class ListRoles implements Processor {
private final static String USER = "user";
private final static String ROLES = "roles";
private final static String OK = "ok";
private final static String FAILED = "failed";
private final static ParameterDescriptor [] parameterDescriptor = new
ParameterDescriptor[] {
new ParameterDescriptor(USER, new
ParameterMessage("listRoles/parameter/user"), new URIValueDescriptor())
};
private final static ResultDescriptor resultDescriptor = new ResultDescriptor(
new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR },
new ResultEntryDescriptor[] {
new ResultEntryDescriptor(ROLES, new
DefaultMessage("listRoles/result/roles"), ArrayValue.CONTENT_TYPE, false)
});
public Result process(Map parameter, Context context) throws Exception {
URI user = new URIValue(Constants.REPOSITORY_DOMAIN+parameter.get(USER));
ArrayValue roles = ConnectorFactory.getConnector().listRoles(user,
context.getCredentials());
return new Result(StateDescriptor.OK, ROLES, roles);
}
public ParameterDescriptor[] getParameterDescriptors() {
return parameterDescriptor;
}
public ResultDescriptor getResultDescriptor() {
return resultDescriptor;
}
}
1.1
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/security/CreateRole.java
Index: CreateRole.java
===================================================================
package org.apache.slide.projector.processor.security;
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.connector.RoleExistsException;
import org.apache.slide.projector.connector.UserExistsException;
import org.apache.slide.projector.descriptor.*;
import org.apache.slide.projector.i18n.DefaultMessage;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.value.NullValue;
import org.apache.slide.projector.value.URIValue;
import org.apache.slide.projector.value.Value;
import org.apache.slide.projector.Information;
import org.apache.slide.projector.*;
import java.util.Map;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
* @version $Revision: 1.1 $
*/
public class CreateRole implements Processor {
private final static String ROLENAME = "rolename";
private final static String ROLE = "role";
private final static String OK = "ok";
private final static String FAILED = "failed";
private final static ParameterDescriptor [] parameterDescriptor = new
ParameterDescriptor[] {
new ParameterDescriptor(ROLENAME, new
ParameterMessage("createRole/parameter/rolename"), new StringValueDescriptor(1,24)),
};
private final static ResultDescriptor resultDescriptor = new ResultDescriptor(
new StateDescriptor[] {
new StateDescriptor(OK, new
DefaultMessage("createRole/state/ok")),
new StateDescriptor(FAILED, new
DefaultMessage("createRole/state/failed"))
}, new ResultEntryDescriptor[] {
new ResultEntryDescriptor(ROLE, new
DefaultMessage("createRole/result/role"), URIValue.CONTENT_TYPE, false)
});
public Result process(Map parameter, Context context) throws Exception {
String rolename = parameter.get(ROLENAME).toString();
String state = OK;
Value role = NullValue.NULL;
try {
role = ConnectorFactory.getConnector().createRole(rolename,
context.getCredentials());
} catch ( RoleExistsException exception ) {
context.addInformation(new Information(Information.ERROR,
exception.getErrorMessage(), new String[] { ROLENAME }));
state = FAILED;
}
if ( role == null ) {
context.addInformation(new Information(Information.ERROR, new
ErrorMessage("createRole/failed"), new String[0]));
state = FAILED;
}
return new Result(state, ROLE, role);
}
public ParameterDescriptor[] getParameterDescriptors() {
return parameterDescriptor;
}
public ResultDescriptor getResultDescriptor() {
return resultDescriptor;
}
}
1.3 +2 -2
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TableGenerator.java
Index: TableGenerator.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TableGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TableGenerator.java 1 Jun 2004 07:49:58 -0000 1.2
+++ TableGenerator.java 17 Jun 2004 14:54:56 -0000 1.3
@@ -21,7 +21,7 @@
* @version $Revision$
*/
-public class TableGenerator extends TemplateMapRenderer {
+public class TableGenerator extends TableMapRenderer {
final private static String HEADER_FRAGMENT = "header";
final private static String FOOTER_FRAGMENT = "footer";
final private static String FIRST_FRAGMENT = "first";
1.4 +40 -11
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TableMapRenderer.java
Index: TableMapRenderer.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TableMapRenderer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TableMapRenderer.java 15 Jun 2004 16:34:21 -0000 1.3
+++ TableMapRenderer.java 17 Jun 2004 14:54:56 -0000 1.4
@@ -6,13 +6,17 @@
import org.apache.slide.projector.processor.SimpleProcessor;
import org.apache.slide.projector.util.StoreHelper;
import org.apache.slide.projector.value.*;
+import org.apache.slide.projector.descriptor.ArrayValueDescriptor;
+import org.apache.slide.projector.descriptor.MapValueDescriptor;
import org.apache.slide.projector.descriptor.NumberValueDescriptor;
import org.apache.slide.projector.descriptor.ParameterDescriptor;
import org.apache.slide.projector.descriptor.StringValueDescriptor;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.HashMap;
@@ -39,6 +43,7 @@
private Template emptyTemplate;
private ParameterDescriptor []parameterDescriptors;
+ private String[] repeatedFragments;
public TableMapRenderer() {
setRequiredFragments(new String[] { DEFAULT_FRAGMENT });
@@ -47,23 +52,35 @@
}
public void configure(StreamableValue config) throws ConfigurationException {
- super.configure(config);
+ super.configure(config);
ParameterDescriptor []parentParameterDescriptors =
super.getParameterDescriptors();
// remove fragment parameter
- parameterDescriptors = new
ParameterDescriptor[parentParameterDescriptors.length+3];
- int index = 0;
+ List parameterDescriptorList = new ArrayList();
for ( int i = 0; i < parentParameterDescriptors.length; i++ ) {
ParameterDescriptor descriptor = parentParameterDescriptors[i];
if ( descriptor.getName() != FRAGMENT ) {
- parameterDescriptors[index] = parentParameterDescriptors[i];
- index++;
+ if ( descriptor.getName().equals(SimpleProcessor.INPUT) ) {
+ // check if entry descriptor is caused by repeated fragments
+ List entryDescriptors =
((MapValueDescriptor)descriptor.getValueDescriptor()).getEntryDescriptors();
+ for ( Iterator j = entryDescriptors.iterator(); j.hasNext(); )
{
+ ParameterDescriptor entryDescriptor =
(ParameterDescriptor)j.next();
+ if ( !repeatedParameterDescriptor(entryDescriptor) ) {
+ parameterDescriptorList.add(entryDescriptor);
+ j.remove();
+ }
+ }
+ parameterDescriptorList.add(new
ParameterDescriptor(SimpleProcessor.INPUT, new
ParameterMessage("tableMapRenderer/input"), new
ArrayValueDescriptor(parentParameterDescriptors[i].getValueDescriptor())));
+ } else {
+ parameterDescriptorList.add(descriptor);
+ }
}
}
- parameterDescriptors[parentParameterDescriptors.length-1] = new
ParameterDescriptor(OFFSET, new ParameterMessage("tableRenderer/offset"), new
NumberValueDescriptor(), new NumberValue(new Integer(0)));
- parameterDescriptors[parentParameterDescriptors.length] = new
ParameterDescriptor(ITEMS_PER_PAGE, new ParameterMessage("tableRenderer/length"), new
NumberValueDescriptor(), new NumberValue(new Integer(-10)));
- parameterDescriptors[parentParameterDescriptors.length+1] = new
ParameterDescriptor(TableHandler.ID, new ParameterMessage("tableRenderer/id"), new
StringValueDescriptor(), new StringValue("table"));
- parameterDescriptors[parentParameterDescriptors.length+2] = new
ParameterDescriptor(TableHandler.STORE, new ParameterMessage("tableRenderer/store"),
new StringValueDescriptor(Store.stores), new StringValue(Store.stores[Store.SESSION]));
-
+ parameterDescriptorList.add(new ParameterDescriptor(OFFSET, new
ParameterMessage("tableRenderer/offset"), new NumberValueDescriptor(), new
NumberValue(new Integer(0))));
+ parameterDescriptorList.add(new ParameterDescriptor(ITEMS_PER_PAGE, new
ParameterMessage("tableRenderer/length"), new NumberValueDescriptor(), new
NumberValue(new Integer(-10))));
+ parameterDescriptorList.add(new ParameterDescriptor(TableHandler.ID, new
ParameterMessage("tableRenderer/id"), new StringValueDescriptor(), new
StringValue("table")));
+ parameterDescriptorList.add(new ParameterDescriptor(TableHandler.STORE, new
ParameterMessage("tableRenderer/store"), new StringValueDescriptor(Store.stores), new
StringValue(Store.stores[Store.SESSION])));
+ parameterDescriptors = (ParameterDescriptor[]
)parameterDescriptorList.toArray(new
ParameterDescriptor[parameterDescriptorList.size()]);
+
headerTemplate = getOptionalFragment(HEADER_FRAGMENT);
footerTemplate = getOptionalFragment(FOOTER_FRAGMENT);
firstTemplate = getOptionalFragment(FIRST_FRAGMENT);
@@ -112,7 +129,7 @@
length = maxIndex-offset;
}
if ( maxIndex == 0 ) {
- emptyTemplate.evaluate(buffer, parameter);
+ if ( emptyTemplate != null ) emptyTemplate.evaluate(buffer, parameter);
} else {
if ( headerTemplate != null ) headerTemplate.evaluate(buffer,
parameter);
for ( int i = 0; i < length; i++ ) {
@@ -143,5 +160,17 @@
public ParameterDescriptor[] getParameterDescriptors() {
return parameterDescriptors;
+ }
+
+ public void setRepeatedFragments(String[] repeatedFragments) {
+ this.repeatedFragments = repeatedFragments;
+ }
+
+ protected boolean repeatedParameterDescriptor(ParameterDescriptor
entryDescriptor) {
+ List parameterDescriptors =
getTemplateParameterDescriptor(repeatedFragments);
+ if ( parameterDescriptors.contains(entryDescriptor) ) {
+ return true;
+ }
+ return false;
}
}
1.6 +21 -7
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TablePager.java
Index: TablePager.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TablePager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TablePager.java 7 Jun 2004 17:21:53 -0000 1.5
+++ TablePager.java 17 Jun 2004 14:54:56 -0000 1.6
@@ -8,6 +8,9 @@
import org.apache.slide.projector.util.StoreHelper;
import org.apache.slide.projector.value.*;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
@@ -19,6 +22,7 @@
public class TablePager extends TemplateRenderer {
public final static String SHOW_RANGE = "showRange";
public final static String RANGE = "range";
+ public final static String PARAMETER = "parameter";
public final static String TOTAL_PAGES = "totalPages";
public final static String CURRENT_PAGE = "currentPage";
@@ -61,6 +65,7 @@
}
public Result process(Map parameters, Context context) throws Exception {
+ Map parameter = ((MapValue)parameters.get(PARAMETER)).getMap();
boolean showRange =
((BooleanValue)parameters.get(SHOW_RANGE)).booleanValue();
int range = ((NumberValue)parameters.get(RANGE)).getNumber().intValue();
String handlerUrl =
ProcessorManager.getInstance().process(ProcessorManager.URL, HANDLER,
context).toString();
@@ -92,13 +97,13 @@
}
StringBuffer buffer = new StringBuffer();
if (pre != null) pre.evaluate(buffer, parameters);
- createHandler(0, itemsPerPage, handlerUrl, storeName, id, parameters);
+ createHandler(0, itemsPerPage, handlerUrl, storeName, id, parameters,
parameter);
if ( firstSelected != null && !hasPrevious ) {
firstSelected.evaluate(buffer, parameters);
} else if ( first != null) {
first.evaluate(buffer, parameters);
}
- createHandler(Math.max(0, currentPosition - itemsPerPage), itemsPerPage,
handlerUrl, storeName, id, parameters);
+ createHandler(Math.max(0, currentPosition - itemsPerPage), itemsPerPage,
handlerUrl, storeName, id, parameters, parameter);
if (hasPrevious) {
if ( previous != null) previous.evaluate(buffer, parameters);
} else {
@@ -114,7 +119,7 @@
for (; i < length; i += step) {
lastItem = i;
parameters.put(CURRENT_PAGE, new NumberValue(new Integer(i /
itemsPerPage + 1)));
- createHandler(i, Math.min(i+itemsPerPage, length), handlerUrl,
storeName, id, parameters);
+ createHandler(i, Math.min(i+itemsPerPage, length), handlerUrl,
storeName, id, parameters, parameter);
int rangeState = IN;
if (showRange && (i < lowerBorder || i > upperBorder)) rangeState = OUT;
if (showRange && (i == lowerBorder || i == upperBorder)) rangeState =
BORDER;
@@ -142,13 +147,13 @@
templateToUse.evaluate(buffer, parameters);
}
}
- createHandler(currentPosition + itemsPerPage, itemsPerPage, handlerUrl,
storeName, id, parameters);
+ createHandler(currentPosition + itemsPerPage, itemsPerPage, handlerUrl,
storeName, id, parameters, parameter);
if (hasNext) {
if ( next != null) next.evaluate(buffer, parameters);
} else {
if ( nextDisabled != null) nextDisabled.evaluate(buffer, parameters);
}
- createHandler(i-itemsPerPage, length, handlerUrl, storeName, id,
parameters);
+ createHandler(i-itemsPerPage, length, handlerUrl, storeName, id,
parameters, parameter);
if ( lastSelected != null && !hasNext ) {
lastSelected.evaluate(buffer, parameters);
} else if ( last != null) {
@@ -159,11 +164,19 @@
return result;
}
- protected void createHandler(int i, int lastItem, String handlerUrl, String
storeName, String id, Map parameters) {
+ protected void createHandler(int i, int lastItem, String handlerUrl, String
storeName, String id, Map parameters, Map parameter) throws IOException {
parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new
Integer(i)));
StringBuffer handlerBuffer = new StringBuffer(128);
handlerBuffer.append(handlerUrl).append('?').append(TableHandler.TARGET_POSITION).append('=').append(i).
append('&').append(TableHandler.STORE).append('=').append(storeName).append('&').append(TableHandler.ID).append('=').append(id);
+ for ( Iterator j = parameter.entrySet().iterator(); j.hasNext(); ) {
+ Map.Entry entry = (Map.Entry)j.next();
+ if ( entry.getValue() instanceof PrintableValue ) {
+ handlerBuffer.append('&').append(entry.getKey()).append('=');
+ ((PrintableValue)entry.getValue()).print(handlerBuffer);
+ }
+
+ }
parameters.put(HANDLER_URL, new StringValue(handlerBuffer.toString()));
parameters.put(FIRST_ITEM, new NumberValue(new Integer(i+1)));
parameters.put(LAST_ITEM, new NumberValue(new Integer(lastItem)));
@@ -173,6 +186,7 @@
super.configure(config);
// remove fragment parameter
List parameterList = new ArrayList();
+ parameterList.add(new ParameterDescriptor(PARAMETER, new
ParameterMessage("tablePager/parameter"), new MapValueDescriptor(), new MapValue(new
HashMap())));
parameterList.add(new ParameterDescriptor(SHOW_RANGE, new
ParameterMessage("tablePager/showRange"), new BooleanValueDescriptor(),
BooleanValue.FALSE));
parameterList.add(new ParameterDescriptor(RANGE, new
ParameterMessage("tablePager/range"), new NumberValueDescriptor(), new NumberValue(new
Integer(0))));
parameterList.add(new ParameterDescriptor(TableHandler.ID, new
ParameterMessage("tableRenderer/id"), new StringValueDescriptor(), new
StringValue("table")));
1.13 +59 -8
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/connector/webdav/WebdavConnector.java
Index: WebdavConnector.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/connector/webdav/WebdavConnector.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- WebdavConnector.java 16 Jun 2004 16:45:37 -0000 1.12
+++ WebdavConnector.java 17 Jun 2004 14:54:56 -0000 1.13
@@ -12,6 +12,7 @@
import org.apache.slide.projector.Constants;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.connector.Connector;
+import org.apache.slide.projector.connector.RoleExistsException;
import org.apache.slide.projector.connector.Subscriber;
import org.apache.slide.projector.connector.UserExistsException;
import org.apache.slide.projector.i18n.ErrorMessage;
@@ -68,27 +69,47 @@
if ( userExists == NullValue.NULL || userExists != null ) {
throw new UserExistsException(new ErrorMessage("userExists", new
String[] { username }));
} else {
- URI userUri = new
URIValue(Constants.REPOSITORY_DOMAIN+Constants.USERS_DIR+username);
- MkcolMethod mkcolMethod = new MkcolMethod(userUri.toString());
+ URI userUri = new URIValue(Constants.USERS_DIR+username);
+ MkcolMethod mkcolMethod = new
MkcolMethod(Constants.REPOSITORY_DOMAIN+userUri.toString());
mkcolMethod.setDoAuthentication(true);
HttpState httpState = new HttpState();
httpState.setCredentials(null, Constants.REPOSITORY_HOST, credentials);
int state = mkcolMethod.execute(httpState, new
HttpConnection(Constants.REPOSITORY_HOST, Constants.REPOSITORY_PORT,
Constants.REPOSITORY_PROTOCOL));
if ( state == HttpStatus.SC_CREATED ) {
- changePassword(userUri, null, password, credentials);
+ changePassword(new URIValue(Constants.REPOSITORY_DOMAIN+userUri),
null, password, credentials);
return userUri;
}
return null;
}
}
- public void deleteUser(URI uri, Credentials credentials) throws IOException {
- removeResource(uri, credentials);
+ public URI createRole(String rolename, Credentials credentials) throws
RoleExistsException, IOException {
+ Value userExists = getResource(new
URIValue(Constants.REPOSITORY_DOMAIN+Constants.ROLES_DIR+rolename), credentials);
+ if ( userExists == NullValue.NULL || userExists != null ) {
+ throw new RoleExistsException(new ErrorMessage("roleExists", new
String[] { rolename }));
+ } else {
+ URI roleUri = new URIValue(Constants.ROLES_DIR+rolename);
+ MkcolMethod mkcolMethod = new
MkcolMethod(Constants.REPOSITORY_DOMAIN+roleUri.toString());
+ mkcolMethod.setDoAuthentication(true);
+ HttpState httpState = new HttpState();
+ httpState.setCredentials(null, Constants.REPOSITORY_HOST, credentials);
+ int state = mkcolMethod.execute(httpState, new
HttpConnection(Constants.REPOSITORY_HOST, Constants.REPOSITORY_PORT,
Constants.REPOSITORY_PROTOCOL));
+ if ( state == HttpStatus.SC_CREATED ) {
+ return roleUri;
+ }
+ return null;
+ }
+ }
+
+ public void deleteRole(URI role, Credentials credentials) throws IOException {
+ removeResource(role, credentials);
+ }
+
+ public void deleteUser(URI user, Credentials credentials) throws IOException {
+ removeResource(user, credentials);
}
public void addRole(URI user, URI role, Credentials credentials) throws
IOException {
- // Add user to role
- role = new URIValue(Constants.REPOSITORY_DOMAIN+role);
XMLValue roleElement = getPropertyAsXMLValue(role, DAV_NAMESPACE,
"group-member-set", credentials);
Element newUserElement = new Element("href", "DAV:");
newUserElement.addContent(user.toString());
@@ -99,6 +120,36 @@
}
public void removeRole(URI user, URI role, Credentials credentials) throws
IOException {
+ XMLValue membersElement = getPropertyAsXMLValue(role, DAV_NAMESPACE,
"group-member-set", credentials);
+ List members = membersElement.getRootElement().getChildren();
+ for ( Iterator i = members.iterator(); i.hasNext(); ) {
+ Element memberElement = (Element)i.next();
+ String uri = memberElement.getTextTrim();
+ if ( uri.equals(user.toString()) ) {
+ i.remove();
+ break;
+ }
+ }
+ XMLOutputter xout = new XMLOutputter(Format.getCompactFormat());
+ String groupMemberSet =
xout.outputString(membersElement.getRootElement().getContent());
+ setProperty(role, DAV_NAMESPACE, "group-member-set", groupMemberSet,
credentials);
+ }
+
+ public ArrayValue listRoles(URI user, Credentials credentials) throws
IOException {
+ XMLValue membership = getPropertyAsXMLValue(user, DAV_NAMESPACE,
"group-membership", credentials);
+ List roles = membership.getRootElement().getChildren();
+ List roleList = new ArrayList();
+ for ( Iterator i = roles.iterator(); i.hasNext(); ) {
+ Map map = new HashMap();
+ Element roleElement = (Element)i.next();
+ String uri = roleElement.getTextTrim();
+ if ( uri.indexOf(Constants.REPOSITORY_DOMAIN) != -1 ) {
+ uri =
uri.substring(uri.indexOf(Constants.REPOSITORY_DOMAIN)+Constants.REPOSITORY_DOMAIN.length());
+ }
+ map.put("uri", uri);
+ roleList.add(new MapValue(map));
+ }
+ return new ArrayValue((Value [])roleList.toArray(new Value[roleList.size()]));
}
public void changePassword(URI uri, String oldPassword, String newPassword,
Credentials credentials) throws IOException {
@@ -271,7 +322,7 @@
searchResults.put(property.getLocalName(),
property.getPropertyAsString());
}
if ( uri.indexOf(Constants.REPOSITORY_DOMAIN) != -1 ) {
- uri =
uri.substring(uri.indexOf(Constants.REPOSITORY_DOMAIN));
+ uri =
uri.substring(uri.indexOf(Constants.REPOSITORY_DOMAIN)+Constants.REPOSITORY_DOMAIN.length());
}
searchResults.put("uri", uri);
values.add(new MapValue(searchResults));
1.3 +4 -4
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/query/PropertyQuery.java
Index: PropertyQuery.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/query/PropertyQuery.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PropertyQuery.java 1 Jun 2004 07:49:58 -0000 1.2
+++ PropertyQuery.java 17 Jun 2004 14:54:56 -0000 1.3
@@ -60,7 +60,7 @@
};
public Result process(Map parameter, Context context) throws Exception {
- ArrayValue properties = ConnectorFactory.getConnector().getProperties(new
URIValue(Constants.REPOSITORY_DOMAIN+((URIValue)parameter.get(URI)).toString()),
context.getCredentials());
+ ArrayValue properties = ConnectorFactory.getConnector().getProperties(new
URIValue(Constants.REPOSITORY_DOMAIN+((URIValue)parameter.get(URI)).toString()),
context.getCredentials());
if ( properties.getArray().length == 0 ) return new Result(EMPTY);
Result result= new Result(StateDescriptor.OK, ARRAY, properties);
Map properyMap = new HashMap();
1.8 +8 -2
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/connector/Connector.java
Index: Connector.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/connector/Connector.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Connector.java 15 Jun 2004 16:34:20 -0000 1.7
+++ Connector.java 17 Jun 2004 14:54:56 -0000 1.8
@@ -19,9 +19,15 @@
public URI createUser(String user, String password, Credentials credentials)
throws UserExistsException, IOException;
- public void deleteUser(URI uri, Credentials credentials) throws IOException;
+ public void deleteUser(URI user, Credentials credentials) throws IOException;
- public void addRole(URI user, URI role, Credentials credentials) throws
UserExistsException, IOException;
+ public URI createRole(String role, Credentials credentials) throws
RoleExistsException, IOException;
+
+ public void deleteRole(URI role, Credentials credentials) throws IOException;
+
+ public ArrayValue listRoles(URI user, Credentials credentials) throws
IOException;
+
+ public void addRole(URI user, URI role, Credentials credentials) throws
UserExistsException, IOException;
public void removeRole(URI user, URI role, Credentials credentials) throws
UserExistsException, IOException;
1.1
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/connector/RoleExistsException.java
Index: RoleExistsException.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/connector/RoleExistsException.java,v
1.1 2004/06/17 14:54:56 dflorey Exp $
* $Revision: 1.1 $
* $Date: 2004/06/17 14:54:56 $
*
* ====================================================================
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.slide.projector.connector;
import org.apache.slide.projector.ProcessException;
import org.apache.slide.projector.i18n.ErrorMessage;
/**
* The UserExistsException class
*
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
*/
public class RoleExistsException extends ProcessException {
public RoleExistsException(ErrorMessage errorMessage, Throwable cause) {
super(errorMessage, cause);
}
public RoleExistsException(ErrorMessage errorMessage) {
super(errorMessage);
}
}
1.5 +14 -37
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateMapRenderer.java
Index: TemplateMapRenderer.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/TemplateMapRenderer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TemplateMapRenderer.java 15 Jun 2004 16:34:21 -0000 1.4
+++ TemplateMapRenderer.java 17 Jun 2004 14:54:57 -0000 1.5
@@ -13,6 +13,7 @@
import org.apache.slide.projector.value.StringValue;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -23,15 +24,8 @@
private ParameterDescriptor[] parameterDescriptors;
- private String[] repeatedFragments;
-
- public void setRepeatedFragments(String[] repeatedFragments) {
- this.repeatedFragments = repeatedFragments;
- }
-
public void configure(StreamableValue config) throws ConfigurationException {
super.configure(config);
- if ( repeatedFragments == null ) repeatedFragments = getDefinedFragments();
MapValueDescriptor mapValueDescriptor = new MapValueDescriptor();
List parameterDescriptorList = new ArrayList();
for ( Iterator i = parameterDescriptions.iterator(); i.hasNext(); ) {
@@ -40,20 +34,15 @@
if ( entryDescriptor.getName() == FRAGMENT ) {
parameterDescriptorList.add(entryDescriptor);
} else {
- // check if parameter descriptor is caused by repeated fragments
- if ( repeatedParameterDescriptor(entryDescriptor) ) {
- if ( entryDescriptor.isRequired() ) {
- mapValueDescriptor.addEntryDescriptor(new
ParameterDescriptor(entryDescriptor.getName(), new
ParameterMessage("templateMapRenderer/mapEntry"),
entryDescriptor.getValueDescriptor()));
- } else {
- mapValueDescriptor.addEntryDescriptor(new
ParameterDescriptor(entryDescriptor.getName(), new
ParameterMessage("templateMapRenderer/mapEntry"),
entryDescriptor.getValueDescriptor(), entryDescriptor.getDefaultValue() ));
- parameterDescriptorList.add(new
ParameterDescriptor(entryDescriptor.getName(), entryDescriptor.getDescription(),
entryDescriptor.getValueDescriptor(), NullValue.NULL));
- }
+ if ( entryDescriptor.isRequired() ) {
+ mapValueDescriptor.addEntryDescriptor(new
ParameterDescriptor(entryDescriptor.getName(), new
ParameterMessage("templateMapRenderer/mapEntry"),
entryDescriptor.getValueDescriptor()));
} else {
- parameterDescriptorList.add(entryDescriptor);
+ mapValueDescriptor.addEntryDescriptor(new
ParameterDescriptor(entryDescriptor.getName(), new
ParameterMessage("templateMapRenderer/mapEntry"),
entryDescriptor.getValueDescriptor(), entryDescriptor.getDefaultValue() ));
+ parameterDescriptorList.add(new
ParameterDescriptor(entryDescriptor.getName(), entryDescriptor.getDescription(),
entryDescriptor.getValueDescriptor(), NullValue.NULL));
}
}
}
- parameterDescriptorList.add(new ParameterDescriptor(SimpleProcessor.INPUT,
new ParameterMessage("templateMapRenderer/input"), new
ArrayValueDescriptor(mapValueDescriptor)));
+ parameterDescriptorList.add(new ParameterDescriptor(SimpleProcessor.INPUT,
new ParameterMessage("templateMapRenderer/input"), mapValueDescriptor));
parameterDescriptors =
(ParameterDescriptor[])parameterDescriptorList.toArray(new
ParameterDescriptor[parameterDescriptorList.size()]);
}
@@ -61,10 +50,15 @@
String fragment = ((StringValue)parameter.get(FRAGMENT)).toString();
Template template = getRequiredFragment(fragment);
StringBuffer buffer = new StringBuffer(template.getLength());
- ArrayValue input = (ArrayValue)parameter.get(SimpleProcessor.INPUT);
- for ( int i = 0; i < input.getArray().length; i++ ) {
- template.evaluate(buffer, ((MapValue)input.getArray()[i]).getMap());
+ Map parameterMap = new HashMap();
+ parameterMap.putAll(parameter);
+ for ( Iterator j =
((MapValue)parameter.get(SimpleProcessor.INPUT)).getMap().entrySet().iterator();
j.hasNext(); ) {
+ Map.Entry entry = (Map.Entry)j.next();
+ if ( entry.getValue() != NullValue.NULL ) {
+ parameterMap.put(entry.getKey(), entry.getValue());
+ }
}
+ template.evaluate(buffer, parameterMap);
return new Result(OK, OUTPUT, new StringValue(buffer.toString(),
template.getContentType(), false));
}
@@ -78,22 +72,5 @@
new ResultEntryDescriptor[]{
new ResultEntryDescriptor(OUTPUT, new
DefaultMessage("templateMapRenderer/result/output"), "*", true)
});
- }
-
- protected int getMaxIndex(Map parameter) {
- int maxIndex = 0;
- for ( Iterator i = parameter.values().iterator(); i.hasNext(); ) {
- ArrayValue resurce = (ArrayValue)i.next();
- if ( resurce.getArray().length > maxIndex ) maxIndex =
resurce.getArray().length;
- }
- return maxIndex;
- }
-
- protected boolean repeatedParameterDescriptor(ParameterDescriptor
entryDescriptor) {
- List parameterDescriptors =
getTemplateParameterDescriptor(repeatedFragments);
- if ( parameterDescriptors.contains(entryDescriptor) ) {
- return true;
- }
- return false;
}
}
1.6 +4 -0
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/MapValueDescriptor.java
Index: MapValueDescriptor.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/descriptor/MapValueDescriptor.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MapValueDescriptor.java 1 Jun 2004 07:49:54 -0000 1.5
+++ MapValueDescriptor.java 17 Jun 2004 14:54:57 -0000 1.6
@@ -38,6 +38,10 @@
entryDescriptors.add(parameterDescriptor);
}
+ public List getEntryDescriptors() {
+ return entryDescriptors;
+ }
+
public Value validate(Object value, Context context) throws ValidationException
{
if ( value instanceof MapValue ) {
// validate entries
1.4 +4 -4
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree/TreeLocalizer.java
Index: TreeLocalizer.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree/TreeLocalizer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TreeLocalizer.java 16 Jun 2004 16:45:37 -0000 1.3
+++ TreeLocalizer.java 17 Jun 2004 14:54:57 -0000 1.4
@@ -78,7 +78,7 @@
if ( resources[i] instanceof StringValue ) {
Map localizedMap = new HashMap();
try {
- localizedMap.put(TreeRenderer.ID, resources[i]);
+ localizedMap.put(TreeRenderer.ID,
ProcessorManager.getInstance().process(ProcessorManager.URL, resources[i], context));
Map entries =
MessageManager.getEntries(((StringValue)resources[i]).toString(), locale);
for ( Iterator j = entries.entrySet().iterator(); j.hasNext();
) {
Map.Entry entry = (Map.Entry)j.next();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]