Class BlueMindServerSeed

java.lang.Object
org.exoplatform.caldav.client.bluemind.BlueMindServerSeed
All Implemented Interfaces:
CalendarServerSeed

@Service public class BlueMindServerSeed extends Object implements CalendarServerSeed
The BlueMind row a first install receives (EXO-90737): the same row the host used to seed itself, now contributed by the BlueMind code rather than named by the host, until the BlueMind add-on's own seed replaces it.

It states no order, which sorts it after the add-on's seed; both carry the identifier "bluemind", so when both are installed the host seeds the add-on's and ignores this one.

What the row carries, and why. It is excused for what BlueMind is known to do to a copy (SEED_QUIRKS), pointed at the account's main calendar, and writes through BlueMind's import channel — the same choices the browser's BlueMind preset makes on a declaration (serverPresets.js). The main calendar rather than the model's default because on this server the default has an established cost: BlueMind's dedicated calendar is excluded from the account's free/busy — colleagues booking around the user see eXo meeting times as free — and it carries no answer buttons. A seed that disagreed with the preset an administrator is about to apply to the very same row would be teaching two answers to one question.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The seed's identifier, the same as the BlueMind flavour's.
    static final List<org.exoplatform.caldav.model.ServerQuirk>
    The catalogue entries the seeded BlueMind row arrives excused for: the behaviours a live account was characterised with across EXO-89716 to EXO-89828, and the same four the browser's BlueMind preset ticks on a declaration (serverPresets.js).
    static final String
    The name the BlueMind row is seeded under.
    static final String
    Address the BlueMind row is seeded with: a placeholder an administrator is expected to replace with the DAV endpoint of their own BlueMind, whose shape it mirrors (BlueMind serves DAV under /dav/ and answers there with 401 Basic realm="bm.basic.auth.v2"; the bare host only redirects).
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    id()
    The seed's stable identifier — the product's, the same as its server flavour's — which decides which of two contributions for one product is seeded.
    org.exoplatform.caldav.model.MirrorTargetKind
    The account's main calendar, see the class comment.
    The name the row is seeded under.
    List<org.exoplatform.caldav.model.ServerQuirk>
    The catalogue entries the row arrives excused for, the same ones the product's browser preset ticks.
    The address the row is seeded with, usually a placeholder the administrator replaces with their own server's.
    org.exoplatform.caldav.model.WriteChannel
    BlueMind's own ICS import door (EXO-90307): a CalDAV write makes BlueMind schedule the meeting itself.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SEED_ID

      public static final String SEED_ID
      The seed's identifier, the same as the BlueMind flavour's.
      See Also:
    • SERVER_NAME

      public static final String SERVER_NAME
      The name the BlueMind row is seeded under.
      See Also:
    • SERVER_URL

      public static final String SERVER_URL
      Address the BlueMind row is seeded with: a placeholder an administrator is expected to replace with the DAV endpoint of their own BlueMind, whose shape it mirrors (BlueMind serves DAV under /dav/ and answers there with 401 Basic realm="bm.basic.auth.v2"; the bare host only redirects).

      An RFC 2606 .invalid name (EXO-89794): it can never resolve, so the row can never be a live target, and it fails the address check — so the row is seeded inactive rather than offered to users as a connector that goes nowhere.

      Note also that BlueMind sends no CORS headers, so connecting from the browser needs the portal to front it on its own origin.

      See Also:
    • SEED_QUIRKS

      public static final List<org.exoplatform.caldav.model.ServerQuirk> SEED_QUIRKS
      The catalogue entries the seeded BlueMind row arrives excused for: the behaviours a live account was characterised with across EXO-89716 to EXO-89828, and the same four the browser's BlueMind preset ticks on a declaration (serverPresets.js).

      The two lists are the same list, and that is a constraint rather than a coincidence. A preset also carries a summary sentence naming exactly what it ticks — caldav.admin.servers.preset.bluemind.summary — so widening the preset is a product-copy change and not only a list edit. They are held together by two assertions of the whole string, one where each is produced (CaldavServerServiceTest, serverPresets.test.js), and by the summary pin that fails a tick without a sentence and a sentence without a tick.

      Why the entries and not their patterns. The catalogue is where a behaviour has its patterns, its direction and its sentence; naming the entry here means the seed writes exactly what a tick of that box writes, and a pattern the catalogue later widens reaches the next fresh install without a second spelling to keep in step. It does not reach the browser's BlueMind preset, which carries its own QUIRKS map of the same ids to the same patterns.

      Tolerance entries only. The host files each entry into the tolerance column its direction names and writes no entry that changes what eXo writes (OMIT); CaldavServerServiceTest fails the moment one is named here.

  • Constructor Details

    • BlueMindServerSeed

      public BlueMindServerSeed()
  • Method Details

    • id

      public String id()
      The seed's stable identifier — the product's, the same as its server flavour's — which decides which of two contributions for one product is seeded.
      Specified by:
      id in interface CalendarServerSeed
      Returns:
      the identifier, never blank
    • name

      public String name()
      The name the row is seeded under.
      Specified by:
      name in interface CalendarServerSeed
      Returns:
      the name, never blank
    • serverUrl

      public String serverUrl()
      The address the row is seeded with, usually a placeholder the administrator replaces with their own server's.
      Specified by:
      serverUrl in interface CalendarServerSeed
      Returns:
      the address, never blank
    • quirks

      public List<org.exoplatform.caldav.model.ServerQuirk> quirks()
      The catalogue entries the row arrives excused for, the same ones the product's browser preset ticks. Only tolerance entries can be seeded; an entry that changes what eXo writes is logged and left out.
      Specified by:
      quirks in interface CalendarServerSeed
      Returns:
      the entries, never null, possibly empty
    • mirrorTarget

      public org.exoplatform.caldav.model.MirrorTargetKind mirrorTarget()
      The account's main calendar, see the class comment.
      Specified by:
      mirrorTarget in interface CalendarServerSeed
      Returns:
      MirrorTargetKind.MAIN_CALENDAR
    • writeChannel

      public org.exoplatform.caldav.model.WriteChannel writeChannel()
      BlueMind's own ICS import door (EXO-90307): a CalDAV write makes BlueMind schedule the meeting itself.
      Specified by:
      writeChannel in interface CalendarServerSeed
      Returns:
      WriteChannel.BLUEMIND_IMPORT