Class AasConnector<CO,​CI>

  • Type Parameters:
    CO - the output type to the IIP-Ecosphere platform
    CI - the input type from the IIP-Ecosphere platform
    All Implemented Interfaces:
    de.iip_ecosphere.platform.connectors.Connector<java.lang.Object,​java.lang.Object,​CO,​CI>, de.iip_ecosphere.platform.connectors.events.EventHandlingConnector, de.iip_ecosphere.platform.connectors.model.AbstractModelAccess.NotificationChangedListener

    @MachineConnector(hasModel=true,
                      supportsModelStructs=false,
                      supportsEvents=false)
    public class AasConnector<CO,​CI>
    extends de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
    A generic Asset Administration Shell connector. We use hierarchical names to identify sub-models and elements within. Requires the the registry URL part, e.g. "registry" in ConnectorParameter.getEndpointPath(). The ConnectorParameter.getApplicationId() denotes the AASs to operate on. If the application id is
    1. a non-wildcard string, the uniquely denoted AAS is used for reading and writing/calling.
    2. a wildcard string in Java String Regex format, the denoted AAS are used for reading. AAS names are updated during polling. Currently, only the first matching AAS is enabled for writing/calling.
    If the application id starts with a known AAS identifier schema, the id is parsed into that and utilized to obtain the AAS, e.g., iri:urn:... Without, the connector tries to obtain a registry based on an AAS short id, which currently may fail.
    Author:
    Holger Eichelberger, SSE
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  AasConnector.AasModelAccess
      Implements the model access for AAS.
      static class  AasConnector.Descriptor
      The descriptor of this connector (see META-INF/services).
      • Nested classes/interfaces inherited from class de.iip_ecosphere.platform.connectors.AbstractConnector

        de.iip_ecosphere.platform.connectors.AbstractConnector.BasicAdapterProvider
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Map<java.lang.String,​de.iip_ecosphere.platform.support.aas.Aas> connectedAAS  
      private static java.lang.Object DUMMY  
      private de.iip_ecosphere.platform.support.aas.AasFactory factory  
      private java.util.concurrent.atomic.AtomicBoolean inPolling  
      private static org.slf4j.Logger LOGGER  
      private java.lang.String nonPollingAas  
      private de.iip_ecosphere.platform.connectors.ConnectorParameter params  
      private java.util.regex.Pattern pattern  
      private java.lang.String pollingAas  
      private java.lang.Thread pollingThread  
      private de.iip_ecosphere.platform.support.aas.Registry registry  
      • Fields inherited from class de.iip_ecosphere.platform.connectors.AbstractConnector

        DEFAULT_CHANNEL
    • Constructor Summary

      Constructors 
      Constructor Description
      AasConnector​(de.iip_ecosphere.platform.connectors.types.ProtocolAdapter<java.lang.Object,​java.lang.Object,​CO,​CI>... adapter)
      Creates an instance and installs the protocol adapter.
      AasConnector​(de.iip_ecosphere.platform.support.aas.AasFactory factory, de.iip_ecosphere.platform.connectors.AdapterSelector<java.lang.Object,​java.lang.Object,​CO,​CI> selector, de.iip_ecosphere.platform.connectors.types.ProtocolAdapter<java.lang.Object,​java.lang.Object,​CO,​CI>... adapter)
      Creates an instance and installs the protocol adapter.
      AasConnector​(de.iip_ecosphere.platform.support.aas.AasFactory factory, de.iip_ecosphere.platform.connectors.types.ProtocolAdapter<java.lang.Object,​java.lang.Object,​CO,​CI>... adapter)
      Creates an instance and installs the protocol adapter.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected boolean checkCache​(java.lang.Object data)  
      protected void connectImpl​(de.iip_ecosphere.platform.connectors.ConnectorParameter params)  
      protected void disconnectImpl()  
      void dispose()  
      protected void doPolling()  
      java.lang.String enabledEncryption()  
      protected void error​(java.lang.String message, java.lang.Throwable th)  
      java.lang.String getName()  
      protected java.lang.Object read()  
      private void receivedAas​(java.util.Map<java.lang.String,​de.iip_ecosphere.platform.support.aas.Aas> connectedAAS)
      Calls #received(Object) for each AAS in connectedAAS.
      java.lang.String supportedEncryption()  
      void trigger​(de.iip_ecosphere.platform.connectors.events.ConnectorTriggerQuery query)  
      private boolean updateAas​(java.util.regex.Pattern pattern, java.util.Map<java.lang.String,​de.iip_ecosphere.platform.support.aas.Aas> connectedAAS, boolean modifyNotPollingAas)
      Updates the AAS.
      protected void writeImpl​(java.lang.Object data)  
      • Methods inherited from class de.iip_ecosphere.platform.connectors.AbstractConnector

        configureModelAccess, connect, createTlsContext, disconnect, enableNotifications, enablePolling, getCachingStrategy, getCachingStrategyCls, getConnectorInputType, getConnectorOutputType, getConnectorParameter, getInitCachingStrategyCls, getProtocolInputType, getProtocolOutputType, getSelector, initializeModelAccess, initSelector, installPollTask, isPolling, notificationsChanged, notifyReconfigured, received, received, request, request, setReceptionCallback, trigger, uninstallPollTask, useTls, write
      • Methods inherited from class java.lang.Object

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

      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • DUMMY

        private static final java.lang.Object DUMMY
      • connectedAAS

        private java.util.Map<java.lang.String,​de.iip_ecosphere.platform.support.aas.Aas> connectedAAS
      • factory

        private de.iip_ecosphere.platform.support.aas.AasFactory factory
      • params

        private de.iip_ecosphere.platform.connectors.ConnectorParameter params
      • pattern

        private java.util.regex.Pattern pattern
      • registry

        private de.iip_ecosphere.platform.support.aas.Registry registry
      • inPolling

        private java.util.concurrent.atomic.AtomicBoolean inPolling
      • pollingAas

        private transient java.lang.String pollingAas
      • pollingThread

        private transient java.lang.Thread pollingThread
      • nonPollingAas

        private java.lang.String nonPollingAas
    • Constructor Detail

      • AasConnector

        @SafeVarargs
        public AasConnector​(de.iip_ecosphere.platform.connectors.types.ProtocolAdapter<java.lang.Object,​java.lang.Object,​CO,​CI>... adapter)
        Creates an instance and installs the protocol adapter.
        Parameters:
        adapter - the protocol adapter
        Throws:
        java.lang.IllegalArgumentException - if adapter is null or empty or adapters are null
      • AasConnector

        @SafeVarargs
        public AasConnector​(de.iip_ecosphere.platform.support.aas.AasFactory factory,
                            de.iip_ecosphere.platform.connectors.types.ProtocolAdapter<java.lang.Object,​java.lang.Object,​CO,​CI>... adapter)
        Creates an instance and installs the protocol adapter.
        Parameters:
        factory - define the AasFactory to use, if null use AasFactory.getInstance()
        adapter - the protocol adapter(s)
        Throws:
        java.lang.IllegalArgumentException - if adapter is null or empty or adapters are null
      • AasConnector

        @SafeVarargs
        public AasConnector​(de.iip_ecosphere.platform.support.aas.AasFactory factory,
                            de.iip_ecosphere.platform.connectors.AdapterSelector<java.lang.Object,​java.lang.Object,​CO,​CI> selector,
                            de.iip_ecosphere.platform.connectors.types.ProtocolAdapter<java.lang.Object,​java.lang.Object,​CO,​CI>... adapter)
        Creates an instance and installs the protocol adapter.
        Parameters:
        factory - define the AasFactory to use, if null use AasFactory.getInstance()
        selector - the adapter selector (null leads to a default selector for the first adapter)
        adapter - the protocol adapter(s)
        Throws:
        java.lang.IllegalArgumentException - if adapter is null or empty or adapters are null
    • Method Detail

      • connectImpl

        protected void connectImpl​(de.iip_ecosphere.platform.connectors.ConnectorParameter params)
                            throws java.io.IOException
        Specified by:
        connectImpl in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
        Throws:
        java.io.IOException
      • updateAas

        private boolean updateAas​(java.util.regex.Pattern pattern,
                                  java.util.Map<java.lang.String,​de.iip_ecosphere.platform.support.aas.Aas> connectedAAS,
                                  boolean modifyNotPollingAas)
        Updates the AAS.
        Parameters:
        pattern - the AAS id matching pattern
        connectedAAS - the actually known connected AAS for this update
        modifyNotPollingAas - whether nonPollingAas may be modified by this call as a side effect
        Returns:
        true if new AAS were added, false else
      • receivedAas

        private void receivedAas​(java.util.Map<java.lang.String,​de.iip_ecosphere.platform.support.aas.Aas> connectedAAS)
        Calls #received(Object) for each AAS in connectedAAS.
        Parameters:
        connectedAAS - the received AAS to be ingested
      • checkCache

        protected boolean checkCache​(java.lang.Object data)
        Overrides:
        checkCache in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
      • doPolling

        protected void doPolling()
        Overrides:
        doPolling in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
      • disconnectImpl

        protected void disconnectImpl()
                               throws java.io.IOException
        Specified by:
        disconnectImpl in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
        Throws:
        java.io.IOException
      • dispose

        public void dispose()
      • getName

        public java.lang.String getName()
      • writeImpl

        protected void writeImpl​(java.lang.Object data)
                          throws java.io.IOException
        Specified by:
        writeImpl in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
        Throws:
        java.io.IOException
      • read

        protected java.lang.Object read()
                                 throws java.io.IOException
        Specified by:
        read in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
        Throws:
        java.io.IOException
      • trigger

        public void trigger​(de.iip_ecosphere.platform.connectors.events.ConnectorTriggerQuery query)
        Specified by:
        trigger in interface de.iip_ecosphere.platform.connectors.events.EventHandlingConnector
        Overrides:
        trigger in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
      • error

        protected void error​(java.lang.String message,
                             java.lang.Throwable th)
        Specified by:
        error in class de.iip_ecosphere.platform.connectors.AbstractConnector<java.lang.Object,​java.lang.Object,​CO,​CI>
      • supportedEncryption

        public java.lang.String supportedEncryption()
      • enabledEncryption

        public java.lang.String enabledEncryption()