From 5bb7e51ee0a0ba8e250d67d01f413f6785d0204f Mon Sep 17 00:00:00 2001 From: paolo caruso Date: Fri, 24 May 2024 12:09:07 +0200 Subject: [PATCH] Aggiornamento dipendenze e fix errori Hibernate --- voila-runtime-core/pom.xml | 26 +-- voila-runtime-displaytag/pom.xml | 20 +- .../pdfexporter/AbstractPdfExporter.java | 49 ++--- .../pdfexporter/BasicPdfExporter.java | 10 +- .../poiexporter/JfExcelHssfView.java | 65 +++---- voila-runtime-hibernate-spatial/pom.xml | 2 +- .../runtime/hibernate/bag/CustomBagType.java | 4 +- .../hibernate/bag/CustomPersistentBag.java | 7 +- .../listeners/SaveOrUpdateEventListener.java | 172 +++++++++--------- voila-runtime-jasper4/pom.xml | 19 +- .../jasper/JasperReportDefinition.java | 4 +- .../voila/runtime/jasper/JasperUtils.java | 11 +- .../jasper/utils/JasperReportsUtils.java | 6 +- .../helpers/JasperReportsHtmlViewJasper.java | 4 +- voila-runtime-oawtemplate/pom.xml | 7 - voila-runtime-root/pom.xml | 13 +- voila-runtime-rtftemplate/pom.xml | 6 - voila-runtime-security/pom.xml | 20 +- .../csrf/CSRFHandlerInterceptor.java | 28 ++- .../csrf/CSRFRequestDataValueProcessor.java | 22 ++- .../springmvc/csrf/CSRFTokenManager.java | 10 +- .../runtime/springmvc/taglibs/ButtonTag.java | 2 +- .../springmvc/taglibs/CheckBoxTag.java | 6 +- .../runtime/springmvc/taglibs/InputTag.java | 6 +- .../runtime/springmvc/taglibs/MenuTag.java | 2 +- .../springmvc/taglibs/MessageAlertTag.java | 2 +- .../runtime/springmvc/taglibs/PopupTag.java | 2 +- .../springmvc/taglibs/RadioButtonTag.java | 6 +- .../runtime/springmvc/taglibs/SelectTag.java | 6 +- .../runtime/springmvc/taglibs/SubmitTag.java | 10 +- .../runtime/springmvc/taglibs/TabsTag.java | 10 +- .../springmvc/taglibs/TextareaTag.java | 8 +- .../util/ExpressionEvaluationUtils.java | 4 - voila-runtime-springtest/pom.xml | 11 -- .../web/filter/RuntimeMultipartResolver.java | 4 + 35 files changed, 310 insertions(+), 274 deletions(-) diff --git a/voila-runtime-core/pom.xml b/voila-runtime-core/pom.xml index 7794d896..5d11bc61 100644 --- a/voila-runtime-core/pom.xml +++ b/voila-runtime-core/pom.xml @@ -70,6 +70,10 @@ commons-collections commons-collections + + commons-beanutils + commons-beanutils-core + @@ -96,32 +100,10 @@ - - commons-beanutils - commons-beanutils - 1.8.3 - - - commons-logging - commons-logging - - - javax.validation validation-api 2.0.1.Final - - org.apache.velocity - velocity - 1.6.4 - - - commons-collections - commons-collections - - - \ No newline at end of file diff --git a/voila-runtime-displaytag/pom.xml b/voila-runtime-displaytag/pom.xml index 50fc544f..6ec8fa20 100644 --- a/voila-runtime-displaytag/pom.xml +++ b/voila-runtime-displaytag/pom.xml @@ -21,19 +21,31 @@ ${project.parent.version} - com.lowagie - itext - 2.1.7 + com.itextpdf + itextpdf + 5.5.13.3 org.apache.poi poi - 3.6 + 5.2.2 commons-io commons-io 1.4 + + javax.servlet.jsp + javax.servlet.jsp-api + 2.3.3 + provided + + + javax.servlet + servlet-api + 2.5 + provided + \ No newline at end of file diff --git a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java index e99ab261..91e9ccea 100644 --- a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java +++ b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java @@ -31,20 +31,22 @@ import org.displaytag.model.RowIterator; import org.displaytag.model.TableModel; import org.displaytag.util.TagConstants; -import com.lowagie.text.BadElementException; -import com.lowagie.text.Document; -import com.lowagie.text.DocumentException; -import com.lowagie.text.Element; -import com.lowagie.text.Font; -import com.lowagie.text.FontFactory; -import com.lowagie.text.HeaderFooter; -import com.lowagie.text.PageSize; -import com.lowagie.text.Paragraph; -import com.lowagie.text.Phrase; -import com.lowagie.text.Rectangle; -import com.lowagie.text.pdf.PdfPCell; -import com.lowagie.text.pdf.PdfPTable; -import com.lowagie.text.pdf.PdfWriter; +import com.itextpdf.text.BadElementException; +import com.itextpdf.text.BaseColor; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.Element; +import com.itextpdf.text.Font; +import com.itextpdf.text.FontFactory; +import com.itextpdf.text.PageSize; +import com.itextpdf.text.Paragraph; +import com.itextpdf.text.Phrase; +import com.itextpdf.text.Rectangle; +import com.itextpdf.text.pdf.ColumnText; +import com.itextpdf.text.pdf.PdfContentByte; +import com.itextpdf.text.pdf.PdfPCell; +import com.itextpdf.text.pdf.PdfPTable; +import com.itextpdf.text.pdf.PdfWriter; /** * Created by IntelliJ IDEA. @@ -120,7 +122,7 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter { tablePDF.setWidthPercentage(100); tablePDF.setHeaderRows(1); - smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new Color(0, 0, 0)); + smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new BaseColor(0, 0, 0)); super.init(this.model); } @@ -162,8 +164,9 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter { PdfWriter.getInstance(document, out); document.addCreationDate(); - - prepareHeaderFooter(document); + + PdfWriter writer = PdfWriter.getInstance(document, out); + prepareHeaderFooter(writer, document); document.open(); @@ -273,7 +276,7 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter { if (value == null || value == "") { cell.setBorder(Rectangle.NO_BORDER); } else { - cell.setBackgroundColor(Color.LIGHT_GRAY); + cell.setBackgroundColor(BaseColor.LIGHT_GRAY); } } Object al = hc.getHtmlAttributes().get(TagConstants.ATTRIBUTE_ALIGN); @@ -317,13 +320,13 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter { document.add(new Phrase("")); } - protected void prepareHeaderFooter(Document document) { + protected void prepareHeaderFooter(PdfWriter writer, Document document) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); String footerText = sdf.format(new Date()) + " pagina: "; - HeaderFooter footer = new HeaderFooter(new Phrase(footerText, smallFont), true); - footer.setBorder(Rectangle.NO_BORDER); - footer.setAlignment(Element.ALIGN_CENTER); - document.setFooter(footer); + PdfContentByte cb = writer.getDirectContent(); + Phrase footer = new Phrase(footerText, smallFont); + ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, footer, + (document.right() - document.left()) / 2 + document.leftMargin(), document.bottom() - 10, 0); } /** diff --git a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java index c633721d..e188706a 100644 --- a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java +++ b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java @@ -2,11 +2,11 @@ package it.mice.voila.runtime.displaytag.pdfexporter; import it.mice.voila.runtime.displaytag.DisplayTagUtils; -import com.lowagie.text.Document; -import com.lowagie.text.DocumentException; -import com.lowagie.text.Element; -import com.lowagie.text.Paragraph; -import com.lowagie.text.Phrase; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.Element; +import com.itextpdf.text.Paragraph; +import com.itextpdf.text.Phrase; public class BasicPdfExporter extends AbstractPdfExporter { diff --git a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java index 04fcbb32..51f073be 100644 --- a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java +++ b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java @@ -40,8 +40,11 @@ import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.hssf.util.CellReference; +import org.apache.poi.ss.util.CellReference; import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.util.CellRangeAddress; import org.displaytag.Messages; @@ -112,93 +115,93 @@ public class JfExcelHssfView extends AbstractTotalExporter { protected void initStyles(HSSFWorkbook wb) { titleFont = wb.createFont(); - titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + titleFont.setBold(true); titleFont.setFontHeightInPoints((short) 12); - titleFont.setColor(HSSFColor.BLUE.index); + titleFont.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex()); headerFont = wb.createFont(); - headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + headerFont.setBold(true); headerFont.setFontHeightInPoints((short) 10); - headerFont.setColor(HSSFColor.BLUE.index); + headerFont.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex()); dataFont = wb.createFont(); - dataFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); + dataFont.setBold(true); dataFont.setFontHeightInPoints((short) 9); - dataFont.setColor(HSSFColor.BLACK.index); + dataFont.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); titleStyle = wb.createCellStyle(); // titleStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); // titleStyle.setFillPattern(HSSFCellStyle.FINE_DOTS); - titleStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); + titleStyle.setAlignment(HorizontalAlignment.LEFT); titleStyle.setFont(titleFont); headerStyle = wb.createCellStyle(); // headerStyle.setFillBackgroundColor(HSSFColor.YELLOW.index); // headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); - headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); - headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); - headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); - headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); - headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); + headerStyle.setAlignment(HorizontalAlignment.CENTER); + headerStyle.setBorderTop(BorderStyle.THIN); + headerStyle.setBorderBottom(BorderStyle.THIN); + headerStyle.setBorderLeft(BorderStyle.THIN); + headerStyle.setBorderRight(BorderStyle.THIN); headerStyle.setWrapText(true); headerStyle.setFont(headerFont); totalStyle = wb.createCellStyle(); - totalStyle.setFillBackgroundColor(HSSFColor.YELLOW.index); - totalStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); + totalStyle.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex()); + totalStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); cellStyle = createBorderedNoFillCellStyle(wb); cellStyle.setWrapText(true); cellStyleForDate = createBorderedNoFillCellStyle(wb); - cellStyleForDate.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForDate.setAlignment(HorizontalAlignment.RIGHT); cellStyleForDate.setDataFormat(HSSFDataFormat .getBuiltinFormat("m/d/yy")); cellStyleForDateTime = createBorderedNoFillCellStyle(wb); - cellStyleForDateTime.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForDateTime.setAlignment(HorizontalAlignment.RIGHT); cellStyleForDateTime.setDataFormat(HSSFDataFormat .getBuiltinFormat("m/d/yy h:mm")); cellStyleForCurrency1digit = createBorderedNoFillCellStyle(wb); - cellStyleForCurrency1digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForCurrency1digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForCurrency1digit.setDataFormat(HSSFDataFormat .getBuiltinFormat("#,##0.00")); cellStyleForCurrency2digit = createBorderedNoFillCellStyle(wb); - cellStyleForCurrency2digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForCurrency2digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForCurrency2digit.setDataFormat(HSSFDataFormat .getBuiltinFormat("#,##0.00")); cellStyleForCurrency3digit = createBorderedNoFillCellStyle(wb); - cellStyleForCurrency3digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForCurrency3digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForCurrency3digit.setDataFormat(wb.createDataFormat().getFormat("#,##0.000")); cellStyleForCurrency4digit = createBorderedNoFillCellStyle(wb); - cellStyleForCurrency4digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForCurrency4digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForCurrency4digit.setDataFormat(wb.createDataFormat().getFormat("#,##0.0000")); cellStyleForCurrency5digit = createBorderedNoFillCellStyle(wb); - cellStyleForCurrency5digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForCurrency5digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForCurrency5digit.setDataFormat(wb.createDataFormat().getFormat("#,##0.00000")); cellStyleForPercentage = createBorderedNoFillCellStyle(wb); - cellStyleForPercentage.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForPercentage.setAlignment(HorizontalAlignment.RIGHT); cellStyleForPercentage.setDataFormat(HSSFDataFormat .getBuiltinFormat("0%")); cellStyleForPercentage1digit = createBorderedNoFillCellStyle(wb); - cellStyleForPercentage1digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForPercentage1digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForPercentage1digit.setDataFormat(HSSFDataFormat .getBuiltinFormat("0.0%")); cellStyleForPercentage2digit = createBorderedNoFillCellStyle(wb); - cellStyleForPercentage2digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForPercentage2digit.setAlignment(HorizontalAlignment.RIGHT); cellStyleForPercentage2digit.setDataFormat(HSSFDataFormat .getBuiltinFormat("0.00%")); cellStyleForNumber = createBorderedNoFillCellStyle(wb); - cellStyleForNumber.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + cellStyleForNumber.setAlignment(HorizontalAlignment.RIGHT); cellStyleForNumber.setDataFormat(HSSFDataFormat.getBuiltinFormat("0")); initialized = true; @@ -206,11 +209,11 @@ public class JfExcelHssfView extends AbstractTotalExporter { protected HSSFCellStyle createBorderedNoFillCellStyle(HSSFWorkbook wb) { HSSFCellStyle cs = wb.createCellStyle(); - cs.setFillPattern(HSSFCellStyle.NO_FILL); - cs.setBorderTop(HSSFCellStyle.BORDER_THIN); - cs.setBorderBottom(HSSFCellStyle.BORDER_THIN); - cs.setBorderLeft(HSSFCellStyle.BORDER_THIN); - cs.setBorderRight(HSSFCellStyle.BORDER_THIN); + cs.setFillPattern(FillPatternType.NO_FILL); + cs.setBorderTop(BorderStyle.THIN); + cs.setBorderBottom(BorderStyle.THIN); + cs.setBorderLeft(BorderStyle.THIN); + cs.setBorderRight(BorderStyle.THIN); // cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); cs.setFont(dataFont); diff --git a/voila-runtime-hibernate-spatial/pom.xml b/voila-runtime-hibernate-spatial/pom.xml index 87c99361..9daa22ff 100644 --- a/voila-runtime-hibernate-spatial/pom.xml +++ b/voila-runtime-hibernate-spatial/pom.xml @@ -32,7 +32,7 @@ com.google.maps google-maps-services - 0.18.0 + 2.2.0 it.micegroup.voila.runtime diff --git a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java index c087c147..ba90a363 100644 --- a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java +++ b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java @@ -11,6 +11,7 @@ import org.hibernate.collection.spi.PersistentCollection; import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.persister.collection.CollectionPersister; +import org.hibernate.collection.internal.PersistentList; import org.hibernate.usertype.UserCollectionType; /** @@ -71,7 +72,8 @@ public class CustomBagType implements UserCollectionType { @Override public PersistentCollection wrap(SharedSessionContractImplementor session, Object collection) { - return new CustomPersistentBag(session, (CollectionPersister) collection); + PersistentList persistentList = new PersistentList(session, (List) collection); + return new CustomPersistentBag(session, persistentList); } @Override diff --git a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java index b3197ad9..14cb872f 100644 --- a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java +++ b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java @@ -15,6 +15,7 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.LazyInitializationException; import org.hibernate.collection.internal.PersistentBag; +import org.hibernate.collection.internal.PersistentList; import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.persister.collection.CollectionPersister; @@ -45,7 +46,11 @@ public class CustomPersistentBag extends PersistentBag { public CustomPersistentBag() { } - public int size() { + public CustomPersistentBag(SharedSessionContractImplementor session, PersistentList collection) { + super(session, collection); + } + + public int size() { try { return super.size(); } catch (LazyInitializationException e) { diff --git a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java index 523d99da..530dbb29 100644 --- a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java +++ b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java @@ -3,6 +3,8 @@ package it.mice.voila.runtime.hibernate.listeners; import it.mice.voila.runtime.entity.Entity; import it.mice.voila.runtime.entity.TrackAttributeAwareEntity; +import javax.persistence.PreUpdate; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; @@ -11,117 +13,115 @@ import org.hibernate.engine.spi.EntityEntry; import org.hibernate.engine.spi.EntityKey; import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.event.internal.DefaultSaveOrUpdateEventListener; +import org.hibernate.event.internal.EntityState; import org.hibernate.event.spi.EventSource; import org.hibernate.event.spi.SaveOrUpdateEvent; import org.hibernate.persister.entity.EntityPersister; /** - * Created by IntelliJ IDEA. - * User: zzy9v4 - * Date: 22-feb-2007 - * Time: 14.02.38 - * To change this template use File | Settings | File Templates. + * Created by IntelliJ IDEA. User: zzy9v4 Date: 22-feb-2007 Time: 14.02.38 To + * change this template use File | Settings | File Templates. */ public class SaveOrUpdateEventListener extends DefaultSaveOrUpdateEventListener { - private static final Log log = LogFactory.getLog(SaveOrUpdateEventListener.class); + private static final Log log = LogFactory.getLog(SaveOrUpdateEventListener.class); + + /** + * Determine whether the entity is persistent, detached, or transient + * + * @param entity The entity to check + * @param entityName The name of the entity + * @param entry The entity's entry in the persistence context + * @param source The originating session. + * @return The state. + */ + protected EntityState getEntityState(Object entity, String entityName, EntityEntry entry, // pass this as an + // argument only to + // avoid double looking + SessionImplementor source) { + + if (entry != null) { // the object is persistent + return EntityState.getEntityState(entity, entityName, entry, source, getAssumedUnsavedForEntity(entity)); + } else { // The object is not in the session cache !!! + return getInternalEntityState(entityName, entity, source); + } + } - /** - * Determine whether the entity is persistent, detached, or transient - * - * @param entity The entity to check - * @param entityName The name of the entity - * @param entry The entity's entry in the persistence context - * @param source The originating session. - * @return The state. - */ -// protected int getEntityState( -// Object entity, -// String entityName, -// EntityEntry entry, //pass this as an argument only to avoid double looking -// SessionImplementor source) { -// -// if (entry != null) { // the object is persistent -// return super.getEntityState(entity, entityName, entry, source); -// } else { //The object is not in the session cache !!! -// return getInternalEntityState(entityName, entity, source); -// } -// } + private EntityState getInternalEntityState(String entityName, Object entity, SessionImplementor source) { + // the object is transient or detached + // the entity is not associated with the session, so + // try interceptor and unsaved-value + if (entity instanceof Entity) { + Entity wrappedEntity = (Entity) entity; + if (wrappedEntity.isNewEntity()) { + return EntityState.TRANSIENT; + } else { + return EntityState.DETACHED; + } + } + Boolean assumedUnsaved = getAssumedUnsavedForEntity(entity); + EntityState entityState = EntityState.getEntityState(entity, entityName, null, source, assumedUnsaved); -// private int getInternalEntityState(String entityName, Object entity, SessionImplementor source) { -// //the object is transient or detached -// //the entity is not associated with the session, so -// //try interceptor and unsaved-value -// if (entity instanceof Entity) { -// Entity wrappedEntity = (Entity)entity; -// if (wrappedEntity.isNewEntity()) { -// return TRANSIENT; -// } else { -// return DETACHED; -// } -// } -// -// if (ForeignKeys.isTransient(entityName, entity, getAssumedUnsavedForEntity(entity), source)) { -// if (log.isTraceEnabled()) { -// log.trace( -// "transient instance of: " + -// getLoggableName(entityName, entity) -// ); -// } -// return TRANSIENT; -// } else { -// if (log.isTraceEnabled()) { -// log.trace( -// "detached instance of: " + -// getLoggableName(entityName, entity) -// ); -// } -// return DETACHED; -// } -// } + if (entityState == EntityState.TRANSIENT) { + if (log.isTraceEnabled()) { + log.trace("transient instance of: " + getLoggableName(entityName, entity)); + } + } else { + if (log.isTraceEnabled()) { + log.trace("detached instance of: " + getLoggableName(entityName, entity)); + } + } + return entityState; + } - private Boolean getAssumedUnsavedForEntity(Object entity) { - if (entity instanceof Entity) { - if (((Entity) entity).isNewEntity()) { - return Boolean.TRUE; - } else { - return Boolean.FALSE; - } - } - return null; - } + private Boolean getAssumedUnsavedForEntity(Object entity) { + if (entity instanceof Entity) { + if (((Entity) entity).isNewEntity()) { + return Boolean.TRUE; + } else { + return Boolean.FALSE; + } + } + return null; + } + @Override public void onSaveOrUpdate(SaveOrUpdateEvent event) { - Entity entity = (Entity)event.getObject(); - if (entity.isNewEntity()) { - if (entity instanceof TrackAttributeAwareEntity) { - ((TrackAttributeAwareEntity) entity).trackInsertAttribute(); - } - } - if (entity.isNewEntity() || entity.isChangedEntity()) { - if (entity instanceof TrackAttributeAwareEntity) { - ((TrackAttributeAwareEntity) entity).trackUpdateAttribute(); - } - } + Entity entity = (Entity) event.getObject(); + if (entity.isNewEntity()) { + if (entity instanceof TrackAttributeAwareEntity) { + ((TrackAttributeAwareEntity) entity).trackInsertAttribute(); + } + } + if (entity.isNewEntity() || entity.isChangedEntity()) { + if (entity instanceof TrackAttributeAwareEntity) { + ((TrackAttributeAwareEntity) entity).trackUpdateAttribute(); + } + } super.onSaveOrUpdate(event); } - /* (non-Javadoc) - * @see org.hibernate.event.def.DefaultSaveOrUpdateEventListener#performUpdate(org.hibernate.event.SaveOrUpdateEvent, java.lang.Object, org.hibernate.persister.entity.EntityPersister) + /* + * (non-Javadoc) + * + * @see + * org.hibernate.event.def.DefaultSaveOrUpdateEventListener#performUpdate(org. + * hibernate.event.SaveOrUpdateEvent, java.lang.Object, + * org.hibernate.persister.entity.EntityPersister) */ @Override - protected void performUpdate(SaveOrUpdateEvent event, Object entity, - EntityPersister persister) throws HibernateException { - + protected void performUpdate(SaveOrUpdateEvent event, Object entity, EntityPersister persister) + throws HibernateException { + final EventSource source = event.getSession(); - EntityKey key = new EntityKey( event.getRequestedId(), persister); + EntityKey key = new EntityKey(event.getRequestedId(), persister); if (source.getPersistenceContext().getEntity(key) != null) { source.getPersistenceContext().removeEntity(key); } super.performUpdate(event, entity, persister); } - + protected String getLoggableName(String entityName, Object entity) { return entityName == null ? entity.getClass().getName() : entityName; } diff --git a/voila-runtime-jasper4/pom.xml b/voila-runtime-jasper4/pom.xml index 791a4737..8837649a 100644 --- a/voila-runtime-jasper4/pom.xml +++ b/voila-runtime-jasper4/pom.xml @@ -14,38 +14,29 @@ net.sf.jasperreports jasperreports - 4.1.2 + 6.21.3 xml-apis - xml-apis - - - org.apache.poi - poi + xml-apis-ext - - org.apache.poi - poi - 3.9 - net.sf.jasperreports jasperreports-fonts - 4.0.0 + 6.21.3 net.sf.jasperreports jasperreports-chart-themes - 4.0.2 + 6.21.3 org.jasypt jasypt - 1.7.1 + 1.9.3 fonts diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java index f5658a92..29dccdc4 100644 --- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java +++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java @@ -35,7 +35,7 @@ import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.export.JRCsvExporter; -import net.sf.jasperreports.engine.export.JRHtmlExporter; +import net.sf.jasperreports.engine.export.HtmlExporter; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.JRPdfExporterParameter; import net.sf.jasperreports.engine.export.JRRtfExporter; @@ -158,7 +158,7 @@ public class JasperReportDefinition extends ApplicationObjectSupport { public JasperReportDefinition() { Map> mappings = new HashMap>(5); mappings.put("csv", JRCsvExporter.class); - mappings.put("html", JRHtmlExporter.class); + mappings.put("html", HtmlExporter.class); mappings.put("pdf", JRPdfExporter.class); mappings.put("xls", JRXlsExporter.class); mappings.put("rtf", JRRtfExporter.class); diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java index 569d5575..897b4c0f 100644 --- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java +++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java @@ -12,9 +12,11 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; +import net.sf.jasperreports.engine.DefaultJasperReportsContext; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; -import net.sf.jasperreports.engine.util.JRProperties; +import net.sf.jasperreports.engine.JRPropertiesUtil; +import net.sf.jasperreports.engine.JasperReportsContext; /** * @@ -41,9 +43,10 @@ public class JasperUtils { Map parameterMap = new HashMap(); parameterMap.put("dataSource", JasperUtils.buildDataSource(dataSource)); parameterMap.put("format", format); - JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H"); - JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "ARIALUNI.TTF"); - + JasperReportsContext jasperReportsContext = DefaultJasperReportsContext.getInstance(); + JRPropertiesUtil jrPropertiesUtil = JRPropertiesUtil.getInstance(jasperReportsContext); + jrPropertiesUtil.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H"); + jrPropertiesUtil.setProperty("net.sf.jasperreports.default.pdf.font.name", "ARIALUNI.TTF"); return parameterMap; } diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java index 6e822ebf..60e2593b 100644 --- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java +++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java @@ -15,7 +15,7 @@ import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanArrayDataSource; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.export.JRCsvExporter; -import net.sf.jasperreports.engine.export.JRHtmlExporter; +import net.sf.jasperreports.engine.export.HtmlExporter; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.JRXlsExporter; @@ -152,7 +152,7 @@ public abstract class JasperReportsUtils { throws JRException { JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData)); - render(new JRHtmlExporter(), print, writer); + render(new HtmlExporter(), print, writer); } /** @@ -172,7 +172,7 @@ public abstract class JasperReportsUtils { Map exporterParameters) throws JRException { JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData)); - JRHtmlExporter exporter = new JRHtmlExporter(); + HtmlExporter exporter = new HtmlExporter(); exporter.setParameters(exporterParameters); render(exporter, print, writer); } diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java index 41018c2e..23345353 100644 --- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java +++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java @@ -1,7 +1,7 @@ package it.mice.voila.runtime.jasper.view.helpers; import net.sf.jasperreports.engine.JRExporter; -import net.sf.jasperreports.engine.export.JRHtmlExporter; +import net.sf.jasperreports.engine.export.HtmlExporter; /** * Implementation of AbstractJasperReportsSingleFormatView @@ -19,7 +19,7 @@ public class JasperReportsHtmlViewJasper extends AbstractJasperReportsSingleForm @Override protected JRExporter createExporter() { - return new JRHtmlExporter(); + return new HtmlExporter(); } @Override diff --git a/voila-runtime-oawtemplate/pom.xml b/voila-runtime-oawtemplate/pom.xml index 825d582a..c48d7f0a 100644 --- a/voila-runtime-oawtemplate/pom.xml +++ b/voila-runtime-oawtemplate/pom.xml @@ -71,13 +71,6 @@ 2.6.0.v20100914-1218 jar - - - commons-beanutils - commons-beanutils - 1.6.1 - jar - commons-logging commons-logging diff --git a/voila-runtime-root/pom.xml b/voila-runtime-root/pom.xml index 652bcbec..80f8b193 100644 --- a/voila-runtime-root/pom.xml +++ b/voila-runtime-root/pom.xml @@ -316,7 +316,7 @@ commons-beanutils commons-beanutils - 1.8.3 + 1.9.4 commons-lang @@ -345,20 +345,15 @@ 3.2.2 - org.apache.velocity - velocity - 1.6.4 + org.apache.velocity + velocity-engine-core + 2.3 velocity-tools velocity-tools-generic 1.2 - - c3p0 - c3p0 - 0.9.1.2 - org.aspectj aspectjweaver diff --git a/voila-runtime-rtftemplate/pom.xml b/voila-runtime-rtftemplate/pom.xml index ce8372fd..6c868157 100644 --- a/voila-runtime-rtftemplate/pom.xml +++ b/voila-runtime-rtftemplate/pom.xml @@ -10,12 +10,6 @@ Java framework Spring RTF Template runtime module 1.11-SNAPSHOT - - commons-beanutils - commons-beanutils - 1.8.3 - jar - commons-logging commons-logging diff --git a/voila-runtime-security/pom.xml b/voila-runtime-security/pom.xml index 0b79e8db..b41c0ee3 100644 --- a/voila-runtime-security/pom.xml +++ b/voila-runtime-security/pom.xml @@ -68,12 +68,30 @@ xerces xercesImpl + + org.owasp.antisamy + antisamy + javax.xml.bind jaxb-api 2.3.1 - + + org.owasp.antisamy + antisamy + 1.7.5 + + + xml-apis + xml-apis + + + xml-apis + xml-apis-ext + + + \ No newline at end of file diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java index ca5d9ed9..03448ccc 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java @@ -14,6 +14,10 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + +import org.springframework.security.web.csrf.CsrfTokenRepository; +import org.springframework.stereotype.Component; +import org.springframework.security.web.csrf.CsrfToken; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; import org.springframework.web.util.HtmlUtils; @@ -37,7 +41,8 @@ import it.mice.voila.runtime.util.UserMessage; * @see CSRFRequestDataValueProcessor * */ -public class CSRFHandlerInterceptor implements HandlerInterceptor{ +//@Component +public class CSRFHandlerInterceptor implements HandlerInterceptor { /** * Default logger. @@ -45,11 +50,21 @@ public class CSRFHandlerInterceptor implements HandlerInterceptor{ private static final Log LOGGER = LogFactory.getLog(CSRFHandlerInterceptor.class); // NOSONAR public static final String SECURITY_CSRF_EXCLUDED_PARAMS = "SECURITY_CSRF_EXCLUDED_PARAMS"; + /** + * The token parameter name + */ + static final String CSRF_PARAM_NAME = "_csrf"; public static Collection EXCLUDED_PARAMS = new ArrayList(); private Collection excludedParameters = new ArrayList(); private boolean disabled = false; + private final CsrfTokenRepository csrfTokenRepository; + + public CSRFHandlerInterceptor(CsrfTokenRepository csrfTokenRepository) { + this.csrfTokenRepository = csrfTokenRepository; + } + public Collection getExcludedParameters() { return excludedParameters; } @@ -98,10 +113,11 @@ public class CSRFHandlerInterceptor implements HandlerInterceptor{ result = true; } else { // This is a POST request - need to check the CSRF token - String sessionToken = CSRFTokenManager.getTokenForSession(request.getSession()); - String requestToken = CSRFTokenManager.getTokenFromRequest(request); - if (sessionToken.equals(requestToken)) { - result = checkParameters(request, response, handler); + CsrfToken csrfToken = csrfTokenRepository.loadToken(request); + String requestToken = request.getParameter(csrfToken.getParameterName()); + + if (csrfToken.getToken().equals(requestToken)) { + return checkParameters(request, response, handler); } else { throw new BusinessException(new UserMessage("error.security.unauthorizedRequest")); //response.sendError(HttpServletResponse.SC_FORBIDDEN, "Bad or missing CSRF value"); @@ -138,7 +154,7 @@ public class CSRFHandlerInterceptor implements HandlerInterceptor{ while (e.hasMoreElements()) { String paramName = e.nextElement(); String paramValue = request.getParameter(paramName); - if (!CSRFTokenManager.CSRF_PARAM_NAME.equals(paramName) && !isExcludedParameter(paramName, params)) { //FIXME + if (!CSRF_PARAM_NAME.equals(paramName) && !isExcludedParameter(paramName, params)) { //FIXME FormField ff = ssb.getFormFields().get(paramName); if (ff == null) { LOGGER.warn("POST request field " + paramName + " not allowed."); diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java index efa902c4..48feab47 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java @@ -10,6 +10,9 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.web.csrf.CsrfToken; +import org.springframework.security.web.csrf.CsrfTokenRepository; import org.springframework.web.servlet.support.RequestDataValueProcessor; /** @@ -29,7 +32,13 @@ public class CSRFRequestDataValueProcessor implements RequestDataValueProcessor * Default logger. */ private static final Log LOGGER = LogFactory.getLog(CSRFRequestDataValueProcessor.class); // NOSONAR - + + private final CsrfTokenRepository csrfTokenRepository; + + public CSRFRequestDataValueProcessor(CsrfTokenRepository csrfTokenRepository) { + this.csrfTokenRepository = csrfTokenRepository; + } + public String processAction(HttpServletRequest request, String action) { LOGGER.debug("processAction: " + action); return action; @@ -46,7 +55,16 @@ public class CSRFRequestDataValueProcessor implements RequestDataValueProcessor public Map getExtraHiddenFields(HttpServletRequest request) { Map hiddenFields = new HashMap(); - hiddenFields.put(CSRFTokenManager.CSRF_PARAM_NAME, CSRFTokenManager.getTokenForSession(request.getSession())); + // Carica il token CSRF + CsrfToken csrfToken = csrfTokenRepository.loadToken(request); + if (csrfToken == null) { + csrfToken = csrfTokenRepository.generateToken(request); + csrfTokenRepository.saveToken(csrfToken, request, null); + } + + // Aggiungi il token CSRF ai campi nascosti + hiddenFields.put(csrfToken.getParameterName(), csrfToken.getToken()); +// hiddenFields.put(CSRFTokenManager.CSRF_PARAM_NAME, CSRFTokenManager.getTokenForSession(request.getSession())); return hiddenFields; } diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java index 0872cc8d..f8030d29 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java @@ -5,6 +5,9 @@ import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.web.csrf.CsrfTokenRepository; + /** * A manager for the CSRF token for a given session. The {@link #getTokenForSession(HttpSession)} should used to * obtain the token value for the current session (and this should be the only way to obtain the token value). @@ -16,14 +19,16 @@ final class CSRFTokenManager { /** * The token parameter name */ - static final String CSRF_PARAM_NAME = "CSRFToken"; + static final String CSRF_PARAM_NAME = "_csrf"; /** * The location on the session which stores the token */ private final static String CSRF_TOKEN_FOR_SESSION_ATTR_NAME = CSRFTokenManager.class.getName() + ".tokenval"; + +// private final CsrfTokenRepository tokenRepository; - static String getTokenForSession (HttpSession session) { + static String getTokenForSession(HttpSession session) { String token = null; // I cannot allow more than one token on a session - in the case of two requests trying to // init the token concurrently @@ -46,5 +51,4 @@ final class CSRFTokenManager { return request.getParameter(CSRF_PARAM_NAME); } - private CSRFTokenManager() {}; } diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java index 83a7330a..c329504b 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java @@ -117,7 +117,7 @@ public class ButtonTag extends org.springframework.web.servlet.tags.form.ButtonT if (getSkipValidation() == null) { return isRenderAsLink(); } - return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation()); + return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation(), this.pageContext); } private boolean isRenderAsLink() throws JspException { diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java index fd1fd760..e430a526 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java @@ -87,7 +87,7 @@ public class CheckBoxTag extends } private void protectField() throws JspException { - if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) { + if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) { setReadonly(true); setDisabled(true); setTabindex("-1"); @@ -100,7 +100,7 @@ public class CheckBoxTag extends @Override public int doEndTag() throws JspException { super.doEndTag(); - if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) { + if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) { writeDojoScript(tagWriter); } return EVAL_PAGE; @@ -113,7 +113,7 @@ public class CheckBoxTag extends script.append("widgetType : 'dijit.form.CheckBox',"); script.append("widgetAttrs : {"); - script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired())); + script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext)); script.append("}}));"); TagUtils.getCurrentForm(pageContext).addScript(script); diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java index 9c685013..d0f42bc0 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java @@ -278,7 +278,7 @@ public class InputTag extends // } super.writeTagContent(tagWriter); - if (ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo())) { + if (ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext)) { return SKIP_BODY; } @@ -357,7 +357,7 @@ public class InputTag extends } private void protectField() throws JspException { - if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) { + if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) { setReadonly(true); setTabindex("-1"); if (getCssClass() == null || getCssClass().indexOf("protected") == -1) { @@ -483,7 +483,7 @@ public class InputTag extends } private boolean isRequired() throws JspException { - return ExpressionEvaluationUtils.evaluateBoolean("required", getRequired()); + return ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext); } private void computeOtherConstraints(StringBuffer script) throws JspException { diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java index 46526112..aec73837 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java @@ -476,7 +476,7 @@ public class MenuTag extends AbstractFormTag { } tagWriter.appendValue(caption); tagWriter.endTag(); - if (menuItemDefinition.getMenuToShow() != null || ExpressionEvaluationUtils.evaluateBoolean("renderLastBreadcrumbSymbol", getRenderLastBreadcrumbSymbol())) { + if (menuItemDefinition.getMenuToShow() != null || ExpressionEvaluationUtils.evaluateBoolean("renderLastBreadcrumbSymbol", getRenderLastBreadcrumbSymbol(), this.pageContext)) { TagUtils.safeWrite(pageContext, " > "); } if (menuItemDefinition.getMenuToShow() != null) { diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java index 0918f031..fd469980 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java @@ -96,7 +96,7 @@ public class MessageAlertTag extends AbstractFormTag { messageList.addAll(storedList); } - if (ExpressionEvaluationUtils.evaluateBoolean("includeValidationMessage", getIncludeValidationMessage())) { + if (ExpressionEvaluationUtils.evaluateBoolean("includeValidationMessage", getIncludeValidationMessage(), this.pageContext)) { messageList.addUserMessages(collectValidationResult()); } else if ((getGenericValidationMessageKey()!=null) && !collectValidationResult().isEmpty()) { messageList.add(new UserMessage(getGenericValidationMessageKey())); diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java index 62dc5d6a..e328272e 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java @@ -81,7 +81,7 @@ public class PopupTag extends AbstractHtmlElementTag { } if (pageStatus != null) { if (pageStatus.isReadOnly()) { - if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) { + if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) { pageContext.getRequest().setAttribute("skipElement", Boolean.TRUE); return (SKIP_BODY); } diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java index 7ceabc27..41982d36 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java @@ -109,7 +109,7 @@ public class RadioButtonTag extends } private void protectField() throws JspException { - if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) { + if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) { setReadonly(true); setDisabled(true); setTabindex("-1"); @@ -122,7 +122,7 @@ public class RadioButtonTag extends @Override public int doEndTag() throws JspException { super.doEndTag(); - if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) { + if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) { writeDojoScript(tagWriter); } return EVAL_PAGE; @@ -135,7 +135,7 @@ public class RadioButtonTag extends script.append("widgetType : 'dijit.form.RadioButton',"); script.append("widgetAttrs : {"); - script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired())); + script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext)); script.append("}}));"); TagUtils.getCurrentForm(pageContext).addScript(script); diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java index fc3dd67c..bed101b2 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java @@ -86,7 +86,7 @@ public class SelectTag extends } private void protectField() throws JspException { - if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) { + if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) { setDisabled(true); } } @@ -94,7 +94,7 @@ public class SelectTag extends @Override public int doEndTag() throws JspException { super.doEndTag(); - if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) { + if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) { writeDojoScript(tagWriter); } @@ -112,7 +112,7 @@ public class SelectTag extends script.append("widgetType : 'dijit.form.FilteringSelect',"); script.append("widgetAttrs : {"); - script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired())); + script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext)); script.append("}}));"); TagUtils.getCurrentForm(pageContext).addScript(script); diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java index aeb788de..a132b964 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java @@ -132,13 +132,13 @@ public class SubmitTag extends private boolean isSkipValidation() throws JspException { if (getSkipValidation() == null) { - return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink()); + return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink(), this.pageContext); } - return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation()); + return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation(), this.pageContext); } private boolean isRenderAsLink() throws JspException { - return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink()); + return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink(), this.pageContext); } public String getSurroundWithTag() { @@ -285,11 +285,11 @@ public class SubmitTag extends tagWriter.endTag(); } - if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) { + if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) { writeDojoScript(tagWriter); } - if (ExpressionEvaluationUtils.evaluateBoolean("ajaxCall", getAjaxCall())) { + if (ExpressionEvaluationUtils.evaluateBoolean("ajaxCall", getAjaxCall(), this.pageContext)) { writeDojoAjaxCall(tagWriter); } diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java index dd7e9656..35761783 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java @@ -7,10 +7,14 @@ import it.mice.voila.runtime.web.menu.MenuFilterManager; import java.util.Collection; import java.util.Iterator; +import javax.servlet.RequestDispatcher; +import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.support.WebApplicationContextUtils; import org.springframework.web.servlet.tags.form.AbstractHtmlElementTag; import org.springframework.web.servlet.tags.form.TagWriter; @@ -431,7 +435,11 @@ public class TabsTag extends AbstractHtmlElementTag { private String prepareTabLink(TabInfoBean tabInfoBean, int ctr) { String contextPath = getRequestContext().getContextPath(); - String baseUri = getRequestContext().getRequestUri(); + HttpServletRequest request = + ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()) + .getRequest(); + String uri = (String) request.getAttribute("org.springframework.web.util.UrlPathHelper.PATH"); + String baseUri = contextPath + uri; if (baseUri.lastIndexOf("?") > -1) { baseUri += "&"; } else { diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java index b719cc7e..558d334d 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java @@ -227,7 +227,7 @@ public class TextareaTag extends } private void protectField() throws JspException { - if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) { + if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) { setReadonly(true); setTabindex("-1"); if (getCssClass() == null || getCssClass().indexOf("protected") == -1) { @@ -242,7 +242,7 @@ public class TextareaTag extends if (isLeftCharsIndicator()) { writeLeftCharsPart(); } - if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) { + if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) { writeDojoScript(tagWriter); } if (getUseWysiwyg().startsWith("onButtonSwitch")) { @@ -284,7 +284,7 @@ public class TextareaTag extends script.append("widgetType : 'voila.form.ValidationSimpleTextarea',"); } script.append("widgetAttrs : {"); - script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired())); + script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext)); script.append(",regExp : \"(.|\\\\s)*\""); if (getMaxLength() != null) { script.append(",maxLength : " + getMaxLength()); @@ -300,7 +300,7 @@ public class TextareaTag extends setRequired("false"); setTabindex(null); setCssClass(null); - setDisabled(true); + setDisabled(false); setFitContent(false); setRequired(null); setForceEdit(null); diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java index 3190f2e5..2cb8dd06 100644 --- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java +++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java @@ -251,8 +251,4 @@ public class ExpressionEvaluationUtils { exprValue, resultClass, pageContext.getVariableResolver(), null); } - public static boolean evaluateBoolean(String a, String b) { - return a.equals(b); - } - } diff --git a/voila-runtime-springtest/pom.xml b/voila-runtime-springtest/pom.xml index 7d720236..0ab4df46 100644 --- a/voila-runtime-springtest/pom.xml +++ b/voila-runtime-springtest/pom.xml @@ -41,17 +41,6 @@ commons-collections - - - org.apache.velocity - velocity - 1.6.4 - - - commons-collections - commons-collections - - \ No newline at end of file diff --git a/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java b/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java index bc7e0b74..6b000fb9 100644 --- a/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java +++ b/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java @@ -6,12 +6,16 @@ import java.util.Enumeration; import java.util.Iterator; import java.util.Map; +import org.springframework.context.annotation.Bean; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartException; import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import org.springframework.web.multipart.support.StandardServletMultipartResolver; +import javax.servlet.MultipartConfigElement; +import javax.servlet.ServletRegistration; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; -- GitLab