PI 7.1 Adapter Module - meaning of VERSION_ID and serialVersionUID?

Hi!
I am currently developing my first PI Adapter Module. In SAP sample coding GetHostName I find the following declarations and I ask me what's the meaning and/or purpose of these declarations:
public static final String VERSION_ID = "$Id://tc/aii/30_REL/src/_adapters/_sample/java/user/module/GetHostName.java#1 $";
satic final long serialVersionUID = 7435850550539048631L;
And additionally how I have to declare these two variables for my adapter module ... This comes true especially for VERSION_ID, because serialVersionUID can be generated by NWDS using quick fix feature. It then declares such a variable ...
Thanxs for any hint in advance!
Regards,
Volker

Hi Pavel,
public - this is the visibility modifier (it means that the body method can be call by any outside method)
static - the method is a static instance of the class. Not sure what exactly it does though.
final indicates that the value of the variable won't change - in other words, a variable who's value can't be modified after it is declared.
Use public final static String when you want to create a String that belongs to the class (no instance necessary to use it), and that won't change, for instance when you want to define a Stringconstant that will be available to all instances of the class, and to other objects using the class, depending on the access modifier:
public final static String MY_CONSTANT = "SomeValue";  // ... in some other code, possibly in another object, use the constant: if (input.equals(MyClass.MY_CONSTANT)
All the variables are implicitly public static final in a Java Interface.
Is it a good coding practice to use public static final in constant variable although it is declared inside an Interface.
For example :
public interface TestInterface{  public static final String EX_CONSTANT = "ABC"; public static final int EX_INT_CONSTANT = 5; public static final double EX_DOUBLE = "5.0"; public static final Integer EX_INTEGER = 10;  }
Refer below links
http://scn.sap.com/community/pi-and-soa-middleware/blog/2012/09/24/setting-queue-dynamically-using-adapter-module
http://f0j00fec.benxbrain.com/en(bD1lbiZjPTAwMQ==)/index.do?onInputProcessing(brai_object_thread)&001_threadid=89626&001_boardtype=01&sysid=PI1&pgmid=R3TR&object=DTEL&obj_name=VERSION_ID&child_param=
Hope it will helpful..
Regards
Bhargava krishna

Similar Messages

  • Adapter module to check header and footer

    Hello All,
    Is there any standard/custom adapter module to check the presence of header and footer in the Incoming flat file?
    Thanks,
    Regards,
    Moorthy

    Hi Moorthy,
    Check this list of standard modules available
    http://help.sap.com/saphelp_nwpi711/helpdata/en/cd/5af7c0c994e24fb0d0088443513de2/frameset.htm
    I didnt find any standard module that you could use for you requirement.
    If you are looking to handle the header and footer of a flat file you can try using the key field parameter in the File content conversion.
    /people/shabarish.vijayakumar/blog/2006/02/27/content-conversion-the-key-field-problem
    Regards,
    Aravind

  • Reg Adapter Module in SAP PI 7.11

    Hi,
    I am trying to develop an Adapter Module using SAP NWDS and I am referring http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c0b39e65-981e-2b10-1c9c-fc3f8e6747fa?quicklink=index&overridelayout=true for the same.
    Now I am stuck on page 11 (page 16 of the pdf).
    Does the value of Remote interface have to be strictly com.sap.aii.af.lib.mp.module.ModuleRemote (similarly for other parameters)?
    Are these values dependent on the Default EJB Package that we use (mentioned on page10). Because the name of my package is com.companyname.adaptermodule and is as per the naming convention that we follow.
    Thank you,
    Pankaj.

    Hi,
    Ok. Actually I thought that the names are dependent on the default EJB package-name that we specify in previous step; but now these two do not seem to be related to each other (name-wise)
    The question seems to be answered for now. Thanks to Stefan.
    Thank you,
    Pankaj.

  • Import  com.sap.aii.mappingtool.* show error in PI 7.1 adapter module

    Hi
    Experts,
    i have an adapter module for 7.0 and i am trying to replicate the same for PI  7.1  in 7.1 NWDS.
    i have made the required changes as mentioned in stefan's blog :/people/stefan.grube/blog/2008/12/11/adjust-your-pi-70-adapter-modules-for-pi-71-in-15-minutes
    but  import com.sap.aii.mappingtool.tf7.rt.Container; shows error , do we need to  inlcude any jar file for this :
    i am using this module to rename file name (in case of pick and place scenario forwithot IR configuration)
    getMessageProperty and setmessageProperty is getting deprecated.(striked off)
    strFileName = msg.getMessageProperty("http://sap.com/xi/XI/System/File","FileName");
    Regards,
    Srinivas

    > strFileName = msg.getMessageProperty("http://sap.com/xi/XI/System/File","FileName");
    in PI 7.1 you can use:
    strFileName = msg.getMessageProperty(new MessagePropertyKey("FileName","http://sap.com/xi/XI/System/File"));
    Note that property name and namspace come in different order. I almost got mad until I noticed
    http://help.sap.com/javadocs/pi/SP3/xpi/index.html

  • Value mapping in the adapter module

    Hi all...
    There was been alot of writing about value mapping in many different ways.
    But I have not been able to find help about doing the lookup in the adapter module.
    Has anyone tried this?
    Regards Peter

    Hi,
    In this case you can perfrom a RFC Lookup, but, from an Adapter Module, you would need to use the concept of JRA to do the same.
    Amol Joshi has described how he called the Alerts RFC from the adapter module in these blogs and you can apply the same logic for your case as well to trigger the RFC from your module, get the data and then do the needful.
    /people/amol.joshi2/blog/2006/11/27/alerts-from-adapter-modules--the-jra-way
    /people/amol.joshi2/blog/2006/11/28/alerts-from-adapter-modules--the-jra-way-part-ii
    Regards
    Bhavesh

  • Java EE Adapter Module JARS

    Hello experts,
    i am developing an adapter module at the moment and i would really like to know how the getContextDataKeys() Method of the class ModuleContext is implemented in the com.sap.aii.af.lib.mp.module-package!
    The thing i would like to know is, if the parameter names of the module configuration are sorted in the way they are shown on the modules tab in the communication channel!
    I have got the com.sap.aii.af.lib.mod.jar but the implementation of the ModuleContext is not in it! Can anybody provide me the implementation of this class, or the jar file including the implementing class?
    Or just give me an answer to the written question above?
    Thanks in advance!
    Kind regards
    Markus
    Edited by: Markus Schalk on Jan 30, 2012 5:21 PM

    Hello,
    does nobody have a clue how the getContextDataKeys()-method of the class ModuleContext is implemented?
    I want to use it to get all module parameter names dynamically, because i don't know them before runtime!
    But i am getting some unexpected values. It seems that the module key is also in the enumeration which is the return value of the method. Also i am wondering why the parameter names are not ordered like they are listed in the modules tab!?
    The source code of the method would be of great interest to me...
    Thanks in advance for any hints!
    Kind regards,
    Markus

  • Error in Adapter modules

    Hello Gurus,
    We are facing issue in Adapter modules installed in J2EE engine. We deployed two different Adapter modules in J2EE engine and two different interfaces are using them. But if any one of the interfaces run, the other interface is giving following error:
    "Error: BaseTransactionRolledbackLocalException: Exception thrown in method process. The transaction is marked for rollback.".
    If we restart the J2EE engine, it will start to work but the another interface is giving the smae error.
    Please help me.
    Regards,
    Indira D

    I facing the same error few days before.
    My module was working well for the first time but running again used to give problem.
    But on restarting server or redeploying module it again use to work fine.
    The basic problem was...
    there were few variables used in my modules which were initialised as class variables.
    when the process() method gets called for first time it use to execute properly.
    solution:
    Reinitialize variables at the starting phase of process() method.
    Reward points if useful.
    thanks

  • Setting the charset from an adapter module

    Hi folks,
    I'm trying to set the charset encoding of a payload using an adapter module (I know there is a TextCodepageConverterBean, but I want to set the charset for a message that hasn't one yet). The problem is probably more clear using an example.
    I output a UTF-8 flat string from my message mapping to the adapter framework (mail adapter in my case). Afterwards I want to convert this UTF-8 string to an ISO-8859 encoding with the TextCodepageConverterBean. But if I set the charset using the setContentType() function of my TextPayload object the information gets cut away. I'm using the format
    setContentType("text/plain;charset=utf-8;name=Test.txt")
    . But everything after the first semicolon is dropped. Setting the charset using the MessageTransformBean works, but I want to avoid this by all means, as I need to set the mime type from the adapter module.
    This is running on NW2004 with SP 16 and the latest patch.
    Any idea, why the MessageTransformBean works and not the setContentType call?

    This bug will be fixed with SP20.
    Regards
    Stefan

  • File Adapter Module - Help

    Hi
    For a file adapter I had enabled the option <b>Archieve File</b> in my communication channel. So the system will put the file in the archieve folder after it is read. My requirement is to check if the file already exits in the archieve folder or not. Any means of checking it? or shud i make use of adapter modules? If yes kindly point some helpful tips on the same.
    Kindly fwd any useful doc to [email protected]
    regds
    prabhu

    Prabhu,
    The os command in the file adapter should exists in the XI server only.
    Whatever command you provide in the Adapter will result in the SID+"ADM" user id exectuing this command at the oS level of your XI server.
    So this script should exist on the XI server.
    Now, if the archive directory is on the FTP server you will have to connect to the FTP server from the script and check if the file exists and then do the needful.
    Check this blog out for executing Scripts on file adapters,
    /people/sameer.shadab/blog/2005/09/21/executing-unix-shell-script-using-operating-system-command-in-xi
    Regards
    Bhavesh

  • Empty file to process in customer J2EE adapter module

    Hi All,
    if i give an empty text file to a sender communication channel, then no message is generated by XI.
    i want to generate a dummy XML if empty file is given.
    so is it possible to make a customer-specific J2EE adapter module - then deploy it - then if in sender comm channel this adapter module is written before SAPAdapter module, then should XI generate a dummy XML for this empty file.
    i am asking this because i developed a J2EE adapter module, then deployed it, then tried to invoke it  from sender comm channel but this J2EE adapter module is not getting invoked - this i can tell because i have written the following lines only in Java class process method:
    <i>Message msg_audit = (Message)inputModuleData.getPrincipalData();
    AuditMessageKey amk = new AuditMessageKey(msg_audit.getMessageId(),AuditDirection.OUTBOUND);
    Audit.addAuditLogEntry(amk, AuditLogStatus.SUCCESS,"FileCheck: Module called");
                                                 return inputModuleData;</i>
    but still in the audit log only 3 messages of entire file content converted to XML format, empty doc so no sending of message and deleting of empty file are coming.
    <b>Can anybody suggest whether is it possible to process an empty text file to generate a dummy XML in sender communication channel in XI.</b>
    Thanks,
    Rajeev Gupta

    Hi All,
    When i write this code:
    try
                                                                obj = inputModuleData.getPrincipalData();                                                  
                                                                msg_audit = (Message)obj;
                                                                amk = new AuditMessageKey(msg_audit.getMessageId(),AuditDirection.OUTBOUND);
                                                                Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,"FileCheck: Module called");
                                       <i>File f = new File("/components/XITEMP/sample/PWC/check.txt");                                                            
                                                                          if (f.canWrite())
                                                                                         PrintStream ps;
                                                                                         FileOutputStream fos =new FileOutputStream(f);
                                                                                         File f1 = new File("/components/XITEMP/sample/PWC/check1.txt");
                                                                                         ps = new PrintStream(fos);
                                                                                         if (f1.exists()==false)
                                                                                              f1.createNewFile();                                                                    
                                                                                         ps.println("Testing");
                                                                                         ps.close();
                                                                                         fos.close();                                                            
                                                                               else
                                                                                    File f2 = new File("/components/XITEMP/sample/PWC/check2.txt");          
                                                                                    if (f2.exists()==false)
                                                                                              f2.createNewFile();                                                                    
                                                                               }               </i>                                        
    it works fine......it creates the file check1.txt
    but when i place the italiced code in this format:
         try
                                                                obj = inputModuleData.getPrincipalData();                                                  
                                                                msg_audit = (Message)obj;
                                                                amk = new AuditMessageKey(msg_audit.getMessageId(),AuditDirection.OUTBOUND);
                                                                Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,"FileCheck: Module called");
                                                           catch (Exception e)
                                                                     try
                                                                          File f = new File("/components/XITEMP/sample/PWC/check.txt");                                                            
                                                                          if (f.canWrite())
                                                                                         PrintStream ps;
                                                                                         FileOutputStream fos =new FileOutputStream(f);
                                                                                         File f1 = new File("/components/XITEMP/sample/PWC/check1.txt");
                                                                                         ps = new PrintStream(fos);
                                                                                         if (f1.exists()==false)
                                                                                              f1.createNewFile();                                                                    
                                                                                         ps.println("Testing");
                                                                                         ps.close();
                                                                                         fos.close();                                                            
                                                                               else
                                                                                    File f2 = new File("/components/XITEMP/sample/PWC/check2.txt");          
                                                                                    if (f2.exists()==false)
                                                                                              f2.createNewFile();                                                                    
                                                                     catch(Exception ex)
    it doesnot create the file check1.txt......
    Can anybody suggest why in the exception block this italiced code is not working........means it is working in try block of try{}catch{} block.......but it is not working in catch block of try{}catch{try{}catch{}}
    Thanks,
    Rajeev Gupta

  • Any one knows how to use Axis Framework in the SOAP Adapter Modules

    How to use Axis Framework in the SOAP Adapter?
    How to add custom handler modules?
    http://help.sap.com/saphelp_nw04/helpdata/en/45/a4f8bbdfdc0d36e10000000a114a6b/frameset.htm
    I went through the above link on help.sap.com. But still could not create a working example.
    I have created a wc on some 3ed party app server using apaches axis. I am trying to call that web service from XI using SOAP receiver? I need to add some security related headers to the soap message, SO I am trying to use a handler.  I want to know how to configure this handler in SOAP axis adapter module.
    Thank you
    Moni

    Ravi ,
    I am trying exactly the same. Hers is the scenario.
    ABAP Proxy --> PI (7.0) SP 12 ---> WebService.
    Since This is service is secured, means it is using OASIS web servie securyty user name token,
    I am trying to use AXIS adapter. and I want to configure HandlerBean in which I want to use apache wss4j api to add the userNameToken. I am looking for some documentation on this.
    I need to add SOAP action element too as I can not configure this one on the communication channel.
    Thanks for any inputs in this regard.
    Moni

  • Dummy XML not getting generated from empty file by J2EE adapter module

    Hi All,
    i know when XI gets an empty input text file, it does not generate a send message for it in sender communication channel.
    in my scenario, if i get a file with data, i have to generate an XML message for it using file content conversion - this i have done...........
    but if i get an empty text file, then i have to generate a dummy XML send message for it for my BPM.......
    So i made a J2EE adapter module to generate dummy xml for empty file.....<b>when i give a file with data in it, then my adapter module is called..... but when i give an empty file, then my adapter module is not called</b>.........
    <b><i>Can anybody suggest why the module processor is not invoking my customer-adapter module when an empty file is given.............but the module processor is invoking my customer-adapter module when a file with data is given</i>.</b>
    Thanks,
    Rajeev Gupta

    Hi Amit,
    Below is the code of process method which i used:
    <i>public ModuleData process(ModuleContext moduleContext,
      ModuleData inputModuleData)
        throws ModuleException
    Object obj;
    Message msg_audit;
    AuditMessageKey amk;
    try
    File f = new File("/components/XITEMP/sample/PWC/check.txt");
    PrintStream ps;
    if (f.canWrite())
    FileOutputStream fos =new FileOutputStream(f);
    ps = new PrintStream(fos);  
    ps.println("Testing");
    ps.close();
    fos.close(); 
    else
      f = new File("/components/XITEMP/sample/PWC/check4.txt");
      if (f.exists() ==false)
      f.createNewFile();
    obj = inputModuleData.getPrincipalData();
    if (obj!=null)
    msg_audit = (Message)obj;
    amk = new AuditMessageKey(msg_audit.getMessageId(),AuditDirection.OUTBOUND);
    Audit.addAuditLogEntry(amk,AuditLogStatus.SUCCESS,"FileCheck: Module called");
    else
      String str = new String();
    String str1 = new String();     
                  str1="<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
                 str1+="<ns:MT_PWC_RECORD xmlns:ns=\"urn://PWC_SR3_01/PWC/Customer\">";
             str1+="<RECORD_SET>";     
                 str1+="<RECORD>";
             str1+="<RECORD_DATA>BLANK_FILE</RECORD_DATA>";
             str1+="</RECORD>";
             str1+="</RECORD_SET>";
             str1+="</ns:MT_PWC_RECORD>";     
    str=str1; 
    inputModuleData.setPrincipalData(str);
    catch(Exception e)
    try
    File f = new File("/components/XITEMP/sample/PWC/check.txt");
    PrintStream ps;
    if (f.canWrite())
      FileOutputStream fos =new FileOutputStream(f);
      ps = new PrintStream(fos);  
      ps.println(e.toString());
      ps.close();
      fos.close(); 
    catch(Exception ex)
    return inputModuleData;
       }</i>
    in the above methood, i  used file operations at start just to see whether the module is getting invoked or not...so when i give a data file, then the file operations are performed and messages are written in audit log.........but when i give an empty file, then the file operations are not performed - meaning the module is not getting invoked........
    Thanks,
    Rajeev Gupta

  • Adapter Modules in PI 7.1  EAR/SDA?

    Hi guys,
    is it possible to deploy adapter modules in the 7.1 version in the same form as before? I mean EARs?
    Thanks,
    Olian

    Hi,
    the below link already ravi provided if you read the PDF you will understand clearly how to deploy Adapter Modules.
    http://www.sdn.sap.com/irj/scn/index;jsessionid=(J2EE3417300)ID1319576450DB10340902879478557111End?rid=/library/uuid/00838345-708c-2a10-1199-9514c0b0a91c&overridelayout=true
    THere atre two ways we can delploy Adapter Module,Directly from NWDS,if you have acces to J2EE engine,this is the easy way,because you already have EAR files.
    Second one is deploying in SDM ,i don think so you need to convert in to.sdm files, we can directly deploy EAR files in SDM.
    Regards,
    Raj

  • Error in Adapter Module to unzip files

    Hello ,
    I wish to unzip many files with use of an adapter module
    To du this I use following code
    package de.lsv.moduledevelopement;
    import java.io.*;
    import java.util.Hashtable;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    import javax.ejb.CreateException;
    import com.sap.aii.af.mp.module.Module;
    import com.sap.aii.af.mp.module.ModuleContext;
    import com.sap.aii.af.mp.module.ModuleData;
    import com.sap.aii.af.mp.module.ModuleException;
    import com.sap.aii.af.ra.ms.api.Message;
    import com.sap.aii.af.ra.ms.api.MessageDirection;
    import com.sap.aii.af.ra.ms.api.Payload;
    import com.sap.aii.af.ra.ms.spi.Trace;
    import com.sap.aii.af.service.auditlog.Audit;
    import com.sap.aii.af.service.auditlog.AuditDirection;
    import com.sap.aii.af.service.auditlog.AuditLogStatus;
    import com.sap.aii.af.service.auditlog.AuditMessageKey;
    * @ejbLocal <{de.lsv.moduledevelopement.UnZipFilesLocal}>
    * @ejbLocalHome <{de.lsv.moduledevelopement.UnZipFilesLocalHome}>
    * @stateless
    public class UnZipFilesBean implements SessionBean, Module {
         static AuditMessageKey amk = null;
         static String auditStr = "UnzipFilesBean - ";
         static ModuleException mEx = null;
         public static final String VERSION_ID =
              "$Id://de.lsv.moduledevelopement.UnZipFilesBean.java#1 $";
         private static final Trace TRACE = new Trace(VERSION_ID);
         public void ejbRemove() {
         public void ejbActivate() {
         public void ejbPassivate() {
         public void setSessionContext(SessionContext context) {
              myContext = context;
         private SessionContext myContext;
          * Create Method.
         public void ejbCreate() throws CreateException {
              // TODO : Implement
         /* (non-Javadoc)
          * @see com.sap.aii.af.mp.module.Module#process(com.sap.aii.af.mp.module.ModuleContext, com.sap.aii.af.mp.module.ModuleData)
         public ModuleData process(
              ModuleContext moduleContext,
              ModuleData inputModuleData)
              throws ModuleException {
              Object obj = null;
              Message msg = null;
              Payload attachment = null;
              //initializing variables for module parameters
              String modkey = "";
              String fileMask = "";
              String directory = "";
              String saveDirectory = "";
              //     String newMimeType = "";
              //     String newAttachmentName = "";
              //     String newAttachmentExtension = "";
              //     String newAttachmentNameReplace = "";
              //this block is to manage the adapter when is not file/FTP
              try {
                   //get the XI Message
                   obj = inputModuleData.getPrincipalData();
                   msg = (Message) obj;
                   // create AuditMessageKey object to write audit log.
                   if (msg.getMessageDirection() == MessageDirection.INBOUND)
                        amk =
                             new AuditMessageKey(
                                  msg.getMessageId(),
                                  AuditDirection.INBOUND);
                   else
                        amk =
                             new AuditMessageKey(
                                  msg.getMessageId(),
                                  AuditDirection.OUTBOUND);
                   // ******start get the module parameters from the configuration******
                   modkey = moduleContext.getContextData("module.key");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "Module Configuration Key: " + modkey);
                   //***** einlesen der Moduke Parameter******************
                   //***** DateiMaske
                   fileMask = moduleContext.getContextData("FileMask");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "FileMask: " + fileMask);
                   // check ob fileMask definiert ist
                   if (fileMask == null || fileMask.equalsIgnoreCase("")) {
                        //if no attachment name is specified in the module configuration the module will end the execution
                        throw mEx =
                             new ModuleException(
                                  auditStr
                                       + "!FileMask in Modulconfiguration nicht definiert!");
                   //***** DateiMaske2
                   String fileMask2 = moduleContext.getContextData("FileMask2");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "FileMask2: " + fileMask2);
                   //***** Directory
                   directory = moduleContext.getContextData("Directory");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "Directory: " + directory);
                   // Fehler wenn Directory nicht definiert
                   if (directory == null || directory.equalsIgnoreCase("")) {
                        //the module will end the execution
                        throw mEx =
                             new ModuleException(
                                  auditStr
                                       + "Directory in Modulconfiguration nicht definiert");
                   //***** Sicherungs Verzeichnis
                   saveDirectory = moduleContext.getContextData("SaveDirectory");
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "SaveDirectory: " + saveDirectory);
                   // entpacken aufrufen
                   entpacke(directory, saveDirectory, fileMask);
                   if (fileMask2.length() > 0) {
                        entpacke(directory, saveDirectory, fileMask2);
                   //update the XI Message
                   inputModuleData.setPrincipalData(msg);
              } catch (Exception e) {
                   String errorMessage =
                        auditStr + "Error bei der . Exception:" + e.getMessage();
                   Audit.addAuditLogEntry(amk, AuditLogStatus.ERROR, errorMessage);
                   throw mEx = new ModuleException(auditStr + errorMessage);
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Verarbeitung beendet ");
              return inputModuleData;
         //+++++++++++++++++++++++++
         private static void entpacke(
              String directory,
              String saveDirectory,
              String mask)
              // TODO Auto-generated method stub
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Funktion entpacke");
              if (!directory.endsWith("\")) {
                   directory = directory + "\";
              } // if
              File f;
              f = new File(directory);
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "f = new File(directory)");
    //          // Achtung Klasse in einer Klasse :-)
    //          String[] strFiles = f.list(new FilenameFilter() {
    //               public boolean accept(File file, String filename) {
    //                    Wildcard wildcard1 = new Wildcard(mask);
    //                    Audit.addAuditLogEntry(
    //                         amk,
    //                         AuditLogStatus.SUCCESS,
    //                         auditStr + "wc1");
    //                    return wildcard1.match(filename, false);
              String [] strFiles = f.list(new MyFilter(mask));
              // Liste der Gefundenen dateien
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Anzahl gepackter Dateien: " + strFiles.length);
              //System.out.println( strFiles.length + " Dateien zum entpacken");
              for (int i = 0; i < strFiles.length; i++) {
                   Audit.addAuditLogEntry(
                        amk,
                        AuditLogStatus.SUCCESS,
                        auditStr + "verarbeite Datei: : " + strFiles<i>);
                   //     System.out.println("f[" + i + "]=" + strFiles<i>);
              } // for
              // *****entpacken**********************
              for (int i = 0; i < strFiles.length; i++) {
                   try {
                        byte[] buf = new byte[4096];
                        ZipInputStream in =
                             new ZipInputStream(
                                  new FileInputStream(directory + strFiles<i>));
                        Audit.addAuditLogEntry(
                             amk,
                             AuditLogStatus.SUCCESS,
                             auditStr + "Entpacke " + directory + strFiles<i>);
                        //System.out.println("Entpacke " + directory + strFiles<i>);
                        int count = 0;
                        while (true) {
                             count++;
                             // Nächsten Eintrag lesen
                             ZipEntry entry = in.getNextEntry();
                             if (entry == null) {
                                  break;
                             // Beschreibung ausgeben
                             Audit.addAuditLogEntry(
                                  amk,
                                  AuditLogStatus.SUCCESS,
                                  auditStr + entry.getName());
                             //System.out.println(entry.getName());
                             // Ausgabedatei erzeugen
                             FileOutputStream out =
                                  new FileOutputStream(directory + entry.getName());
                             int len;
                             while ((len = in.read(buf)) > 0) {
                                  out.write(buf, 0, len);
                             out.close();
                             // Eintrag schließen
                             in.closeEntry();
                        } // while
                        in.close();
                        Audit.addAuditLogEntry(
                             amk,
                             AuditLogStatus.SUCCESS,
                             auditStr + count + "Dateien entpackt");
                        //System.out.println(count + "Dateien entpackt");
                        // verschieben
                        if (saveDirectory.length() > 0) {
                             File quelle = new File(directory + strFiles<i>);
                             File ziel = new File(saveDirectory + strFiles<i>);
                             boolean bla = quelle.renameTo(ziel);
                             if (!bla) {
                                  Audit.addAuditLogEntry(
                                       amk,
                                       AuditLogStatus.SUCCESS,
                                       auditStr
                                            + strFiles<i>
                                            + " konnte nicht verschoben werden");
                             } else {
                                  Audit.addAuditLogEntry(
                                       amk,
                                       AuditLogStatus.SUCCESS,
                                       auditStr
                                            + strFiles<i>
                                            + "verschoben nach "
                                            + saveDirectory);
                                  //          System.out.println(
                                  //               strFiles<i> + "verscgoben nach " + directory + "sik//");
                        } // if
                   } catch (Exception e) {
                        String errorMessage =
                             auditStr
                                  + "Error in entpacken. Exception:"
                                  + e.getMessage();
                        Audit.addAuditLogEntry(amk, AuditLogStatus.ERROR, errorMessage);
                   } // catch
                   // *****entpacken*************
              } // for
         } //entpacke
    } // UnzipFilesBean
    class Wildcard {
         static AuditMessageKey amk = null;
         static String auditStr = "WildCard - ";
         static ModuleException mEx = null;
         private final String wildcardString;
          * Der Konstruktor für die WildcardSuche.
          * @param wildcardString
          *            Der WildcardString
         public Wildcard(String wildcardString) {
              this.wildcardString = wildcardString;
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Constructor");
          * Die Methode, welche den Vergleich durchführt.
          * @param str
          *            Der String, welcher darauf überprüft werden soll, ob er dem
          *            WildcardString entspricht.
          * @return true Wenn der String dem wildcardString entspricht.
         public boolean match(String str, boolean fCasesensitive) {
              if (str == null || wildcardString == null) {
                   return false;
              return recursiveMatch(wildcardString, str, fCasesensitive);
          * Hier wird der eigentliche Vergleich durchgeführt
          * @param strWildcard
          *            Der Wildcardstring, z.B.: "Test*"
          * @param str
          *            Der zu überprüfende String, z.B. "Testlauf"
          * @return true, wenn eine Übereinstimmung vorhanden ist, sonst false
         private boolean recursiveMatch(
              String strWildcard,
              String str,
              boolean fCasesensitive) {
              while (true) {
                   if (strWildcard.length() == 0)
                        return str.length() == 0;
                   char ch = strWildcard.charAt(0);
                   switch (ch) {
                        case '?' :
                             if (str.length() == 0)
                                  return false;
                             break;
                        case '*' :
                             strWildcard = strWildcard.substring(1);
                             while (true) {
                                  if (recursiveMatch(strWildcard, str, fCasesensitive))
                                       return true;
                                  if (str.length() == 0)
                                       return false;
                                  str = str.substring(1);
                        default :
                             if (str.length() == 0)
                                  return false;
                             if (fCasesensitive) {
                                  if (ch != str.charAt(0))
                                       return false;
                             } else if (
                                  Character.toLowerCase(ch)
                                       != Character.toLowerCase(str.charAt(0)))
                                  return false;
                             break;
                   strWildcard = strWildcard.substring(1);
                   str = str.substring(1);
         //++++++++++++++++++++++++++
    } // class
    /** Nun der eigentliche Filter */
    class MyFilter implements FilenameFilter {
         static AuditMessageKey amk = null;
         static String auditStr = "MyFilter - ";
         static ModuleException mEx = null;
         String fileMask;
         public MyFilter(String fileMask) {
              this.fileMask = fileMask;
              Audit.addAuditLogEntry(
                   amk,
                   AuditLogStatus.SUCCESS,
                   auditStr + "Constructor");
         } //constructor
          public boolean accept(File file, String filename) {
              // TODO Auto-generated method stub
              //fileMask = "?5LBL*";
              Wildcard wildcard1 = new Wildcard(fileMask);
              return wildcard1.match(filename, false);
    } //class
    But in Audit Protocol it failed after:
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - Module Configuration Key: 2
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - FileMask: ?5LBL???
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - FileMask2:
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - Directory: //transfer//X1E//100//99//lb//ein
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - SaveDirectory: //transfer//X1E//100//99//lb//ein_s
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - Funktion entpacke
    17.09.2008 17:33:19     Erfolgreich     UnzipFilesBean - f = new File(directory)
    17.09.2008 17:33:19     Fehler     UnzipFilesBean - Error bei der . Exception:null
    I could not find the error??
    Were there any log files to look into?
    regarts
    Zimmerningkat

    Hi Ralf,
    I am late..........
    I am bit confused with your explanation.
    1. Does all zip files will be picked by file adapter in one shot or is it conditional, since you have a XML descriptor file in firts zip file and the XML files describes the list of JPEG files which might be stored in the other zipped JPEG files?
    2. Can you tell the exact flow of your scenario
    3. Receiver in your scenario?
    Thanks,
    Gujjeti.

  • Set a variable in Adapter Module and read it during message mapping

    Hi guys,
    is there any way, how I could set some variable and store its value during the adapter module processing and read back this value in message mapping and use it? Without using a database or files.. I mean, some j2ee storage or something like that..
    Thanks for your help,
    Olian

    Hi guys,
    thanks for your answers..  just a clarification, what the problem is.
    I need to validate a message in the adapter module, if it's digital signature is valid. If it is, I need to send back to the sender a return code (message) OK, otherwise ERROR. I can't modify the message (or dynamic configuration) as I'm using a WSS in the sender channel. The system doesn't allow me to change anything in the message, so I can't find out in the mapping what the validation result was. I then tried to do the validation directly in the message mapping, but I have some issues there with libraries or what, because the validation code, which works in the adapter module, doesn't work in the mapping java class. So my final thought was maybe I could validate the message in the adapter module and pass the result to the message mapping and then create an appropriate return message (in the mapping). However, I see no way of passing a value there. I'm stuck and have no Idea how to resolve the problem. Any hints guys?
    Thanks a lot for your help!
    Olian

Maybe you are looking for

  • Alchemy and EAX doesn't w

    Hi I'm trying to get EAX sound working in games using Vista, X-Fi Extreme Music and Creative Alchemy. I've installed alchemy and added the games in the console yet the EAX options in game are still greyed out. Any ideas? Thanks Flim

  • BT Infinity from 72.85 MBA/s to 51.31 MBA/s

    This is absolute ridicules !!! I use BT infinity 2 at the beginning I was getting between 65 to 72 MBA/s and the upload around 12 MBA/s,5 Ms latency with a Vigor 2850n... Excellent!!! After few months I use a Cloud service to backup 25 GB and then st

  • CIN Tax Procedures

    HI CIN GURU'S, Can anyone please explain me why different tax procedures are used, These below procedures are used for factory sales... J1INFAC (condition-based excise determination) and JFACT (formula-based excise determination). Then why TAXINN & T

  • Apple script for Message box when Mail app Compose Window Opens

    Hi there I'm trying to make mail app remind me to choose the right emaill address to send from since I have several email addresses. Is there a way I can make or write an apple script for a message box to pop up whenever mail app's compose window ope

  • CS6 Batch Saving for Web

    CS 6 Version 13.0 I have got the following issue: I did create action to save files of a folder for web. Within the action I have defined the destination folder. So far, everything works fine and the files are saved in that folder in much smaller siz