safeSubstr

   public String safeSubstr(String value, int startPos, int length, Container container)
         throws StreamTransformationException {
      /*
       * @Author: Nicola Martella | www.nick4name.eu La funzione ritorna la
       * sottostringa di value a partire da startPos (in base 0) per la lunghezza
       * length. Es1: value: "ABCDEFGHIJ" startPos=6 length=3 ret: "GHI" Se la
       * posizione di length a partire da startPos eccede la lunghezza di value, viene
       * ritornata la sottostringa a partire da startPos per tutta la lunghezza
       * rimanente. Es2: value: "ABCDEFGHIJ" startPos=6 length=10 ret: "GHIJ" Se la
       * posizione di startPos e' maggiore della lunghezza di value, viene ritornata
       * una stringa vuota. Es3: value: "ABCDEFGHIJ" startPos=11 length=3 ret: "" Se
       * value è null, viene ritornata una stringa vuota. Es4: value: null startPos=0
       * length=3 ret: "" Se length e/o startPos sono < 0 vengono posti a 0.
       */
      if (value == null)
         return "";
      if (length < 0)
         length = 0;
      if (startPos < 0)
         startPos = 0;
      int toPos = startPos + length;
      if (toPos > value.length()) {
         toPos = value.length();
      }
      if (startPos > value.length()) {
         startPos = value.length();
      }
      return value.substring(startPos, toPos);
   }

Dynamic Configuration JMS DCJMSCorrelationID

Per i flussi verso JMS Web Logic occorre definire nella dynamic configuration l’attributo DCJMSCorreleationID.
Dal momento che questo attributo non è esposto dalla ASMA occorre valorizzarlo da mapping con la seguente UDF.

public String setCorrelationID(String corID, Container container) throws StreamTransformationException{

	container.getTransformationParameters().put(StreamTransformationConstants.CONVERSATION_ID, corID);
	DynamicConfiguration conf = (DynamicConfiguration)                                container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
	
	DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS", "DCJMSCorreleationID");
	conf.put(key, corID);
	
	return "";

}
Dynamic Configuration JMS DCJMSCorreleationID

Dynamic Configuration set FileName

public String setDynConfFilename(String filename, String dummy, Container container) throws StreamTransformationException{
	/**
	 * Imposta il filename nel dynamic configuration parameter FileName della chiave http://sap.com/xi/XI/System/File.
	*/
	
	if ( filename.trim().length() == 0) return "";
	
	DynamicConfiguration conf1 = (DynamicConfiguration) container.getTransformationParameters()
						.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
	DynamicConfigurationKey key1 = DynamicConfigurationKey.create( "http://sap.com/xi/XI/System/File","FileName");
	
	conf1.put(key1,filename);
	
	return filename;
}
Dynamic Configuration set FileName

Dynamic Configuration get FileName

UDF per ottenere il nome del file del communication channel file tramite la ASMA, Adapter-Specific Message Attribute, “http://sap.com/xi/XI/System/File” “FileName” delle Dynamic Configuration.

public String getDynConfFilename(Container container) throws StreamTransformationException{
	/*
	Ritorna la chiave "http://sap.com/xi/XI/System/File" "Directory" delle Dynamic Configuration.
	*/
	
	DynamicConfiguration dc = (DynamicConfiguration) container
					.getTransformationParameters().get(
							StreamTransformationConstants.DYNAMIC_CONFIGURATION);
	
	DynamicConfigurationKey k1 = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File", 
												"Directory");
	
	return dc.get(k1);

}