Package org.springframework.roo.classpath.details

Source Code of org.springframework.roo.classpath.details.DefaultPhysicalTypeMetadata

package org.springframework.roo.classpath.details;

import org.apache.commons.lang3.Validate;
import org.springframework.roo.classpath.PhysicalTypeIdentifier;
import org.springframework.roo.classpath.PhysicalTypeMetadata;
import org.springframework.roo.classpath.itd.ItdMetadataProvider;
import org.springframework.roo.metadata.AbstractMetadataItem;
import org.springframework.roo.model.JavaType;

/**
* The default {@link PhysicalTypeMetadata} implementation.
*/
public class DefaultPhysicalTypeMetadata extends AbstractMetadataItem implements
        PhysicalTypeMetadata {

    private final ClassOrInterfaceTypeDetails cid;
    private final String physicalLocationCanonicalPath;

    /**
     * Constructor
     *
     * @param metadataIdentificationString the ID to assign this
     *            {@link org.springframework.roo.metadata.MetadataItem} (must
     *            satisfy {@link PhysicalTypeIdentifier#isValid(String)})
     * @param physicalLocationCanonicalPath the canonical path of the file
     *            containing this Java type (required)
     * @param cid the details of this type (required)
     */
    public DefaultPhysicalTypeMetadata(
            final String metadataIdentificationString,
            final String physicalLocationCanonicalPath,
            final ClassOrInterfaceTypeDetails cid) {
        super(metadataIdentificationString);
        Validate.isTrue(
                PhysicalTypeIdentifier.isValid(metadataIdentificationString),
                "Metadata id '%s' is not a valid physical type identifier",
                metadataIdentificationString);
        Validate.notBlank(physicalLocationCanonicalPath,
                "Physical location canonical path required");
        Validate.notNull(cid, "Class or interface type details required");
        this.cid = cid;
        this.physicalLocationCanonicalPath = physicalLocationCanonicalPath;
    }

    public String getItdCanoncialPath(final ItdMetadataProvider metadataProvider) {
        // Delegate to the correctly spelled method
        return getItdCanonicalPath(metadataProvider);
    }

    public String getItdCanonicalPath(final ItdMetadataProvider metadataProvider) {
        Validate.notNull(metadataProvider, "Metadata provider required");
        final int dropFrom = physicalLocationCanonicalPath.lastIndexOf(".java");
        Validate.isTrue(dropFrom > -1, "Unexpected governor filename format '"
                + physicalLocationCanonicalPath + "'");
        return physicalLocationCanonicalPath.substring(0, dropFrom) + "_Roo_"
                + metadataProvider.getItdUniquenessFilenameSuffix() + ".aj";
    }

    public JavaType getItdJavaType(final ItdMetadataProvider metadataProvider) {
        Validate.notNull(metadataProvider, "Metadata provider required");
        return new JavaType(PhysicalTypeIdentifier.getJavaType(getId())
                .getFullyQualifiedTypeName()
                + "_Roo_"
                + metadataProvider.getItdUniquenessFilenameSuffix());
    }

    public ClassOrInterfaceTypeDetails getMemberHoldingTypeDetails() {
        return cid;
    }

    public String getPhysicalLocationCanonicalPath() {
        return physicalLocationCanonicalPath;
    }

    public JavaType getType() {
        return cid.getName();
    }

    @Override
    public String toString() {
        // Used for example by the "metadata for id" command
        return getClass().getSimpleName() + " for " + cid.getName();
    }
}
TOP

Related Classes of org.springframework.roo.classpath.details.DefaultPhysicalTypeMetadata

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.