|
Author: adrianc
Date: Sat Jan 9 05:33:40 2010 New Revision: 897384 URL: http://svn.apache.org/viewvc?rev=897384&view=rev Log: Fixed an iCalendar bug where child work efforts were not created in a new calendar. Bug reported by Chris Snow - https://issues.apache.org/jira/browse/OFBIZ-3398. Modified: ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java Modified: ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java?rev=897384&r1=897383&r2=897384&view=diff ============================================================================== --- ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java (original) +++ ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java Sat Jan 9 05:33:40 2010 @@ -19,8 +19,8 @@ package org.ofbiz.workeffort.workeffort; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.io.StringReader; import java.net.URISyntaxException; import java.sql.Timestamp; @@ -34,13 +34,48 @@ import javolution.util.FastList; import javolution.util.FastMap; import javolution.util.FastSet; - import net.fortuna.ical4j.data.CalendarBuilder; import net.fortuna.ical4j.data.ParserException; -import net.fortuna.ical4j.model.*; -import net.fortuna.ical4j.model.component.*; -import net.fortuna.ical4j.model.parameter.*; -import net.fortuna.ical4j.model.property.*; +import net.fortuna.ical4j.model.Calendar; +import net.fortuna.ical4j.model.Component; +import net.fortuna.ical4j.model.ComponentList; +import net.fortuna.ical4j.model.DateTime; +import net.fortuna.ical4j.model.Dur; +import net.fortuna.ical4j.model.Parameter; +import net.fortuna.ical4j.model.ParameterList; +import net.fortuna.ical4j.model.Property; +import net.fortuna.ical4j.model.PropertyList; +import net.fortuna.ical4j.model.TimeZoneRegistry; +import net.fortuna.ical4j.model.TimeZoneRegistryFactory; +import net.fortuna.ical4j.model.ValidationException; +import net.fortuna.ical4j.model.component.VAlarm; +import net.fortuna.ical4j.model.component.VEvent; +import net.fortuna.ical4j.model.component.VToDo; +import net.fortuna.ical4j.model.parameter.Cn; +import net.fortuna.ical4j.model.parameter.PartStat; +import net.fortuna.ical4j.model.parameter.XParameter; +import net.fortuna.ical4j.model.property.Action; +import net.fortuna.ical4j.model.property.Attendee; +import net.fortuna.ical4j.model.property.CalScale; +import net.fortuna.ical4j.model.property.Clazz; +import net.fortuna.ical4j.model.property.Completed; +import net.fortuna.ical4j.model.property.Created; +import net.fortuna.ical4j.model.property.Description; +import net.fortuna.ical4j.model.property.DtEnd; +import net.fortuna.ical4j.model.property.DtStamp; +import net.fortuna.ical4j.model.property.DtStart; +import net.fortuna.ical4j.model.property.Duration; +import net.fortuna.ical4j.model.property.LastModified; +import net.fortuna.ical4j.model.property.Location; +import net.fortuna.ical4j.model.property.Organizer; +import net.fortuna.ical4j.model.property.PercentComplete; +import net.fortuna.ical4j.model.property.Priority; +import net.fortuna.ical4j.model.property.ProdId; +import net.fortuna.ical4j.model.property.Status; +import net.fortuna.ical4j.model.property.Summary; +import net.fortuna.ical4j.model.property.Uid; +import net.fortuna.ical4j.model.property.Version; +import net.fortuna.ical4j.model.property.XProperty; import org.ofbiz.base.util.DateRange; import org.ofbiz.base.util.Debug; @@ -62,7 +97,7 @@ import org.ofbiz.service.ServiceUtil; import org.ofbiz.service.calendar.TemporalExpression; import org.ofbiz.service.calendar.TemporalExpressionWorker; -import static org.ofbiz.workeffort.workeffort.ICalWorker.ResponseProperties; +import org.ofbiz.workeffort.workeffort.ICalWorker.ResponseProperties; /** iCalendar converter class. This class uses the <a href="http://ical4j.sourceforge.net/index.html"> * iCal4J</a> library. @@ -692,41 +727,41 @@ } boolean hasCreatePermission = hasPermission(workEffortId, "CREATE", context); List<GenericValue> workEfforts = getRelatedWorkEfforts(publishProperties, context); + Set validWorkEfforts = FastSet.newInstance(); if (UtilValidate.isNotEmpty(workEfforts)) { // Security issue: make sure only related work efforts get updated - Set validWorkEfforts = FastSet.newInstance(); for (GenericValue workEffort : workEfforts) { validWorkEfforts.add(workEffort.getString("workEffortId")); } - List<Component> components = calendar.getComponents(); - ResponseProperties responseProps = null; - for (Component component : components) { - if (Component.VEVENT.equals(component.getName()) || Component.VTODO.equals(component.getName())) { - workEffortId = fromXProperty(component.getProperties(), workEffortIdXPropName); - if (workEffortId == null) { - Property uid = component.getProperty(Uid.UID); - if (uid != null) { - GenericValue workEffort = EntityUtil.getFirst(delegator.findByAnd("WorkEffort", UtilMisc.toMap("universalId", uid.getValue()))); - if (workEffort != null) { - workEffortId = workEffort.getString("workEffortId"); - } - } - } - if (workEffortId != null) { - if (validWorkEfforts.contains(workEffortId)) { - replaceProperty(component.getProperties(), toXProperty(workEffortIdXPropName, workEffortId)); - responseProps = storeWorkEffort(component, context); - } else { - Debug.logWarning("Spoof attempt: unrelated workEffortId " + workEffortId + - " on URL workEffortId " + context.get("workEffortId"), module); - responseProps = ICalWorker.createForbiddenResponse(null); + } + List<Component> components = calendar.getComponents(); + ResponseProperties responseProps = null; + for (Component component : components) { + if (Component.VEVENT.equals(component.getName()) || Component.VTODO.equals(component.getName())) { + workEffortId = fromXProperty(component.getProperties(), workEffortIdXPropName); + if (workEffortId == null) { + Property uid = component.getProperty(Uid.UID); + if (uid != null) { + GenericValue workEffort = EntityUtil.getFirst(delegator.findByAnd("WorkEffort", UtilMisc.toMap("universalId", uid.getValue()))); + if (workEffort != null) { + workEffortId = workEffort.getString("workEffortId"); } - } else if (hasCreatePermission) { - responseProps = createWorkEffort(component, context); } - if (responseProps != null) { - return responseProps; + } + if (workEffortId != null) { + if (validWorkEfforts.contains(workEffortId)) { + replaceProperty(component.getProperties(), toXProperty(workEffortIdXPropName, workEffortId)); + responseProps = storeWorkEffort(component, context); + } else { + Debug.logWarning("Spoof attempt: unrelated workEffortId " + workEffortId + + " on URL workEffortId " + context.get("workEffortId"), module); + responseProps = ICalWorker.createForbiddenResponse(null); } + } else if (hasCreatePermission) { + responseProps = createWorkEffort(component, context); + } + if (responseProps != null) { + return responseProps; } } } |
| Free forum by Nabble | Edit this page |
