All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sdmlib.storyboards.GenericIdMap Maven / Gradle / Ivy

Go to download

SDMLib is a light weight modeling library. SDMLib intentionally comes without any tool or editor.

There is a newer version: 2.3.2341
Show newest version
package org.sdmlib.storyboards;

import java.lang.reflect.Method;

import org.sdmlib.CGUtil;
import org.sdmlib.serialization.SDMLibJsonIdMap;

import de.uniks.networkparser.interfaces.SendableEntityCreator;
import de.uniks.networkparser.IdMap;

public class GenericIdMap extends SDMLibJsonIdMap
{
   @Override
   public SendableEntityCreator getCreator(String className, boolean fullName) 
   {
      if (className.startsWith("java.util.Collections$"))
      {
         return null;
      }
      else if (className.startsWith("java.lang."))
      {
         return null;
      }
      else if (className.endsWith("Set") || className.endsWith("EList"))
      {
         String packageName = CGUtil.packageName(className);
         
         if (packageName.endsWith(".util"))
         {
            return null;
         }
         
      }
      
      SendableEntityCreator sendableEntityCreator = (SendableEntityCreator) this.creators.get(className);
      
      if (sendableEntityCreator == null)
      {
         // try to infer creator class
         String creatorClassName = CGUtil.helperClassName(className, "Creator");
         try
         {
            Class creatorClass = this.getClass().getClassLoader().loadClass(creatorClassName);
            sendableEntityCreator = (SendableEntityCreator) creatorClass.newInstance();
         }
         catch (Exception e)
         {
            // did not work, thus generic must be enough
            // e.printStackTrace();
         }

         if (sendableEntityCreator == null)
         {
            // create generic creator
            sendableEntityCreator = new GenericCreator().withClassName(className);
         }

         this.creators.put(className, sendableEntityCreator);
      }
      
      return sendableEntityCreator;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy