Exemplo n.º 1
0
  @Override
  protected boolean processMessage(IMessageContext message) throws CapabilitiesLoadException {
    Capabilities caps = message.getCustomer().getCapabilities();
    if (caps == null) throw new CapabilitiesLoadException();
    Capabilities.ActiveMailboxSupport amSupportCap =
        caps.getEnumCapability(
            Capabilities.CAP_ACTIVEMAILBOX_SUPPORT, Capabilities.ActiveMailboxSupport.NONE);
    boolean useNFS =
        ManagementContainer.getInstance()
            .getConfiguration()
            .getBooleanProperty(CONFIG_USE_NFS, DEFAULT_USE_NFS);

    if (amSupportCap == Capabilities.ActiveMailboxSupport.AM_CUSTOMER_ENCRYPTION
        || message.getEnvelope().isCustomerEncrypted()) {
      if (!useNFS) {
        return writeMetaFiles(message);
      } else {
        // Direct nfs usage; doesn't occur in production (mmfs is used instead)
        boolean success = true;
        String metaContents = createMetaContents(message);
        String metaFileName = new File(message.getStoreFileSubPath()).getName();
        if (!CollectionsUtils.isNullOrEmpty(message.getResolvedRecipients())) {
          for (Iterator<ReplicatedRecipient> it = message.getResolvedRecipients().iterator();
              it.hasNext(); ) {
            ReplicatedRecipient rr = it.next();
            if (!writeMetaFile(rr, message, false, metaFileName, metaContents)) {
              success = false;
            }
          }
        }
        if (message.getResolvedSender() != null) {
          if (!writeMetaFile(
              message.getResolvedSender(), message, true, metaFileName, metaContents)) {
            success = false;
          }
        }
        if (!success) {
          m_importer.getStatComponent().addToValue(STAT_META_STORE_FAILURES, 1);
          m_importer.consumerImportFailed(message, true);
          return false;
        }
      }
    }
    return true;
  }
Exemplo n.º 2
0
 /**
  * Method writeMetaFiles. This uses the MailStoreFileManger API to store files remotely.
  *
  * @param message
  */
 private boolean writeMetaFiles(IMessageContext message) {
   String metaContents = createMetaContents(message);
   String metaFileName = new File(message.getStoreFileSubPath()).getName();
   Collection<MailStoreFileManager.MetaMessageDescriptor> msgs =
       new ArrayList<MailStoreFileManager.MetaMessageDescriptor>();
   if (!CollectionsUtils.isNullOrEmpty(message.getResolvedRecipients())) {
     for (ReplicatedRecipient rr : message.getResolvedRecipients()) {
       msgs.add(
           new MailStoreFileManager.MetaMessageDescriptor(
               message.getInternalId(),
               rr.getMaildir(),
               metaFileName,
               message.getEnvelope().getSentDate(),
               message.getEnvelope().getReceivedDate(),
               false,
               rr.getState().toInt()));
     }
   }
   if (message.getResolvedSender() != null) {
     ReplicatedRecipient rr = message.getResolvedSender();
     msgs.add(
         new MailStoreFileManager.MetaMessageDescriptor(
             message.getInternalId(),
             rr.getMaildir(),
             metaFileName,
             message.getEnvelope().getSentDate(),
             message.getEnvelope().getReceivedDate(),
             true,
             rr.getState().toInt()));
   }
   IMailStoreFileManager imsfm = ManagementContainer.getInstance().getMailStoreFileManager();
   if (imsfm.storeMetaMessage(msgs, metaContents)) {
     m_importer.audit(message, getName(), metaFileName);
     return true;
   } else {
     m_importer.getStatComponent().addToValue(STAT_META_STORE_FAILURES, 1);
     m_importer.consumerImportFailed(message, true);
     return false;
   }
 }