Elegance, high performance and robustness all in one java bean mapper

Overview

JMapper Framework Join the chat at https://gitter.im/jmapper-framework/jmapper-core Donate

Fast as hand-written code with zero compromise.

Artifact information

Maven Central Javadocs Dependency Status

Status

Codacy Badge Build Status

Write the configuration using what you prefer: Annotation, XML or API.

Most relevant features:

especially its use is intuitive

Configuration

Below it is shown the same configuration in the three types allowed

Annotation
class Destination{                      class Source{
    @JMap
    private String id;                      private String id;
    @JMap("sourceField")                    
    private String destinationField;        private String sourceField;
    private String other;                   private String other;

    // getters and setters...               // getters and setters...
}                                       }
XML
<jmapper>
  <class name="it.jmapper.bean.Destination">
    <attribute name="id">
      <value name="id"/>
    </attribute>
    <attribute name="destinationField">
      <value name="sourceField">
    </attribute>
  </class>
</jmapper>
API
JMapperAPI jmapperAPI = new JMapperAPI()
    .add(mappedClass(Destination.class)
             .add(attribute("id")
                     .value("id"))
             .add(attribute("destinationField")
                     .value("sourceField")));

Creation

JMapper<Destination, Source> mapper;
Annotation
mapper = new JMapper<>(Destination.class, Source.class);
XML
mapper = new JMapper<>(Destination.class, Source.class, xml);
API
mapper = new JMapper<>(Destination.class, Source.class, jmapperAPI);

Usage

Source source = new Source("id", "sourceField", "other");
Destination destination = mapper.getDestination(source);

Result

destination ["id", "sourceField", null]

With JMapper we have all the advantages of dynamic mapping with the performance of static code, with 0 memory consumption.
Required java 5+

Would you like to contribute to the development of JMapper?
contact us ([email protected]) for more information.

Follow us on twitter

Comments
  • wrong classLoader usage

    wrong classLoader usage

    Hello,

    we are using JMapper 1.6.1.CR1 in a Spring Boot Environment. We have a controller with a method like this:

    public List<CampaignGroupDTO> getByClientId(@RequestParam final long clientId, @RequestParam final boolean withCampaigns) {
                    JMapper<CampaignGroupDTO, CampaignGroup> mapper = new JMapper<>(CampaignGroupDTO.class, CampaignGroup.class);
    		List<CampaignGroupDTO> dtos = new ArrayList<>();
    		this.campaignGroupService.findAllWithCampaigns(clientId).forEach(c -> dtos.add(mapper.getDestination(c)));
    		return dtos;
    	}
    

    Calling getByClientId() the first time works fine, and also the mapping does what we expect it should. But calling the method twice raises following exception:

    com.googlecode.jmapper.exceptions.JMapperException: javassist.CannotCompileException: by java.lang.LinkageError: loader (instance of org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedWebappClassLoader): attempted duplicate class definition for name: "demycompanycampaigngroupdtoCampaignGroupDTOdemycompanycampaigngroupentityCampaignGroup" at com.googlecode.jmapper.config.JmapperLog.ERROR(JmapperLog.java:46) at com.googlecode.jmapper.JMapper.(JMapper.java:437) at com.googlecode.jmapper.JMapper.(JMapper.java:373) at com.googlecode.jmapper.JMapper.(JMapper.java:360) at de.mycompany.campaigngroup.controller.CampaignGroupController.getByClientId(CampaignGroupController.java:116) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:208) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: javassist.CannotCompileException: by java.lang.LinkageError: loader (instance of org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedWebappClassLoader): attempted duplicate class definition for name: "demycompanycampaigngroupdtoCampaignGroupDTOdemycompanycampaigngroupentityCampaignGroup" at javassist.ClassPool.toClass(ClassPool.java:1170) at javassist.ClassPool.toClass(ClassPool.java:1113) at javassist.ClassPool.toClass(ClassPool.java:1071) at javassist.CtClass.toClass(CtClass.java:1264) at com.googlecode.jmapper.generation.JavassistGenerator.generate(JavassistGenerator.java:90) at com.googlecode.jmapper.generation.MapperGenerator.generateMapperClass(MapperGenerator.java:74) at com.googlecode.jmapper.generation.MapperBuilder.generate(MapperBuilder.java:88) at com.googlecode.jmapper.JMapper.createMapper(JMapper.java:450) at com.googlecode.jmapper.JMapper.(JMapper.java:432) ... 63 more Caused by: java.lang.LinkageError: loader (instance of org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedWebappClassLoader): attempted duplicate class definition for name: "demycompanycampaigngroupdtoCampaignGroupDTOdemycompanycampaigngroupentityCampaignGroup" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.lang.ClassLoader.defineClass(ClassLoader.java:642) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at javassist.ClassPool.toClass2(ClassPool.java:1183) at javassist.ClassPool.toClass(ClassPool.java:1164)

    Any help would be appreciated :-)

    Jan

    bug 
    opened by CodeNinjai 28
  • convert primitiv to enum class

    convert primitiv to enum class

    ConversionBodyIllegalCodeException: error in static conversion: probably is an incompatibility of signature, the expected input fields do not match with the real ones, checks the configured class.

    I want to convert a primitiv short to an enum object.

    .add(attribute("anEnum") .value("aShort")) .add(conversion("shortToEnum") .from("aShort").to("anEnum") .type(JMapConversion.Type.DYNAMIC) .body("return com.test.v1.Enum.get(${source});")));

    The class has a get() method which returns an Enum.

    public enum Enum {
    
        NUMBER(1);
    
        private final int value;
    
        Enum(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    
        public static Enum get(short s){
            for(Enum e: values()){
                if(e.getValue() == s){
                    return e;
                }
            }
            return null;
        }
    }
    

    maybe a Bug?

    bug 
    opened by lina-salih 15
  • Dollar character in replaceAll transformation

    Dollar character in replaceAll transformation

    In relation to issue #8 , the fix has replaced special characters in the regex part of the replaceAll and not the replacement string (second argument of the replaceAll method).

    This is occurring in line 389 of the GeneralUtility class. Suggest the following fix:

    text = text.replaceAll(Pattern.quote(prefix+var.getKey()), Pattern.quote(var.getValue()));

    Thanks.

    bug reopened 
    opened by spirion 15
  • lambda expression in API conversions

    lambda expression in API conversions

    Hi Alessandro Vurro, I love you framework and how fast it can get , ans would be great if you can add the following ideas

    1 - mix between xml configuration and annotation digging around the code I found that xml configuration takes higher precedence, which is normal ,so what I wish for is the possiblity to mix between the two for a single class for example I have a class called currency that I applied some annotation to it , but I need to make dynamic custom conversion so I needed to do it in xml or api style, but when I do that all the annotation is gone , and I am forced to move all the annotation into the xml , would be great if the two can be applied.

    2- mapping between destination and source list , for example JMapper<Dest, Source> mapper = new JMapper<>(Dest.class, Source.class); mapper.getDestinationList(source); or mapper.getDestination(// list of source and return list of destination); it will be also great if I can control the collection type , or maybe return a configured map of key value.

    3- using functional API and lambda for custom conversion. to see this through I will apply a simple example with the following code.

    public class Currency {
    
        String code;
        String name;
        int value;
    // getters and setters
    }
    
    public class Dest {
    
        @JMap
        String test;
        @JMap("code")
        Currency currency;
    }
    
    public class Source {
    
        @JMap
        String test;
        String code;
    }
    
    
    public class Service {
    
    
        public Currency getCurrency(String code) {
            Currency curr = new Currency();
            curr.setCode(code);
            curr.setName("egypt");
            curr.setValue(123);
    
            return curr;
        }
    
    }
    
    
        public static void main(String[] args) {
    
    
            Source source = new Source();
            source.setCode("EGypt");
            source.setTest("test  here");
            ModelMapper map =  new DefaultModelMapper();
            JMapperAPI api = new JMapperAPI();
            Service service = new Service();
            api.add(JMapperAPI.mappedClass(Dest.class).add(new Attribute("currency").value("code"))
            .add(new Conversion("conversion").from("code").to("currency").body(""
                    + "System.out.println(\"trying dynamic covnersion\");"
                    + "org.test.jmapper2.Service service = new org.test.jmapper2.Service();"
        +"  org.test.jmapper2.Currency cur = service.getCurrency(${source});"
                    + "return cur;"))
            );
            JMapper<Dest, Source> mapper = new JMapper<>(Dest.class, Source.class, api);
            Dest d = mapper.getDestination(source);
    
    
        }
    

    as from the example what I want to do is to custom convert between a String code , into a currency object, if I use api or xml , it will be erro prone plus , javaassist complaint a lot tell I got it right , and what if I want the vice versa of the conversion to convert from a destination to a source, so my idea is maybe if we used functional api to supply the custom conversion code then that would be great for example

    Conversion convert = new Conversion("name")
    convert.from("code").to("currency").body( (source) -> service.getCurrency(source.code));
    
    

    I will also attach a wrapper class I made to solve this kind of problems , would love your feedback. kindly find the google groups link for the files https://groups.google.com/forum/#!topic/jmapper-framework/m8Dx9uMXsxM

    Best regards Farouk Elabady

    opened by faroukelabady 13
  • Feature-request: Allow optional values for nested mapping if nested attribute is null

    Feature-request: Allow optional values for nested mapping if nested attribute is null

    I would like to use a nested mapping as follows:

    <attribute name="something">
      <value name="${some.thing}" />
    </attribute>
    

    This normally works but crashes when the nested attribute "some" is null. I would like to be able to mark this kind of nested mapping optional (maybe giving a default value if the nesting contains a null value).

    Maybe like this

    <attribute name="something">
      <value name="${some.thing}" defaultValue="" />
    </attribute>
    

    A possible (working) workaround is:

    <attribute name="something">
      <value name="${some}" />
    </attribute>
    <conversion name="nullIsEmptySting" to="something">
      return ${source} == null ? "null" : ${source}.getThing(); 
    </conversion>
    

    but that is annoying to write for all optional attributes.

    Edit: Forgot to mention: Thanks for your work! I really enjoy using JMapper in my project!

    opened by acron17 8
  • ConversionBodyIllegalCodeException during usage conversions through JMapperAPI

    ConversionBodyIllegalCodeException during usage conversions through JMapperAPI

    Hi, I'm trying use conversation through JMapperAPI:

    final JMapperAPI api = new JMapperAPI().add(mappedClass(DTO1.class)
                    .add(attribute("fieldX").value("fieldNestedList"))
                    .add(conversion("conversion1")
                            .from("fieldNestedList")
                            .to("fieldX")
                            .body("return ${source}.get(0).getFieldY();")));
    

    but got exception during excecution:

    com.googlecode.jmapper.exceptions.JMapperException: com.googlecode.jmapper.exceptions.ConversionBodyIllegalCodeException: the conversion1 method contains illegal code, check the conversion code belonging to the DTO1 class. Additional information: [source error] syntax error near "UTF-8\"?>
    <jmapper
     "
    
        at com.googlecode.jmapper.config.JmapperLog.ERROR(JmapperLog.java:46)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:445)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:411)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:385)
    

    root cause at : ConversionHandler.java#L164

    beacuse xml.getXmlPath() in this case is full xml (not path to configuration)

    Thanks

    opened by aitov 8
  • XML configuration for extended classes

    XML configuration for extended classes

    I'm trying to map between two classes, however the desired destination class need to extend another class. Is this possible?

    I've asked this question in more detail, here:

    Thanks, Casper

    opened by CasperDB 8
  • MappingType lost in recursive mapping

    MappingType lost in recursive mapping

    I have the following case:

    public class Source {
        private String sourceText;
        private NestedSource nestedSource;
    
        // Getters, Setters and toString()
    }
    
    public class NestedSource {
        private String nestedSourceText;
    
        // Getters, Setters and toString()
    }
    public class Destination {
        @JMap(value = "sourceText", classes = Source.class)
        private String destinationText;
        @JMap(value = "nestedSource", classes = Source.class)
        private NestedDestination nestedDestination;
    
        // Getters, Setters and toString()
    }
    
    public class NestedDestination {
        @JMap(value = "nestedSourceText", classes = NestedSource.class)
        private String nestedDestinationText = "Default Destination Text";
    
        // Getters, Setters and toString()
    }
    
    final Source source = new Source();
    source.setSourceText("Source text");
    source.setNestedSource(new NestedSource());
    System.out.println(source);
    final JMapper<Destination, Source> mapper = new JMapper<Destination, Source>(Destination.class, Source.class);
    final Destination destination = mapper.getDestination(source, NullPointerControl.ALL, MappingType.ONLY_VALUED_FIELDS);
    System.out.println(destination);
    

    And the output is the following:

    Source{sourceText='Source text', nestedSource=NestedSource{nestedSourceText='null'}}
    Destination{destinationText='Source text', nestedDestination=NestedDestination{nestedDestinationText='null'}}
    

    As you can see nestedDestinationText's value has been deleted even if MappingType.ONLY_VALUED_FIELDS is selected. Not that this happens only in nested objects, so if you leave sourceText as nulland populate destinationText with some value, then the value will be presented, e.g.

    Source{sourceText='null', nestedSource=NestedSource{nestedSourceText='null'}}
    Destination{destinationText='Default Destination Text', nestedDestination=NestedDestination{nestedDestinationText='null'}}
    
    bug 
    opened by petromir 7
  • [Question] Map nested objects with single mapper

    [Question] Map nested objects with single mapper

    I have the following case:

    public class Destination {
       private String destinationText;
       private NestedDestination nestedDestination;
    }
    
    public class NestedDestination {
       private String nestedDestinationData;
    }
    
    public class Source {
       @JMap(value = "destinationText", classes = Destination.class))
       private String sourceText;
       @JMap(value = "nestedDestination", classes = Destination.class))
       private NestedSource nestedSource;
    }
    
    public class NestedSource {
       @JMap(value = "nestedDestinationData", classes = NestedDestination.class))
       private String nestedSourceData;
    }
    

    The example above doesn't work due to:

    com.googlecode.jmapper.exceptions.JMapperException:
    com.googlecode.jmapper.exceptions.ConversionBodyIllegalCodeException: error in static
       conversion: probably is an incompatibility of signature, the expected input fields do not match
       with the real ones, checks the configured class.
    

    I would like to map the nested object automatically using single mapper like:

    JMapper<Destination, Source> mapper = new JMapper<>(Destination.class, Source.class);
    

    without the need to create one for each nested object like:

    JMapper<NestedDestination, NestedSource> mapper = new JMapper<>(NestedDestination.class, NestedSource.class);
    
    opened by petromir 7
  • [Question] xml mapping

    [Question] xml mapping

    Name:

    private String first;
    private String last;
    //getter/setter
    

    Person:

    private Name name;
    //getter/setter
    

    PersonDto:

    private String firstName;
    private String lastName;
    //getter/setter
    

    How to map Person to PersonDto with XML ?

    name.first -> firstName name.last -> lastName

    This doesn't work:

    <conversion name="firstname" to="firstName" type="DYNAMIC">
        return ${source}.getName().getFirst();
    </conversion>
    
    opened by tokazio 6
  • Upload snapshots to public repo.

    Upload snapshots to public repo.

    I would like to use the latest shapshots of JMapper in our projects, so I don't have to wait for full completion of some milestone (1.6.1.CR2) in order to use alredy fixed issues like https://github.com/jmapper-framework/jmapper-core/issues/56. I'm aware that snapshot is not a stable version, but at least I will have an option to use what has been done so far immediately. You can take Spring approach as an example.

    opened by petromir 6
  • Function to compare

    Function to compare

    Hi,

    I've got a use case where I should know if two objects from different classes should be updated before doing the mapping. I think a mapper framework should provide this functionality : compare two mapped classes even with a old/new values for each object in a meta object resulting from the compare method.

    What do you think ?

    opened by rguillome 0
  • Bump xstream from 1.4.9 to 1.4.19 in /JMapper Framework

    Bump xstream from 1.4.9 to 1.4.19 in /JMapper Framework

    Bumps xstream from 1.4.9 to 1.4.19.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Quarkus JMapper error in mapper constructor

    Quarkus JMapper error in mapper constructor

    Describe the bug

    We are creating new Rest Api using Quarkus, postgresql, JMapper and lombok. Jmapper throwing below error while calling api not sure why. Added lombok, jmapper-core details of the pom.xml and added detail error message. please let me know if any more details is required. I am new too JAVA and quarkus. thanks in advance.

    my POC Project. https://github.com/FishTechnology/cana-api.git

    <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.22</version>
          <scope>provided</scope>
     </dependency>
     <dependency>
          <groupId>com.googlecode.jmapper-framework</groupId>
          <artifactId>jmapper-core</artifactId>
          <version>1.6.1.CR2</version>
     </dependency>
    
    

    Expected behavior

    public GlobalVariableResourceMapperImpl() { mapperGlobalVariableModel = new JMapper<>(GlobalVariableModel.class, GlobalVariableDao.class); }

    mapperGlobalVariableModel having JMapper instance

    Actual behavior

    throwing error.

    2021-10-10 17:45:24,349 INFO  [io.quarkus] (Quarkus Main Thread) cana-codelessautomation-api 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.3.0.Final) started in 2.677s. Listening on: http://localhost:8080
    2021-10-10 17:45:24,351 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
    2021-10-10 17:45:24,351 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-orm-panache, hibernate-validator, jdbc-postgresql, narayana-jta, rest-client, resteasy, resteasy-jackson, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]
    2021-10-10 17:46:01,884 WARN  [org.ref.Reflections] (executor-thread-0) given scan urls are empty. set urls in the configuration
    2021-10-10 17:46:01,928 ERROR [com.goo.jma.JMapper] (executor-thread-0) ConversionBodyIllegalCodeException: There is an error in the generated method. Additional information: [source error] no such class: cana.codelessautomation.api.resources.environment.models.CreateEnvironmentModel
    2021-10-10 17:46:01,932 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /api/environments?userId=2680912425326220290 failed, error id: 892c8f38-3a3e-49cd-a44e-6fe439307cf3-1: org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: Error injecting cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapper cana.codelessautomation.api.resources.environment.EnvironmentResource.environmentResourceMapper
        at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:381)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:218)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:519)
        at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
        at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
        at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
        at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
        at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
        at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:135)
        at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:90)
        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:832)
    Caused by: java.lang.RuntimeException: Error injecting cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapper cana.codelessautomation.api.resources.environment.EnvironmentResource.environmentResourceMapper
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.create(EnvironmentResource_Bean.zig:197)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.create(EnvironmentResource_Bean.zig:263)
        at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:96)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:29)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:26)
        at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
        at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
        at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:26)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.get(EnvironmentResource_Bean.zig:295)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.get(EnvironmentResource_Bean.zig:311)
        at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:440)
        at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:453)
        at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:276)
        at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:273)
        at io.quarkus.resteasy.common.runtime.QuarkusConstructorInjector.construct(QuarkusConstructorInjector.java:52)
        at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:71)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:401)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
        ... 15 more
    Caused by: com.googlecode.jmapper.exceptions.JMapperException: com.googlecode.jmapper.exceptions.ConversionBodyIllegalCodeException: There is an error in the generated method. Additional information: [source error] no such class: cana.codelessautomation.api.resources.environment.models.CreateEnvironmentModel
        at com.googlecode.jmapper.config.JmapperLog.error(JmapperLog.java:46)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:437)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:373)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:360)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl.<init>(EnvironmentResourceMapperImpl.java:23)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_ClientProxy.<init>(EnvironmentResourceMapperImpl_ClientProxy.zig:24)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_Bean.proxy(EnvironmentResourceMapperImpl_Bean.zig:40)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_Bean.get(EnvironmentResourceMapperImpl_Bean.zig:198)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_Bean.get(EnvironmentResourceMapperImpl_Bean.zig:214)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.create(EnvironmentResource_Bean.zig:180)
        ... 33 more
    Caused by: com.googlecode.jmapper.exceptions.ConversionBodyIllegalCodeException: There is an error in the generated method. Additional information: [source error] no such class: cana.codelessautomation.api.resources.environment.models.CreateEnvironmentModel
        at com.googlecode.jmapper.config.Error.bodyContainsIllegalCode(Error.java:186)
        at com.googlecode.jmapper.generation.JavassistGenerator.generate(JavassistGenerator.java:85)
        at com.googlecode.jmapper.generation.MapperGenerator.generateMapperClass(MapperGenerator.java:75)
        at com.googlecode.jmapper.generation.MapperBuilder.generate(MapperBuilder.java:90)
        at com.googlecode.jmapper.JMapper.createMapper(JMapper.java:450)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:432)
        ... 41 more
    
    2021-10-10 17:45:24,349 INFO  [io.quarkus] (Quarkus Main Thread) cana-codelessautomation-api 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.3.0.Final) started in 2.677s. Listening on: http://localhost:8080
    2021-10-10 17:45:24,351 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
    2021-10-10 17:45:24,351 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-orm-panache, hibernate-validator, jdbc-postgresql, narayana-jta, rest-client, resteasy, resteasy-jackson, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]
    2021-10-10 17:46:01,884 WARN  [org.ref.Reflections] (executor-thread-0) given scan urls are empty. set urls in the configuration
    2021-10-10 17:46:01,928 ERROR [com.goo.jma.JMapper] (executor-thread-0) ConversionBodyIllegalCodeException: There is an error in the generated method. Additional information: [source error] no such class: cana.codelessautomation.api.resources.environment.models.CreateEnvironmentModel
    2021-10-10 17:46:01,932 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /api/environments?userId=2680912425326220290 failed, error id: 892c8f38-3a3e-49cd-a44e-6fe439307cf3-1: org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: Error injecting cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapper cana.codelessautomation.api.resources.environment.EnvironmentResource.environmentResourceMapper
        at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:381)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:218)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:519)
        at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
        at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
        at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
        at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
        at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
        at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:135)
        at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:90)
        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:832)
    Caused by: java.lang.RuntimeException: Error injecting cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapper cana.codelessautomation.api.resources.environment.EnvironmentResource.environmentResourceMapper
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.create(EnvironmentResource_Bean.zig:197)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.create(EnvironmentResource_Bean.zig:263)
        at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:96)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:29)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:26)
        at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
        at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
        at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:26)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.get(EnvironmentResource_Bean.zig:295)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.get(EnvironmentResource_Bean.zig:311)
        at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:440)
        at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:453)
        at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:276)
        at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:273)
        at io.quarkus.resteasy.common.runtime.QuarkusConstructorInjector.construct(QuarkusConstructorInjector.java:52)
        at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:71)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:401)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
        ... 15 more
    Caused by: com.googlecode.jmapper.exceptions.JMapperException: com.googlecode.jmapper.exceptions.ConversionBodyIllegalCodeException: There is an error in the generated method. Additional information: [source error] no such class: cana.codelessautomation.api.resources.environment.models.CreateEnvironmentModel
        at com.googlecode.jmapper.config.JmapperLog.error(JmapperLog.java:46)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:437)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:373)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:360)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl.<init>(EnvironmentResourceMapperImpl.java:23)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_ClientProxy.<init>(EnvironmentResourceMapperImpl_ClientProxy.zig:24)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_Bean.proxy(EnvironmentResourceMapperImpl_Bean.zig:40)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_Bean.get(EnvironmentResourceMapperImpl_Bean.zig:198)
        at cana.codelessautomation.api.resources.environment.mappers.EnvironmentResourceMapperImpl_Bean.get(EnvironmentResourceMapperImpl_Bean.zig:214)
        at cana.codelessautomation.api.resources.environment.EnvironmentResource_Bean.create(EnvironmentResource_Bean.zig:180)
        ... 33 more
    Caused by: com.googlecode.jmapper.exceptions.ConversionBodyIllegalCodeException: There is an error in the generated method. Additional information: [source error] no such class: cana.codelessautomation.api.resources.environment.models.CreateEnvironmentModel
        at com.googlecode.jmapper.config.Error.bodyContainsIllegalCode(Error.java:186)
        at com.googlecode.jmapper.generation.JavassistGenerator.generate(JavassistGenerator.java:85)
        at com.googlecode.jmapper.generation.MapperGenerator.generateMapperClass(MapperGenerator.java:75)
        at com.googlecode.jmapper.generation.MapperBuilder.generate(MapperBuilder.java:90)
        at com.googlecode.jmapper.JMapper.createMapper(JMapper.java:450)
        at com.googlecode.jmapper.JMapper.<init>(JMapper.java:432)
        ... 41 more
    

    How to Reproduce?

    No response

    Output of uname -a or ver

    Darwin Sajans-MBP.lan 20.6.0 Darwin Kernel Version 20.6.0: Mon Aug 30 06:12:21 PDT 2021; root:xnu-7195.141.6~3/RELEASE_X86_64 x86_64

    Output of java -version

    java version "15" 2020-09-15 Java(TM) SE Runtime Environment (build 15+36-1562) Java HotSpot(TM) 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)

    GraalVM version (if different from Java)

    No response

    Quarkus version or git rev

    No response

    Build tool (ie. output of mvnw --version or gradlew --version)

    <quarkus.platform.version>2.3.0.Final</quarkus.platform.version>
    

    Additional information

    No response

    opened by sajanmje27 0
  • Breaks with XStream 1.4.18

    Breaks with XStream 1.4.18

    XStream's latest release 1.4.18 introduced breaking changes as

    when unmarshalling with an XStream instance using the default blacklist of an uninitialized security framework. XStream is therefore now using a whitelist by default.

    With this, we need to explicitly whitelist model classes which we can use with XStream.

    Currently, it is breaking with

    com.googlecode.jmapper.exceptions.JMapperException: com.thoughtworks.xstream.security.ForbiddenClassException: 
    com.googlecode.jmapper.xml.beans.XmlJmapper
    at com.googlecode.jmapper.config.JmapperLog.error(JmapperLog.java:46)
    at com.googlecode.jmapper.JMapper.<init>(JMapper.java:437)
    at com.googlecode.jmapper.JMapper.<init>(JMapper.java:412)
    Caused by: com.thoughtworks.xstream.security.ForbiddenClassException: com.googlecode.jmapper.xml.beans.XmlJmapper
    at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26)
    at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
    at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
    at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133)
    at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376)
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1270)
    at com.googlecode.jmapper.util.FilesManager.toXmlJmapper(FilesManager.java:1048)
    at com.googlecode.jmapper.util.FilesManager.readAtRuntime(FilesManager.java:1035)
    at com.googlecode.jmapper.xml.XML.<init>(XML.java:66)
    at com.googlecode.jmapper.xml.XmlBuilder.atRuntime(XmlBuilder.java:44)
    at com.googlecode.jmapper.generation.MapperBuilder.generate(MapperBuilder.java:86)
    at com.googlecode.jmapper.JMapper.createMapper(JMapper.java:450)
    at com.googlecode.jmapper.JMapper.<init>(JMapper.java:432)
    
    opened by injulkarnilesh 0
  • JMapper with Lambok

    JMapper with Lambok

    I am using JMapper with some POJO classes which has setter getter methods and it's working fine, when I removed all setters and getters and used Lombok for the same, I am getting MalformedBean exception saying get....() not found ...will JMapper supports working with Lombok?

    @Data(from lombok) // generates getters and setters public class Document {

    protected FIToFIPaymentStatusReportV06 fiToFIPmtStsRpt;
    

    }

    for this ?

    opened by sudeerjoshi 1
Releases(1.6.1.CR1)
Simpler, better and faster Java bean mapping framework

Orika ! NEW We are pleased to announce the release of Orika 1.5.4 ! This version is available on Maven central repository What? Orika is a Java Bean m

null 1.2k Jan 6, 2023
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022
Selma Java bean mapping that compiles

Selma Java bean mapping at compile time ! What is Selma ? S3lm4 say Selma, stands for Stupid Simple Statically Linked Mapper. In fact it is on one sid

Publicis Sapient Engineering 210 Nov 2, 2022
An annotation processor for generating type-safe bean mappers

MapStruct - Java bean mappings, the easy way! What is MapStruct? Requirements Using MapStruct Maven Gradle Documentation and getting help Building fro

null 5.8k Dec 31, 2022
Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another.

Dozer Active Contributors We are always looking for more help. The below is the current active list: Core @garethahealy @orange-buffalo ?? Protobuf @j

null 2k Jan 5, 2023
Library for converting from one Java class to a dissimilar Java class with similar names based on the Bean convention

Beanmapper Beanmapper is a Java library for mapping dissimilar Java classes with similar names. The use cases for Beanmapper are the following: mappin

null 26 Nov 15, 2022
Fast and Easy mapping from database and csv to POJO. A java micro ORM, lightweight alternative to iBatis and Hibernate. Fast Csv Parser and Csv Mapper

Simple Flat Mapper Release Notes Getting Started Docs Building it The build is using Maven. git clone https://github.com/arnaudroger/SimpleFlatMapper.

Arnaud Roger 418 Dec 17, 2022
Time-Based One-Time Password (RFC 6238) and HMAC-Based One-Time Password (RFC 4226) reference implementations and more.

Crypto Time-Based One-Time Password (RFC 6238) and HMAC-Based One-Time Password (RFC 4226) reference implementations and more. Getting Started TOTP ge

Oliver Yasuna 1 May 12, 2022
MyBatis SQL mapper framework for Java

MyBatis SQL Mapper Framework for Java The MyBatis SQL mapper framework makes it easier to use a relational database with object-oriented applications.

MyBatis 18k Jan 2, 2023
A high available,high performance distributed messaging system.

#新闻 MetaQ 1.4.6.2发布。更新日志 MetaQ 1.4.6.1发布。更新日志 MetaQ 1.4.5.1发布。更新日志 MetaQ 1.4.5发布。更新日志 Meta-ruby 0.1 released: a ruby client for metaq. SOURCE #介绍 Meta

dennis zhuang 1.3k Dec 12, 2022
The Mixin re-mapper for Lunar Client.

LunarRemapper The Mixin re-mapper for Lunar Client. I have little time to work on this project, if you know what you're doing and have familiarized yo

null 45 Nov 28, 2022
Messenger(Chat app) is a real time one to one chat application with Push Notifications made using Firebase...

Messenger If you want a APK then create an issue, i'll send the link.. ChatApp is a real time one to one chat application with Push Notifications made

Tales 14 Apr 30, 2022
APIKit:Discovery, Scan and Audit APIs Toolkit All In One.

APIKit:Discovery, Scan and Audit APIs Toolkit All In One.

APISecurity Community 976 Jan 9, 2023
The all-in-one cosmetics solution created by HibiscusMC Staff, for HibiscusMC.

HMCCosmetics Table of Contents Description Installation Download Description HMCCosmetics is a free, open source cosmetics plugin which allows you to

HibiscusMC 44 Dec 12, 2022
One-Stop Destination for codes of all Data Structures & Algorithms

CodingSimplified_GK This repository is aimed at creating a One stop Destination of codes of all Data structures and Algorithms along with basic explai

Geetika Kaushik 21 Sep 26, 2022
An All-In-One Macro for Hypixel Skyblock. Includes numerous features for Quality of Life that do NOT abide by the Hypixel Rules.

AIOMacro An All-In-One Macro for Hypixel Skyblock. Includes numerous features for Quality of Life that do NOT abide by the Hypixel Rules. Installation

Jackson 18 Dec 19, 2022
Simpler, better and faster Java bean mapping framework

Orika ! NEW We are pleased to announce the release of Orika 1.5.4 ! This version is available on Maven central repository What? Orika is a Java Bean m

null 1.2k Jan 6, 2023
This repo contains all the materials for placement as well as Practical lab codes for all subjects and notes. For students graduating in 2023

UEMK_PLACEMENT_2023 This repo contains all the materials for placement as well as Practical lab codes for all subjects and notes. For students graduat

Shambashib Majumdar 8 Mar 5, 2022
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022