X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.activemq%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjms%2FJmsAttachmentListener.java;h=1d449dd7e619b488b9f9f09eca77b286e259261b;hb=cffd700ca670610a1f81e021f82542dc6bf5c810;hp=46e828060b2f08cfe2b7eea795e8db81b4afe377;hpb=44dd5750650b46d9979b4e06e4cc76c0b0003f4f;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java index 46e828060..1d449dd7e 100644 --- a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAttachmentListener.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * 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.argeo.slc.jms; import java.io.ByteArrayInputStream; @@ -30,15 +46,23 @@ public class JmsAttachmentListener implements MessageListener { .setContentType(msg .getStringProperty(JmsAttachmentUploader.ATTACHMENT_CONTENT_TYPE)); - byte[] buffer = new byte[(int) message.getBodyLength()]; + // Check body length + Long bodyLength = message.getBodyLength(); + if (bodyLength > Integer.MAX_VALUE) + throw new SlcException("Attachment cannot be bigger than " + + Integer.MAX_VALUE + + " bytes with this transport. Use another transport."); + + byte[] buffer = new byte[bodyLength.intValue()]; message.readBytes(buffer); in = new ByteArrayInputStream(buffer); attachmentsStorage.storeAttachment(attachment, in); } catch (JMSException e) { throw new SlcException("Could not process attachment message " + msg, e); + } finally { + IOUtils.closeQuietly(in); } - IOUtils.closeQuietly(in); } public void setAttachmentsStorage(AttachmentsStorage attachmentsStorage) {