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;
  }