// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/LepResourceDescriptor.java
// public interface LepResourceDescriptor {
// 
//     /**
//      * Composite class constant.
//      */
//     Class<CompositeLepResourceDescriptor> COMPOSITE_CLASS = CompositeLepResourceDescriptor.class;
// 
//     LepResourceType getType();
// 
//     LepResourceType getSubType();
// 
//     LepResourceKey getKey();
// 
//     Instant getCreationTime();
// 
//     Instant getModificationTime();
// 
//     Version getVersion();
// 
//     default boolean isComposite() {
//         return COMPOSITE_CLASS.isInstance(this);
//     }
// 
//     /**
//      * Check is composite implementation and if so cast or throw exception otherwise.
//      *
//      * @return composite class representation of resource descriptor
//      */
//     default CompositeLepResourceDescriptor asComposite() {
//         if (isComposite()) {
//             return COMPOSITE_CLASS.cast(this);
//         } else {
//             throw new IllegalStateException("Can't cast not composite: "
//                                                 + this.getClass().getSimpleName()
//                                                 + " object to composite: "
//                                                 + COMPOSITE_CLASS.getSimpleName());
//         }
//     }
// 
// }
// 
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/LepResourceKey.java
// public interface LepResourceKey {
// 
//     String getId();
// 
//     Version getVersion();
// 
// }
// 
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/LepResourceType.java
// public interface LepResourceType {
// 
//     String getName();
// 
// }
// 
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/Version.java
// public interface Version {
// 
//     /**
//      * Gets version identificator, for example:
//      * <br>
//      * 'b324', '1-alpha', '1.2.3', '1.0-RELEASE', '2.2-RC1', '2.2.3-M1', '12032017112331', etc.
//      *
//      * @return version id
//      */
//     String getId();
// 
// }


import com.icthh.xm.lep.api.LepResourceDescriptor;
import com.icthh.xm.lep.api.LepResourceKey;
import com.icthh.xm.lep.api.LepResourceType;
import com.icthh.xm.lep.api.Version;
import java.time.Instant;
import java.util.Objects;
package com.icthh.xm.lep.api.commons;



/**
 * The {@link DefaultLepResourceDescriptor} class.
 */
public class DefaultLepResourceDescriptor implements LepResourceDescriptor {

    private LepResourceType type;
    private LepResourceType subType;
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/LepResourceDescriptor.java
// public interface LepResourceDescriptor {
// 
//     /**
//      * Composite class constant.
//      */
//     Class<CompositeLepResourceDescriptor> COMPOSITE_CLASS = CompositeLepResourceDescriptor.class;
// 
//     LepResourceType getType();
// 
//     LepResourceType getSubType();
// 
//     LepResourceKey getKey();
// 
//     Instant getCreationTime();
// 
//     Instant getModificationTime();
// 
//     Version getVersion();
// 
//     default boolean isComposite() {
//         return COMPOSITE_CLASS.isInstance(this);
//     }
// 
//     /**
//      * Check is composite implementation and if so cast or throw exception otherwise.
//      *
//      * @return composite class representation of resource descriptor
//      */
//     default CompositeLepResourceDescriptor asComposite() {
//         if (isComposite()) {
//             return COMPOSITE_CLASS.cast(this);
//         } else {
//             throw new IllegalStateException("Can't cast not composite: "
//                                                 + this.getClass().getSimpleName()
//                                                 + " object to composite: "
//                                                 + COMPOSITE_CLASS.getSimpleName());
//         }
//     }
// 
// }
// 
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/LepResourceKey.java
// public interface LepResourceKey {
// 
//     String getId();
// 
//     Version getVersion();
// 
// }
// 
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/LepResourceType.java
// public interface LepResourceType {
// 
//     String getName();
// 
// }
// 
// Path: xm-lep-api/src/main/java/com/icthh/xm/lep/api/Version.java
// public interface Version {
// 
//     /**
//      * Gets version identificator, for example:
//      * <br>
//      * 'b324', '1-alpha', '1.2.3', '1.0-RELEASE', '2.2-RC1', '2.2.3-M1', '12032017112331', etc.
//      *
//      * @return version id
//      */
//     String getId();
// 
// }


// Path: xm-lep-api-commons/src/main/java/com/icthh/xm/lep/api/commons/DefaultLepResourceDescriptor.java
import com.icthh.xm.lep.api.LepResourceDescriptor;
import com.icthh.xm.lep.api.LepResourceKey;
import com.icthh.xm.lep.api.LepResourceType;
import com.icthh.xm.lep.api.Version;
import java.time.Instant;
import java.util.Objects;

package com.icthh.xm.lep.api.commons;



/**
 * The {@link DefaultLepResourceDescriptor} class.
 */
public class DefaultLepResourceDescriptor implements LepResourceDescriptor {

    private LepResourceType type;
    private LepResourceType subType;
    private LepResourceKey key;