EClass userClass = EcoreFactory.eINSTANCE.createEClass();
userClass.setName("User");
EAttribute nameAttr = EcoreFactory.eINSTANCE.createEAttribute();
nameAttr.setName("name");
nameAttr.setEType(EcorePackage.eINSTANCE.getEString());
userClass.getEStructuralFeatures().add(nameAttr);
EPackage userPackage = EcoreFactory.eINSTANCE.createEPackage();
userPackage.setName("com.example.user");
userPackage.getEClassifiers().add(userClass);
String genModelPath = "path/to/genmodel";
GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
genModel.initialize(Collections.singleton(userPackage));
ResourceSet resourceSet = new ResourceSetImpl();
Resource genModelResource = resourceSet.getResource(URI.createURI(genModelPath), true);
genModelResource.getContents().add(genModel);
GenPackage genPackage = (GenPackage) genModel.getGenPackages().get(0);
GenClass userGenClass = (GenClass) genPackage.getGenClassifiers().get(0);
GenModelGenerator generator = new GenModelGenerator();
generator.setInput(genModel);
generator.generate();
User user = UserFactory.eINSTANCE.createUser();
user.setName("John");
String serializedUser = EcoreUtil.toXML(user);
User deserializedUser = (User) EcoreUtil.loadXML(serializedUser);