How it Works

  1. We have JSON file with Location and Name of Factory Class
  2. Using Configuration.java we read the JSON File and read the Configuration
  3. We run TasteFoodFromMenu.java by supplying the JSON file Location as Input
  4. Now by the above method the JAR’s could be built independently and by changing the JSON file we could make changes and deploy the code without restarting the Server

For more detail refer here

Configuration.java

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;

import com.fasterxml.jackson.databind.ObjectMapper;

public class Configuration {

    public static Configuration loadConfiguration(String fileName) throws IOException {    	
    	//Read Name of File
        Path path = FileSystems.getDefault().getPath(fileName);
        
        //Read Contents of File
        String contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
        
        ObjectMapper mapper = new ObjectMapper();
        
        //Map Location and FactoryType
        Configuration config = mapper.readValue(contents, Configuration.class);
        return config;
    }

    private String factoryType;
    private String location;


    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getFactoryType() {
        return factoryType;
    }

    public void setFactoryType(String factoryType) {
        this.factoryType = factoryType;
    }
}

TasteFoodFromMenu.java

public class TasteFoodFromMenu {
	  public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException {
	        Configuration configuration = Configuration.loadConfiguration(args[0]);
	        String location = configuration.getLocation();
	        URL url = new URL(location);
	        URLClassLoader ucl = new URLClassLoader(new URL[]{url});
	        Class<IFoodFactory> cls = (Class<IFoodFactory>) Class.forName(configuration.getFactoryType(), true, ucl);
	        IFoodFactory cameraFactory = cls.newInstance();
	        IFood camera = cameraFactory.prepareFood(); 
	        camera.serveFood();
	    }
}

config.json

{
  "factoryType": "com.mugil.food.ChineseFoodFactory",
  "location": "file:///D:/java/ReadConfFromJSON/lib/FoodMenu.jar"
}

Dependency Injection

What is Dependency

Quick Example:EMPLOYEE OBJECT WHEN CREATED,
              IT WILL AUTOMATICALLY CREATE ADDRESS OBJECT
   (if address is defines as dependency by Employee object)

Now in the above EMPLOYEE Class is dependent on ADDRESS Class.

You can not create the Address Object unless you create Employee Object

EMPLOYEE Class is dependent and ADDRESS Class is dependency

What is the purpose of DI?
With dependency injection, objects don’t define their dependencies themselves, the dependencies are injected to them as needed.The purpose of Dependency Injection is to reduce coupling in your application to make it more flexible and easier to test.

How does it benefit ? The objects don’t need to know where and how to get their dependencies, which results in loose coupling between objects, which makes them a lot easier to test.

When to use Dependency Injection
One of the most compelling reasons for DI is to allow easier unit testing without having to hit a database and worry about setting up ‘test’ data.Dependency Injection gives you the ability to test specific units of code in isolation.

Dependency injection is basically providing the objects that an object needs (its dependencies) instead of having it construct them itself. It’s a very useful technique for testing, since it allows dependencies to be mocked or stubbed out.

Dependencies can be injected into objects by many means (such as constructor injection or setter injection). One can even use specialized dependency injection frameworks (e.g Spring) to do that, but they certainly aren’t required.

Example
A Car depends on wheels, engine, fuel, battery, etc. to run. Traditionally we define the brand of such dependent objects along with the definition of the Car object

Without Dependency Injection (DI):

class Car
{
  private Wheel wh   = new ApolloWheel();
  private Battery bt = new ExideBattery();

  //The rest
}

Here, the Car object is responsible for creating the dependent objects.

What if we want to change the type of its dependent object – say Wheel – after the initial ApolloWheel() punctures? We need to recreate the Car object with its new dependency say SpareWheel(), but only the Car manufacturer can do that.

Then what does the Dependency Injection do us for…?

When using dependency injection, objects are given their dependencies at run time rather than compile time (car manufacturing time). So that we can now change the Wheel whenever we want. Here, the dependency (wheel) can be injected into Car at run time.

After using dependency injection:

class Car
{
  private Wheel wh   = [Inject an Instance of Wheel at runtime];
  private Battery bt = [Inject an Instance of Battery at runtime];

  Car(Wheel wh,Battery bt) 
  {
      this.wh = wh;
      this.bt = bt;
  }

  //Or we can have setters
  void setWheel(Wheel wh) 
  {
      this.wh = wh;
  }
}

Lets take the below example

public class Foo
{
    private Bar _bar;

    public Foo(Bar bar)
    {
        _bar = bar;
    }

    public bool IsPropertyOfBarValid()
    {
        return _bar.SomeProperty == PropertyEnum.ValidProperty;
    }
}

without dependency injection the Bar object is dependent and tightly coupled with Foo class like below

public class Foo
{
    private Bar _bar = new Bar();
    .
    . 
}

But by using dependency injection like before code you can mock the Bar Object at runtime and call the IsPropertyOfBarValid() method over it.

IoC is a generic term meaning rather than having the application call the methods in a framework, the framework calls implementations provided by the application.

Say the Excel Jar files with utility methods used the application uses the methods in the Utility Class and the flow is controlled by the way the method gets called in order the get the things done.

whereas

In framework like spring the implementation is defined in XML files and by using annotation and the framework calls the methods as per defined in xml.

Without Ioc

  Application -> Methods -> Framework      

With Ioc

  Framework -> XML File ->  Method Call (or) Implementation      

Inversion of Control(IoC) Container:
Common characteristic of frameworks IOC manages java objects

  1. From instantiation to destruction through its BeanFactory.
  2. Java components that are instantiated by the IoC container are called beans, and the IoC container manages a bean’s scope, lifecycle events, and any AOP features for which it has been configured and coded.

Flow of control is “inverted” by dependency injection because you have effectively delegated dependencies to some external system

The Inversion of Control (IoC) and Dependency Injection (DI) patterns are all about removing dependencies from your code.

For example, say your application has a text editor component and you want to provide spell checking. Your standard code would look something like this:

public class TextEditor
{
    private SpellChecker checker;
    public TextEditor()
    {
        this.checker = new SpellChecker();
    }
}

What we’ve done here is create a dependency between the TextEditor and the SpellChecker. In an IoC scenario we would instead do something like this:

public class TextEditor
{
    private ISpellChecker checker;
    public TextEditor(ISpellChecker checker)
    {
        this.checker = checker;
    }
}

Now, the client creating the TextEditor class has the control over which SpellChecker implementation to use. We’re injecting the TextEditor with the dependency.

Without IoC: you ask for “apple”, and you are always served apple when you ask more.

With IoC:
You can ask for “fruit”. You can get different fruits each time you get served. for example, apple, orange, or water melon.

Inversion of Control, (or IoC), is about getting
freedom (You get married, you lost freedom and you are being controlled. You divorced, you have just implemented Inversion of Control. That’s what we called, “decoupled”. Good computer system discourages some very close relationship.)

flexibility (The kitchen in your office only serves clean tap water, that is your only choice when you want to drink. Your boss implemented Inversion of Control by setting up a new coffee machine. Now you get the flexibility of choosing either tap water or coffee.)

less dependency (Your partner has a job, you don’t have a job, you financially depend on your partner, so you are controlled. You find a job, you have implemented Inversion of Control. Good computer system encourages in-dependency.)

IoC is a generic term meaning rather than having the application call the methods in a framework, the framework calls implementations provided by the application.Inversion of Control (IoC) means any sort of programming style where an overall framework or run-time controlled the program flow.

Dependency Injection is a Type of IoC

IoC means that objects do not create other objects on which they rely to do their work. Instead, they get the objects that they need from an outside service (for example, xml file or single app service).

DI means the IoC principle of getting dependent object is done without using concrete objects but abstractions (interfaces). This makes all components chain testable, cause higher level component doesn’t depend on lower level component, only from interface.

Techniques to implement inversion of control

  1. using a factory pattern
  2. using a service locator pattern
  3. using a dependency injection of any given below type:
    1. a constructor injection
    2. a setter injection
    3. an interface injection

DI is a form of IoC, where implementations are passed into an object through constructors/setters/service look-ups, which the object will ‘depend’ on in order to behave correctly.

IoC without using DI, for example would be the Template pattern because the implementation can only be changed through sub-classing.

DI Frameworks are designed to make use of DI and can define interfaces (or Annotations in Java) to make it easy to pass in implementations.

மகாபாரதம்:
———————

  1. குந்தி தேவி சூரியனை தோத்திரம் செய்து கர்ணனை பெற்றாள்
  2. குந்தி தேவியும், மாத்திரியும் தேவர்களை தோத்திரம் செய்து ஐந்து பிள்ளைகளை பெற்றனர்
  3. திரெளபதிக்கு ஐவரும் புருசர்கள் ஆனார்கள்.
  4. கௌரவர்கள் நூறு பேர். அவர்கள் பிறந்த விதம்.

இவைகள் உலகியல் அறிவுக்கு பொருந்துமா? என்று கேட்டுக் கொள்கிறேன்.

மாகாபாரதம் ஊர் உண்மை ஞான பொருளின் தத்துவ கதையாகும். உண்மையாக நடந்தது அல்ல என்பது ஞானிகளின் கருத்தாகும்.

பஞ்ச பாண்டவர்கள்:
➖➖➖➖➖➖➖➖
தருமா சிந்தனை உள்ளவர்கள் ஐம்பூதத்தால் ஆன மனித தேகத்தின் கண் உள்ள ஐம்புலன்கள் ஞானேந்திரியங்கள் ஆன்ம உணர்வுள்ளவர்கள் பஞ்ச பாண்டவர்களாகும்.

திரெளபதி
➖➖➖➖
மனித தேகத்தை காக்கும் இரத்தமாகிய சக்தி, பெண் அம்சம் (குங்குமம்) என்பதாகும். இச்சக்தியைக் கொண்டு ஐம்புலன்கள் செயல்படுவதால் ஐவருக்கு பத்தினி என்ற தத்துவ கருத்தாகும்.

கண்ணன்:
➖➖➖➖
ஆன்ம அறிவு மாயன், தேர் ஓட்டி, பாண்டவர்களின் மைத்துனன், உலக உயிர்களாகிய தேர்களை வழி நடத்துபவன் என்ற தத்துவமாகும்.

துரியோதனன்:
➖➖➖➖➖
நான், எனது என்ற அகங்கார மமகாரங்களின் உருவம், அஞ்ஞானத்திற்கு அதிபதி. அறிவுக்கும், நீதிக்கும் ஊசிமுனையிடமும் கொடுக்க மறுத்தவன்.

சகுனி:
➖➖➖
கெளரவர்களின் மைத்துனன், தீவினைகளுக்கு வழிகாட்டும் வஞ்சக அமைச்சர்.

கருத்து நம் மானிட தேகத்தின்கண் அறிவுக்கும், அறியாமைக்கும், தர்மத்திற்கும், அதர்மத்திற்கும், நீதிக்கும், அநீதிக்கும், புண்ணியம், பாவம் என்ற எண்ணங்களாகிய இருவினை போர் வீர்களுக்கு இடையில் நாள் தோறும் நடக்கும் மனப்போராட்டமே பாரத போராகும். இப்போர் மானிடன் என்ற ஒருவன் இருக்கும் வரை மனதிற்கும் அறிவிற்கும் ஓயாது நடக்கின்ற போராகும்.

திருநீற்றை ஒரு விரலால் தொட்டு நெற்றியில் பொட்டு போல வைத்துக்கொள்ள கூடாது. அதுபோல தண்ணீர் விட்டு குழைத்தும் பூசக் கூடாது.

நெற்றியில் ஒரு கோடிடுபவர்கள் ஆள்காட்டி விரலுக்கும் பெருவிரலுக்கும் இடையில் எவ்வளவு திருநீறு எடுக்க முடிகிறதோ அவ்வளவு எடுத்து நெற்றியில் கோடிட வேண்டும்.

மூன்று கோடு இடுவதற்கு சுண்டு விரல் தவிர்த்து மீதி நான்கு விரல்களால் திருநீரை எடுத்து, பெருவிரல் இல்லாமல் மீதி மூன்று விரலால் நெற்றி முழுவதும் கோடக அணிந்துக்கொள்ள வேண்டும்.

மேலும் தீட்சை பெற்றவர்கள் மட்டுமே திருநீரை தண்ணீர் சேர்த்து குழைத்து அணியலாம். தீட்சை பெறாதவர்கள் கண்டிப்பாக திருநீரை தண்ணீரில் குழைத்து அணிய கூடாது.

தினமும் திருநீறு அணியும் போது

“நம் தேகமும் ஒருநாள் இந்த பிடி சம்பலாகத்தான் ஆக போகிறது, ஆகவே இந்த உலக வாழ்வில் அதிக ஆசை கொள்ளாது, பொன் பொருள் மீது ஆசை கொள்ளாது, இறை வழிபாட்டில் மனம் ஒன்றி, ஆன்மா வளம் பெற வாழவேண்டும்.”

என்று எண்ணிக்கொள்ள வேண்டும். இதுவே சைவ மதம் போதிக்கும் சிறந்த கோட்பாடாகும்.

சைவ வழிபாடு
சைவ சமயத்தில் கடவுள் வழிபாடும் நன்கு வரையறுக்கப்பட்டுள்ளன.வாழ்ந்தே ஆக வேண்டும் என்ற நியதிக்கு உட்பட்ட நமது விதிகள் மூன்று மூலங்களைக் கொண்டு அமைக்கப்படுவது.

  1. பதி (கடவுள்)
  2. பசு (உயிர்)
  3. பாசம் (பற்று)

இவற்றில் பதிக்கு பாசத்தால் ஆக வேண்டியது ஒன்றும் இல்லை.அதுபோல பாசம் பதியை தொழுது பயன்களை பெற்றுக்கொள்ள முடியாது

இவை இரண்டிற்கும் இடைப்பட்ட பசுவே இவை இரண்டிற்கும் உள்ள தொடர்பு

அதாவது பசுவாகிய உயிர் பாசமாகிய பற்றில் இருந்து விடுபட்டு பதியாகிய கடவுளை(சிவனை) அடைவதே வழிபாட்டின் நோக்கம்

அப்படி உயிர் கடவுளை அடையும் நிலையே “ஞானம்” எனப்படுகிறது

சைவ நெறியின் சிவ வழிபாட்டின் நோக்கம் ஞானத்தை பெறுவதே

“பாசமாம் பற்றறுத்து பாரிக்கும் ஆரியனே” என்ற சிவ புராணத்தின் வரிகள் சிவ வழிபாட்டின் நோக்கத்தை நமக்கு விளக்குகின்றது

எனவே இந்த உலக இன்பதுன்ப உறவுகளில் இருந்து நம்மை விடுவித்து கொண்டு சிவ வழிபாட்டின் மூலம் சிவ கதி அடையவே நாம் முயல வேண்டும்….

பிரதோஷம்: அனைத்து தோஷங்களும் ஒடுங்கும் காலம் என்று பொருள்.

தேய்பிறை திரயோதசி சனிக்கிழமை ஆகியவை கூடியிருந்தால் மகாபிரதோஷம்.சாதாரண பிரதோஷ வழிபாடு தரும் பலன்கள் போன்று ஆயிரம் மடங்கு பலன் தரக்கூடியது இந்த மகாபிரதோஷம்.

தினமும் மாலை 4.30 முதல் 6 மணி வரையிலான ஒன்றரை மணி நேரம் பிரதோஷ காலமாகும்.

இந்த நேரத்தில் சிவபெருமானை தரிசிப்பது மிக விசேஷமானது.

பதினொரு பிரதோஷங்கள் தரிசனம் செய்தல் ஒரு முழு கும்பாபிஷேகத்தை தரிசனம் செய்த பலன் கிடைக்கும். பாவமே செய்து கொண்டு பிரதோஷம் செய்வதால் ஒரு புண்ணியமில்லை.

பிரதோஷ நேரம் சூரிய அஸ்தமனத்துக்கு முன்னும் பின்னும் ஒன் அரை (1-1/2) மணி நேரம் மணிநேரம்.

ஈஸ்வரனையும், சனிஸ்வரனையும் அன்று விரதமிருந்து வழிபடுவதால் சனி பிரதோஷத்துக்கு கூடுதல் சிறப்பு கிடைத்துள்ளது.

சிவபெருமான் தேவர்களை காப்பாற்ற ஆலகால நஞ்சை உண்ட நாள் சனிக்கிழமை.

எனவே, பிரதோஷ நேரம் சனிக்கிழமை அன்று வரும் சனி பிரதோஷம் என சிறப்பு பெறுகிறது

ஒரு புகழ் பெற்ற கோவிலில், பணியாள் ஒருவர் இருந்தார். கோவிலை பெருக்கி சுத்தம் செய்வது தான் அவரது பணி. அதை குறைவின்றி செவ்வனே செய்து வந்தார். கோவில், தன் வீடு. இரண்டும் தான் அவரது உலகம். இதை தவிர வேறொன்றும் தெரியாது.

தினமும் ஆயிரக்கணக்கான மக்கள் வந்து இறைவனை தரிசனம் செய்த வண்ணமிருந்தனர். ‘இறைவன் இப்படி எல்லா நேரமும் நின்றுகொண்டே இருக்கிறானே… அவனுக்கு சோர்வாக இருக்காதா?’ என்று எண்ணிய அவர் ஒரு நாள், இறைவனிடம் “எல்லா நேரமும் இப்படி நின்று கொண்டேயிருக்கிறாயே… உனக்கு பதிலாக நான் வேண்டுமானால் ஒரு நாள் நிற்கிறேன். நீ சற்று ஓய்வெடுத்துக் கொள்கிறாயா?” என்று கள்ளம் கபடமில்லாமல் கேட்க, அதற்க்கு பதிலளித்த இறைவன், “எனக்கு அதில் ஒன்றும் பிரச்னையில்லை. எனக்கு பதிலாக நீ நிற்கலாம். ஆனால் ஒரு முக்கிய நிபந்தனை. நீ என்னைப் போலவே அசையாமல் நிற்கவேண்டும். வருபவர்களை பார்த்து புன்முறுவலுடன் ஆசி வழங்கினால் போதும். யார் என்ன சொன்னாலம் கேட்டாலும் நீ பதில் சொல்லக் கூடாது. நீ ஒரு சாமி விக்ரகம் என்பதை மறந்துவிடக்கூடாது. என் மீது நம்பிக்கை வைத்து அசையாது நின்றாலே போதுமானது” என்று கூற, அதற்கு அந்த பணியாள் ஒப்புக்கொண்டார்.

அடுத்த நாள், இறைவனைப் போலவே அலங்காரம் செய்துகொண்டு, கோவில் கர்ப்ப க்ரஹத்தில் இவர் நிற்க, இறைவனோ இவரைப் போல தோற்றத்தை ஏற்று கோவிலைப் கூட்டிப் பெருக்கி சுத்தம் செய்து வந்தான். முதலில், ஒரு மிகப் பெரிய செல்வந்தன் வந்தான். தன் வியாபாரம் சிறப்பாக இருக்கவேண்டும் என்று இறைவனிடம் பிரார்த்தனை செய்துவிட்டு, ஒரு மிகப் பெரிய தொகையை உண்டியலில் காணிக்கையாக போட்டான். செல்லும்போது, தவறுதலாக தனது பணப்பையை அங்கு தவற விட்டுவிடுகிறான். இதை கர்ப்ப க்ரஹத்தில் இறைவன் வேடத்தில் நின்றுகொண்டிருக்கும் நம் ஹீரோ பார்க்கிறார். ஆனால், இறைவனின் நிபந்தனைப்படி அவரால் ஒன்றும் பேசமுடியவில்லை. அப்படியே அசையாது நிற்கிறார்.

சற்று நேரம் கழித்து ஒரு பரம ஏழை அங்கு வந்தான். அவனிடம் உண்டியலில் போட ஒரே ஒரு ரூபாய் மட்டுமே இருந்தது. “என்னால் இது மட்டும் தான் உனக்கு தர முடிந்தது. என்னை மன்னித்துவிடு இறைவா. என்றும் போல, என்னை ரட்சிக்கவேண்டும். எனக்கும் என் குடும்பத்தினருக்கும் அடிப்படை தேவைகள் கூட கிடைப்பது கஷ்டமாக இருக்கிறது. எல்லாவற்றையும் உன்னிடமே விட்டுவிடுகிறேன். நீயாக பார்த்து ஏதாவது எனக்கு ஒரு வழி சொல்” என்று மனமுருக கண்களை மூடி நம்பிக்கையுடன் பிரார்த்தனை செய்துகொண்டான்.

சில வினாடிகள் கழித்து கண்ணை திறந்தவனுக்கு எதிரே, அந்த செல்வந்தன் தவறவிட்ட பணப்பை கண்ணில் பட்டது. உள்ளே பணத்தை தவிர தங்கக் காசுகளும் சில வைரங்களும் கூட இருந்தன. இறைவன் தனக்கே தன் பிரார்த்தனைக்கு செவிமெடுத்து அதை அளித்திருக்கிறான் என்றெண்ணி, அப்பாவித்தனமாக அதை எடுத்துக்கொள்கிறான்.

இறைவன் வேடத்தில் நின்றுகொண்டிருந்த, அந்த சேவகரால் இப்போதும் எதுவும் சொல்லமுடியவில்லை. அதே புன்சிரிப்புடன் நின்றுகொண்டிருந்தார்.
சிறிது நேரம் கழித்து, ஒரு கப்பல் வியாபாரி வந்தான். ஒரு நீண்ட தூர பயணமாக கப்பலில் அன்று அவன் செல்லவிருப்பதால், இறைவனை தரிசித்து அவர் ஆசி பெற வேண்டி வந்தான். இறைவனிடம் பிரார்த்தனை செய்தான். அந்த நேரம் பார்த்து, பணப் பையை தொலைத்த செல்வந்தன், காவலர்களுடன் திரும்ப கோவிலுக்கு வந்தான்.

அங்கு, கப்பல் வியாபாரி பிரார்த்தனை செய்வதை பார்த்து, “இவர் தான் என் பணப்பையை எடுத்திருக்க வேண்டும். இவரை பிடித்து விசாரியுங்கள்” என்று காவலர்களிடம் கூற, காவலர்களும் அந்த கப்பல் வியாபாரியை பிடித்து செல்கிறார்கள். “இறைவா என் பணத்தை அபகரித்தவரை அடையாளம் காட்டியமைக்கு நன்றி!” என்று அந்த செல்வந்தன் இறைவனைப் பார்த்து நன்றி கூறிவிட்டு செல்ல, நம் ஹீரோ உடனே இறைவனை நினைத்துக்கொள்கிறார். “இது நியாயமா? அப்பாவி ஒருவன் தண்டிக்கப்படலாமா? இனியும் என்னால் சும்மாயிருக்க முடியாது…” என்று கூறி, “கப்பல் வியாபாரி திருடவில்லை. தவறு அவர் மீது இல்லை!” என்று இறைவன் வேடத்தில் நின்றிருந்த நம் பணியாள் நடந்த உண்மைகளை அனைவரிடமும் சொல்கிறார். உடனே, செல்வந்தரும், கப்பல் வியாபாரி இருவரும் நெகிழ்ந்து போய், உண்மையை கூறியமைக்கு இறைவனிடம் நன்றி சொல்லிவிட்டு செல்கின்றனர்.

இரவு வருகிறது. கோவில் நடை சாத்தப்படுகிறது. இறைவன் வருகிறார். மூலஸ்தானத்தில் நின்றுகொண்டிருந்த நம் பணியாளிடம் இன்றைய பொழுது எப்படியிருந்தது என்று கேட்கிறார். “மிகவும் கடினமாக இருந்தது. உன் வேலை எத்தனை கஷ்டம் என்பதை புரிந்துகொண்டேன். ஆனால் ஒரு நல்ல காரியம் செய்தேன்….” என்று காலை கோவிலில் நடந்ததை கூறினான்.
இறைவனோ இதே கேட்டவுடன் மிகவும் அதிருப்தியடைந்தார். என்னடா இது, நம்மை பாராட்டுவான் என்று நினைத்தால் இப்படி கோபித்து கொள்கிறானே என்று பணியாள் துணுக்குற்றான்.

“நாம் ஏற்படுத்திக்கொண்ட ஒப்பந்தப்படி நீ ஏன் நடந்துகொள்ளவில்லை….? என்ன நடந்தாலும் பேசக்கூடாது, அசையக்கூடாது என்ற என் நிபந்தனைகளை நீ ஏன் மீறினாய்….? உனக்கு என் மீது நம்பிக்கை இல்லை. இங்கு வருபவர்களது மனநிலையை அறியாதவனா நான்? ”

இறைவன் தொடர்ந்து பேசலானான்…. “செல்வந்தன் அளித்த காணிக்கை, தவறான வழியில் சம்பாதித்தது. அது அவனிடத்தில் மொத்தமாக உள்ள செல்வத்தில் ஒரு சிறு துளி தான். ஒரு துளியை எனக்கு காணிக்கையாக அளித்துவிட்டு, நான் பதிலுக்கு அவனுக்கு எண்ணற்றவைகளை தரவேண்டும் என்று அவன் எதிர்பார்க்கிறான். ஆனால் அந்த ஏழை கொடுத்ததோ அவனிடம் எஞ்சியிருந்த இருந்த ஒரே ஒரு ரூபாய் தான். இருப்பினும் என் மீது முழு நம்பிக்கை வைத்து என்னை வணங்க வந்தான். அன்போடு அதை கொடுத்தான்.

இந்த சம்பவத்தில், கப்பல் வியாபாரியின் தவறு எதுவும் இல்லை. இருந்தாலும், இன்றைக்கு அவன் திட்டமிட்டபடி கப்பல் பயணம் செய்தால், விபத்தை சந்திக்க நேரிடும். புயலில் தாக்குண்டு அவனும் அவன் கப்பலும் காணாமல் போயிருப்பார்கள். அதிலிருந்து அவனை காக்கவே அவனை தற்காலிகமாக திருட்டு பட்டம் சுமக்க செய்து சிறைக்கு அனுப்ப நினைத்தேன். அந்த ஏழைக்கு அந்த பணமுடிப்பு போய் சேரவேண்டியது சரி தான். அவன் அதை நான் கொடுத்ததாக எண்ணி போற்றுவான்.

இதன் மூலம் அந்த செல்வந்தனின் கர்மா ஓரளவாவது குறைக்கப்படும். அவன் பாவப் பலன்கள் துளியாவது குறையும். இப்படி ஒரே நேரத்தில் அனைவரையும் நான் ரட்சிக்க நினைத்தேன். ஆனால், நீயோ என் எண்ணங்கள் எல்லாம் உனக்கு தெரியுமென்று நினைத்து, உன் எண்ணங்களை செயல்படுத்தி அனைத்தையும் பாழ்படுத்திவிட்டாய்.” என்றான் இறைவன் கோபத்துடன்.சேவகன், இறைவனின் கால்களில் விழுந்து தன் தவறுக்கு மன்னிக்க வேண்டினான்.

“இப்போது புரிந்துகொள். நான் செய்யும் அனைத்திற்க்கும் காரணம் இருக்கும். அது ஒவ்வொன்றையும் மனிதர்களால் புரிந்துகொள்ளமுடியாது. அவர்களின் நலம் வேண்டியே நான் ஒவ்வொருப் பொழுதையும் கழிக்கிறேன். அவரவரது கர்மாவின் படி பலன்களை அளிக்கிறேன். நான் கொடுப்பதிலும் கருணை இருக்கிறது. கொடுக்க மறுப்பதிலும் கருணை இருக்கிறது.” என்றான் இறைவன் புன்னகைத்தபடி.
————————————————-
நம் வாழ்வில் இப்படித் தான்… நம்மை சுற்றி நடக்கும் பல சம்பவங்களுக்கு காரணங்களை நம்மால் புரிந்துகொள்ளமுடியாது. இறைவன் ஒவ்வொன்றிலும் ஒரு காரணத்தை ஒளித்துவைத்திருப்பான். அதை கண்டுபிடிப்பதில் தான் அனைவரும் வேறு படுகின்றனர்.
எதையும் எதிர்கொள்ளும் மனோபாவத்தையும், புரிந்துகொள்ளும் பக்குவத்தையும் இறைவனிடம் எப்போதும் வேண்டுவோம். இப்போதைய தேவை அது தான்.

அதே போல நமக்கு ஏற்படும் ஒவ்வொரு சோதனையின் போதும், மனம் தளராது இறைவன் மீது முழு நம்பிக்கை வைத்து, ‘எல்லாம் நமது நன்மைக்கே’ என்ற பக்குவத்தை நாம் வளர்த்துக்கொண்டால், எப்பேர்பட்ட சோதனைகளும் சாதனைகளாகிவிடும். எந்த துரோகமும் நம்மை ஒன்றும் செய்துவிட முடியாது.

தென்னாடுடைய சிவனே போற்றி எந்நாட்டவர்க்கும் இறைவா போற்றி
ஆனால் இங்கே மாணிக்கவாசகரோ எந்நாட்டவர்க்கும் இறைவா என்றுக் கூறினாலும், இறைவனை தென்னாடுடையவன் என்று சிறப்பாகக் கூறுகின்றார். அவரின் இந்தக் கூற்று சரியான ஒன்றா?

மாணிக்கவாசகர் தமிழகத்தை சேர்ந்தவர்… அதனால் அவர் ’தென்னாடுடைய சிவனே’ என்று கூறி இருக்கின்றார்… இதுவே ஒரு வடநாட்டினைச் சேர்ந்த ஒருவர் எழுதி இருந்தால் அவர் ‘வடநாட்டினை உடைய சிவனே” என்று தான் கூறி இருப்பார். அப்படி என்றால் இறைவன் வடநாட்டினை மட்டும் சேர்ந்தவர் ஆகி விடுவாரா?… இறைவன் முழு உலகத்திற்கும் உடையவர்” என்றுக் எண்ணுகிறீர்களா

ஒருக் கருத்து உண்மையான கருத்து ஆக வேண்டும் என்றால் அது எல்லா நிலையிலிலும் நிலைத்து நிற்க வேண்டும்.எல்லா நிலைக்கும் பொருந்த வேண்டும். இப்பொழுது ‘தென்னாடுடைய’ என்னும் சொல் ‘தெற்குத் திசையில் உள்ள ஒரு நாட்டினைக்’ குறிப்பதாக இருந்தால் அந்த நாடு இடத்திற்கு இடம் மாறுபடுவதாக அமைந்து விடும்.

சீனத்திற்கு தென்னாடு வடஇந்தியா.

வடஇந்தியாவிற்கு தென்னாடு தமிழகம்.

தமிழகத்திற்கு தென்னாடு ஆப்பிரிக்கா.

இப்படியே அந்தக் கருத்து அர்த்தமில்லாத ஒருக் கருத்து ஆகி விடும். எனவே மாணிக்கவாசகர் அந்த அர்த்தத்தினில் ’தென்னாடுடைய’ என்னும் சொல்லினை பயன் படுத்தவில்லை.

மாணிக்கவாசகர் ’தென்னாடுடைய’ என்னும் சொல்லினை ‘தென்னவனின் நாட்டினைச் சிறப்பாக உடைய’ என்னும் அர்த்தத்தினில் பயன் படுத்தி இருக்கின்றார்.

‘தென்னவனின் நாடா???”

சற்று விளக்கமாகப் பார்ப்போம்.

தென்னவன் என்றச் சொல் பாண்டியனைக் குறிக்கும். பாண்டியன் என்பதின் அர்த்தம் ‘பழைய நாட்டினை ஆண்ட மன்னன்’ என்பதே ஆகும். ‘பாண்டி’ என்றால் ‘பழைய’ என்றும் தமிழில் அர்த்தம் இருக்கின்றது.

எனவே ‘தென்னாடு’ என்றால் ‘பாண்டியனால் ஆளப்பட்ட பழைய நாடே ஆகும்’. சிவன் அந்த நாட்டினில் சிறப்பாக இருக்கின்றார் என்றே மாணிக்கவாசகர் கூறுகின்றார்.

“பழைய நாடா ?” – பாண்டியன் மதுரையை அல்லவா ஆண்டான் என்று கூறுபவர்களுக்கு, இப்பொழுது இருக்கும் மதுரை மூன்றாவது மதுரை. இதற்கு முன்னர் இருந்த இரு மதுரைகள் கடற்கோள்களினால் அழிந்துப் போயின. அது வரலாறு!!! குமரிக்கண்ட வரலாறு!!! மாணிக்கவாசகர் ‘தென்னாடு’ என்றுக் குறிப்பிடுவதும் இந்த குமரிக்கண்டத்தையேதான்.