Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static class MyDestinationDataProvider implements DestinationDataProvider {
- private DestinationDataEventListener eL;
- private HashMap<String, Properties> secureDBStorage = new HashMap<String, Properties>();
- public Properties getDestinationProperties(String ABAP_AS) {
- try {
- //read the destination from DB
- Properties p = secureDBStorage.get(ABAP_AS);
- if(p!=null) {
- //check if all is correct, for example
- if(p.isEmpty())
- throw new DataProviderException(DataProviderException.Reason.INVALID_CONFIGURATION, "destination configuration is incorrect", null);
- return p;
- }
- return null;
- } catch(RuntimeException re) {
- throw new DataProviderException(DataProviderException.Reason.INTERNAL_ERROR, re);
- }
- }
- //An implementation supporting events has to retain the eventListener instance provided
- //by the JCo runtime. This listener instance shall be used to notify the JCo runtime
- //about all changes in destination configurations.
- public void setDestinationDataEventListener(DestinationDataEventListener eventListener) {
- this.eL = eventListener;
- }
- public boolean supportsEvents() {
- return true;
- }
- //implementation that saves the properties in a very secure way
- void changeProperties(String ABAP_AS, Properties properties) {
- synchronized(secureDBStorage) {
- if(properties==null) {
- if(secureDBStorage.remove(ABAP_AS)!=null)
- eL.deleted(ABAP_AS);
- } else {
- secureDBStorage.put(ABAP_AS, properties);
- eL.updated(ABAP_AS); // create or updated
- }
- }
- }
- } // end of MyDestinationDataProvider
- //business logic
- void executeCalls(String ABAP_AS) {
- JCoDestination dest;
- try {
- dest = JCoDestinationManager.getDestination(ABAP_AS);
- dest.ping();
- System.out.println("Destination " + ABAP_AS + " works");
- } catch(JCoException e) {
- e.printStackTrace();
- System.out.println("Execution on destination " + ABAP_AS + " failed");
- }
- }
- static Properties getDestinationPropertiesFromUI() {
- //adapt parameters in order to configure a valid destination
- Properties connectProperties = new Properties();
- connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "XXX");
- connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "XX");
- connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "XXX");
- connectProperties.setProperty(DestinationDataProvider.JCO_USER, "XXX");
- connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "XXX");
- connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "XX");
- createDestinationDataFile(ABAP_AS, connectProperties);
- return connectProperties;
- }
- static void createDestinationDataFile(String ABAP_AS, Properties connectProperties) {
- File destCfg = new File(ABAP_AS + ".jcoDestination");
- try {
- FileOutputStream fos = new FileOutputStream(destCfg, false);
- connectProperties.store(fos, "for tests only!");
- fos.close();
- } catch (Exception e) {
- throw new RuntimeException("Unable to create the destination files", e);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement