Examples of IValueProvider


Examples of com.codestreet.selector.parser.IValueProvider

       *
       */
        private static final long serialVersionUID = 7094288732603611045L;

        public boolean isValueFiltered(Object arg0) {
          final IValueProvider values = rowValueProvider.getValueProviderForRow(getRowIndex());

          return !(selector.eval(values, null) == Result.RESULT_TRUE);
        }
      };

View Full Code Here

Examples of org.apache.ivyde.common.model.IValueProvider

        ivyTag.addAttribute(new IvyTagAttribute("version",
                "The version of the ivy file specification \n"
                        + "should be '2.0' with current version of ivy", true));
        addTag(ivyTag);

        IValueProvider defaultOrganizationProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {getSettings().getDefaultOrganization()};
            }
        };
        IValueProvider defaultOrganizationURLProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {getSettings().getDefaultOrganizationURL()};
            }
        };

        // info
        IvyTagAttribute orgTagAttribute = new IvyTagAttribute("organisation",
                "the name of the organisation that is the owner of this module.", true);
        orgTagAttribute.setValueProvider(defaultOrganizationProvider);
        IvyTagAttribute statusTagAttribute = new IvyTagAttribute("status",
                "the status of this module.");
        statusTagAttribute.setValueProvider(new ListValueProvider(getDefault("status")));
        IvyTagAttribute pubTagAttribute = new IvyTagAttribute("publication",
                "the date of publication of this module. \n"
                        + "It should be given in this format: yyyyMMddHHmmss");
        pubTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {Ivy.DATE_FORMAT.format(new Date())};
            }
        });
        IvyTagAttribute moduleTagAttribute = new IvyTagAttribute("module",
                "the name of the module described by this ivy file.", true);
        IValueProvider projectNameValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {ivyFile.getProjectName()};
            }
        };
        moduleTagAttribute.setValueProvider(projectNameValueProvider);
        IvyTag info = new IvyTag("info", "gives general information about the described module",
                new IvyTagAttribute[] {orgTagAttribute, moduleTagAttribute,
                        new IvyTagAttribute("branch", "the branch of this module."),
                        new IvyTagAttribute("revision", "the revision of this module."),
                        statusTagAttribute, pubTagAttribute});
        addTag(info);

        // extends
        IvyTag extend = new IvyTag("extends", "gives information about the parent module");
        IvyTagAttribute parentOrgAtt = new IvyTagAttribute("organisation",
                "the name of the organisation of the parent module.", false);
        parentOrgAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add(getSettings().getDefaultOrganization());
                String org = ((IvyModuleDescriptorFile) ivyFile).getOrganisation();
                if (org != null) {
                    ret.add(org);
                }
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        extend.addAttribute(parentOrgAtt);
        IvyTagAttribute parentModuleAtt = new IvyTagAttribute("module",
                "the module name of the parent module", true);
        parentModuleAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        extend.addAttribute(parentModuleAtt);
        IvyTagAttribute parentRevAtt = new IvyTagAttribute("revision",
                "the revision of the parent module");
        extend.addAttribute(parentRevAtt);
        addTag(extend);
        info.addChildIvyTag(extend);

        // license
        IvyTag child = new IvyTag("license",
                "gives information about the licenses of the described module");
        child.addAttribute(new IvyTagAttribute("name", "the name of the license. \n"
                + "Try to respect spelling when using a classical license.", true,
                new ListValueProvider(getDefault("license"))));
        child
                .addAttribute(new IvyTagAttribute("url", "an url pointing to the license text.",
                        false));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("ivyauthor", "describes who has contributed to write the ivy file");
        child.addAttribute(new IvyTagAttribute("name",
                "the name of the author, as a person or a company.", true,
                defaultOrganizationProvider));
        child.addAttribute(new IvyTagAttribute("url",
                "an url pointing to where the author can be reached.", false,
                defaultOrganizationURLProvider));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("repository",
                "describes on which public repositories this module can be found");
        child.addAttribute(new IvyTagAttribute("name", "the name of the repository. \n"
                + "Try to respect spelling for common repositories (ibiblio, ivyrep, ...)", true,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        return new String[] {"ibiblio", "ivyrep"};
                    }
                }));
        child.addAttribute(new IvyTagAttribute("url", "an url pointing to the repository.", true,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        Map allAttsValues = ivyFile.getAllAttsValues();
                        if (allAttsValues != null) {
                            String name = (String) allAttsValues.get("name");
                            if ("ibiblio".equals(name)) {
                                return new String[] {"http://www.ibiblio.org/maven/"};
                            } else if ("ivyrep".equals(name)) {
                                return new String[] {"http://www.jayasoft.fr/org/ivyrep/"};
                            }
                        }
                        return null;
                    }

                }));
        IvyTagAttribute reppatternTagAttribute = new IvyTagAttribute("pattern",
                "an ivy pattern to find modules on this repository", false);
        reppatternTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                Map allAttsValues = ivyFile.getAllAttsValues();
                if (allAttsValues != null) {
                    String name = (String) allAttsValues.get("name");
                    if ("ibiblio".equals(name)) {
                        return new String[] {"[module]/[type]s/[artifact]-[revision].[ext]"};
                    } else if ("ivyrep".equals(name)) {
                        return new String[] {"[organisation]/[module]/[artifact]-[revision].[ext]"};
                    }
                }
                return null;
            }
        });
        child.addAttribute(reppatternTagAttribute);
        child.addAttribute(new IvyBooleanTagAttribute("ivys",
                "true if ivy file can be found on this repository", false));
        child.addAttribute(new IvyBooleanTagAttribute("artifacts",
                "true if module artifacts can be found on this repository", false));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("description", "gives general description about the module");
        child.addAttribute(new IvyTagAttribute("homepage", "the url of the homepage of the module",
                false, defaultOrganizationURLProvider));
        addTag(child);
        info.addChildIvyTag(child);
        ivyTag.addChildIvyTag(info);

        // configurations
        IvyTag configurations = new IvyTag("configurations",
            "container for configuration elements");
        IvyTag conf = new IvyTag("conf", "declares a configuration of this module");
        conf.addAttribute(new IvyTagAttribute("name", "the name of the declared configuration",
                true));
        conf.addAttribute(new IvyTagAttribute("description",
                "a short description for the declared configuration", false));
        IvyTagAttribute visibilityTagAttribute = new IvyTagAttribute("visibility",
                "the visibility of the declared configuration.\n"
                        + "'public' means that this configuration can be used by other modules, \n"
                        + "while 'private' means that this configuration is used only in the\n"
                        + "module itself, and is not exposed to other modules", false);
        visibilityTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {"public", "private"};
            }
        });
        conf.addAttribute(visibilityTagAttribute);
        IvyTagAttribute confExtTagAttribute = new IvyTagAttribute("extends",
                "a comma separated list of configurations of this module \n"
                        + "that the current configuration extends", false);
        IValueProvider masterConfsValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                StringBuffer base = new StringBuffer();
                String qualifier = ivyFile.getAttributeValueQualifier();
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                String[] confs = ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
                for (int i = 0; i < confs.length; i++) {
                    confs[i] = base + confs[i];
                }
                return confs;
            }
        };
        IValueProvider masterConfValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
            }
        };
        confExtTagAttribute.setValueProvider(masterConfsValueProvider);
        conf.addAttribute(confExtTagAttribute);
        IvyTagAttribute deprecatedTagAttribute = new IvyTagAttribute("deprecated",
                "indicates that this conf has been deprecated \n"
                        + "by giving the date of the deprecation. \n"
                        + "It should be given in this format: yyyyMMddHHmmss", false);
        deprecatedTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {Ivy.DATE_FORMAT.format(new Date())};
            }
        });
        conf.addAttribute(deprecatedTagAttribute);
        configurations.addChildIvyTag(conf);
        List allConf = new ArrayList();
        allConf.add(conf);
        addTag(conf.getName(), allConf);
        ivyTag.addChildIvyTag(configurations);
        addTag(configurations);

        // configurations
        IvyTag publications = new IvyTag("publications",
                "container for published artifact elements");
        IvyTag artifact = new IvyTag("artifact", "declares a published artifact for this module");
        artifact.addAttribute(new IvyTagAttribute("name",
                "the name of the published artifact. This name must not include revision.", true,
                projectNameValueProvider));
        artifact.addAttribute(new IvyTagAttribute("type", "the type of the published artifact. \n"
                + "It's usually its extension, but not necessarily. \n"
                + "For instance, ivy files are of type 'ivy' but have 'xml' extension", true,
                new ListValueProvider(getDefault("type"))));
        artifact.addAttribute(new IvyTagAttribute("ext", "the extension of the published artifact",
                false, new ListValueProvider(getDefault("ext"))));
        artifact.addAttribute(new IvyTagAttribute("conf",
                "comma separated list of public configurations in which this artifact\n"
                        + "is published. '*' wildcard can be used to designate all public\n"
                        + "configurations of this module", false, masterConfsValueProvider));
        IvyTag conf2 = new IvyTag("conf",
                "indicates a public configuration in which this artifact is published");
        conf2.addAttribute(new IvyTagAttribute("name",
                "the name of a module public configuration in which this artifact\n"
                        + "is published. '*' wildcard can be used to designate all\n"
                        + "public configurations of this module", true, masterConfValueProvider));
        allConf.add(conf2);
        artifact.addChildIvyTag(conf2);
        publications.addChildIvyTag(artifact);
        addTag(publications);
        addTag(artifact);
        ivyTag.addChildIvyTag(publications);

        // dependencies
        IvyTag dependencies = new IvyTag("dependencies", "container for dependency elements");
        // dependency
        IvyTag dependency = new IvyTag("dependency", "declares a dependency for this module") {
            public String[] getPossibleValuesForAttribute(String att, IvyFile ivyfile) {
                String[] r = super.getPossibleValuesForAttribute(att, ivyfile);
                if (r == null) { // listing can be used even for extra attributes
                    List ret = listDependencyTokenValues(att, ivyfile);
                    return (String[]) ret.toArray(new String[ret.size()]);
                } else {
                    return r;
                }
            }
        };
        IvyTagAttribute orgAtt = new IvyTagAttribute("org",
                "the name of the organisation of the dependency.", false);
        orgAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add(getSettings().getDefaultOrganization());
                String org = ((IvyModuleDescriptorFile) ivyFile).getOrganisation();
                if (org != null) {
                    ret.add(org);
                }
                return (String[]) ret.toArray(new String[ret.size()]);
            }

        });
        dependency.addAttribute(orgAtt);
        IvyTagAttribute module = new IvyTagAttribute("name", "the module name of the dependency",
                true);
        module.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(module);
        IvyTagAttribute branch = new IvyTagAttribute("branch",
                "the branch of the dependency. \nDo not set if not needed.", false);
        branch.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(branch);
        IvyTagAttribute rev = new IvyTagAttribute("rev", "the revision of the dependency. \n"
                + "Use 'latest.integration' to get the latest version of the dependency. \n"
                + "You can also end the revision asked with a '+' to get the latest"
                + " matching revision.", true);
        rev.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add("latest.integration");
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(rev);
        dependency.addAttribute(new IvyBooleanTagAttribute("force",
                "a boolean to give an indication to conflict manager \n"
                        + "that this dependency should be forced to this revision", false));
        dependency.addAttribute(new IvyBooleanTagAttribute("transitive",
                "a boolean indicating if this dependency should be resolved transitively or not",
                false));
        IvyTagAttribute confAtt = new IvyTagAttribute("conf",
                "an inline mapping configuration spec", false);
        dependency.addAttribute(confAtt);
        confAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                String qualifier = ivyFile.getAttributeValueQualifier();
                int index = qualifier.lastIndexOf(';') + 1;
                StringBuffer base = new StringBuffer(qualifier.substring(0, index));
                qualifier = qualifier.substring(index);
                int arrowIndex = qualifier.indexOf("->");
                if (arrowIndex > -1) {
                    // we are looking for a dep conf
                    String org = ((IvyModuleDescriptorFile) ivyFile).getDependencyOrganisation();
                    Map otherAttValues = ivyFile.getAllAttsValues();
                    if (org != null && otherAttValues != null && otherAttValues.get("name") != null
                            && otherAttValues.get("rev") != null) {
                        otherAttValues.remove("org");
                        String branch = (String) otherAttValues.remove("branch");
                        otherAttValues.remove("conf");
                        otherAttValues.remove("force");
                        otherAttValues.remove("transitive");
                        otherAttValues.remove("changing");
                        return getDependencyConfs(org, (String) otherAttValues.remove("name"),
                            branch, (String) otherAttValues.remove("rev"), otherAttValues,
                            qualifier, base, arrowIndex);
                    }

                } else {
                    // we are looking for a master conf
                    return getMasterConfs(ivyFile, qualifier, base, arrowIndex);
                }

                return null;
            }

            private String[] getMasterConfs(IvyFile ivyFile, String qualifier, StringBuffer base,
                    int arrowIndex) {
                // search for word after last comma
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                String[] confs = ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
                for (int i = 0; i < confs.length; i++) {
                    confs[i] = base + confs[i];
                }
                List ret = new ArrayList(Arrays.asList(confs));
                ret.add("*");
                return (String[]) ret.toArray(new String[ret.size()]);
            }

            private String[] getDependencyConfs(String org, String name, String branch, String rev,
                    Map otherAtts, String qualifier, StringBuffer base, int arrowIndex) {
                Ivy ivy = getIvy();
                if (ivy == null) {
                    return null;
                }
                base.append(qualifier.substring(0, arrowIndex + 2));
                qualifier = qualifier.substring(arrowIndex + 2);
                // search for word after last comma
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                ResolveData data = new ResolveData(ivy.getResolveEngine(), new ResolveOptions());
                ModuleRevisionId mrid = ModuleRevisionId.newInstance(org, name, branch, rev,
                    otherAtts);
                DefaultDependencyDescriptor ddd = new DefaultDependencyDescriptor(mrid, false);
                try {
                    DependencyResolver resolver = ivy.getSettings().getResolver(mrid);
                    if (resolver == null) {
                        return null;
                    }
                    ResolvedModuleRevision dep = resolver.getDependency(ddd, data);
                    if (dep == null) {
                        return null;
                    }
                    String[] confs = dep.getDescriptor().getConfigurationsNames();
                    for (int i = 0; i < confs.length; i++) {
                        confs[i] = base + confs[i];
                    }
                    List ret = new ArrayList(Arrays.asList(confs));
                    ret.add("*");
                    return (String[]) ret.toArray(new String[ret.size()]);
                } catch (ParseException e) {
                    getSettings().logError("The dependencies of " + mrid + " could not be parsed",
                        e);
                    return null;
                }
            }

        });
        IvyTag conf3 = new IvyTag("conf", "defines configuration mapping has sub element");
        conf3.addAttribute(new IvyTagAttribute(
            "name",
            "the name of the master configuration to map. \n"
            + "'*' wildcard can be used to designate all configurations of this module",
            true, masterConfValueProvider));
        conf3.addAttribute(new IvyTagAttribute("mapped",
                "a comma separated list of dependency configurations \n"
                        + "to which this master configuration should be mapped", false,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        Ivy ivy = getIvy();
                        int[] indexes = ivyFile.getParentTagIndex();
                        if (indexes != null && ivy != null) {
                            Map otherAttValues = ivyFile.getAllAttsValues(indexes[0] + 1);
                            String org = ((IvyModuleDescriptorFile) ivyFile)
                                    .getDependencyOrganisation(otherAttValues);
                            if (org != null && otherAttValues != null
                                    && otherAttValues.get("name") != null
                                    && otherAttValues.get("rev") != null) {
                                StringBuffer base = new StringBuffer();
                                String qualifier = ivyFile.getAttributeValueQualifier();
                                // search for word after last comma
                                int comma = qualifier.lastIndexOf(",") + 1;
                                base.append(qualifier.substring(0, comma));
                                qualifier = qualifier.substring(comma);
                                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                                    base.append(' ');
                                    qualifier = qualifier.substring(1);
                                }
                                ResolveData data = new ResolveData(ivy.getResolveEngine(),
                                        new ResolveOptions());
                                ModuleRevisionId mrid = ModuleRevisionId.newInstance(org,
                                    (String) otherAttValues.get("name"), (String) otherAttValues
                                            .get("rev"));
                                DefaultDependencyDescriptor ddd = new DefaultDependencyDescriptor(
                                        mrid, false);
                                try {
                                    String[] confs = ivy.getSettings().getResolver(mrid)
                                            .getDependency(ddd, data).getDescriptor()
                                            .getConfigurationsNames();
                                    for (int i = 0; i < confs.length; i++) {
                                        confs[i] = base + confs[i];
                                    }
                                    List ret = new ArrayList(Arrays.asList(confs));
                                    ret.add("*");
                                    return (String[]) ret.toArray(new String[ret.size()]);
                                } catch (ParseException e) {
                                    getSettings().logError(
                                        "The dependencies of " + mrid + " could not be parsed", e);
                                    return new String[] {"*"};
                                }
                            }
                        }
                        return new String[] {"*"};
                    }

                }));
        allConf.add(conf3);
        IvyTag mapped = new IvyTag("mapped",
                "map dependency configurations for this master configuration");
        mapped.addAttribute(new IvyTagAttribute("name",
            "the name of the dependency configuration mapped. \n"
                + "'*' wildcard can be used to designate all configurations of this module",
            true, new IValueProvider() {
                public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                    Ivy ivy = getIvy();
                    int[] indexes = ivyFile.getParentTagIndex();
                    if (indexes == null || ivy == null) {
                        return new String[] {"*"};
 
View Full Code Here

Examples of org.apache.ivyde.common.model.IValueProvider

        ivyTag.addAttribute(new IvyTagAttribute("version",
                "The version of the ivy file specification \n"
                        + "should be '2.0' with current version of ivy", true));
        addTag(ivyTag);

        IValueProvider defaultOrganizationProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {getSettings().getDefaultOrganization()};
            }
        };
        IValueProvider defaultOrganizationURLProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {getSettings().getDefaultOrganizationURL()};
            }
        };

        // info
        IvyTagAttribute orgTagAttribute = new IvyTagAttribute("organisation",
                "the name of the organisation that is the owner of this module.", true);
        orgTagAttribute.setValueProvider(defaultOrganizationProvider);
        IvyTagAttribute statusTagAttribute = new IvyTagAttribute("status",
                "the status of this module.");
        statusTagAttribute.setValueProvider(new ListValueProvider(getDefault("status")));
        IvyTagAttribute pubTagAttribute = new IvyTagAttribute("publication",
                "the date of publication of this module. \n"
                        + "It should be given in this format: yyyyMMddHHmmss");
        pubTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {Ivy.DATE_FORMAT.format(new Date())};
            }
        });
        IvyTagAttribute moduleTagAttribute = new IvyTagAttribute("module",
                "the name of the module described by this ivy file.", true);
        IValueProvider projectNameValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {ivyFile.getProjectName()};
            }
        };
        moduleTagAttribute.setValueProvider(projectNameValueProvider);
        IvyTag info = new IvyTag("info", "gives general information about the described module",
                new IvyTagAttribute[] {orgTagAttribute, moduleTagAttribute,
                        new IvyTagAttribute("branch", "the branch of this module."),
                        new IvyTagAttribute("revision", "the revision of this module."),
                        statusTagAttribute, pubTagAttribute});
        addTag(info);
        IvyTag child = new IvyTag("license",
                "gives information about the licenses of the described module");
        child.addAttribute(new IvyTagAttribute("name", "the name of the license. \n"
                + "Try to respect spelling when using a classical license.", true,
                new ListValueProvider(getDefault("license"))));
        child
                .addAttribute(new IvyTagAttribute("url", "an url pointing to the license text.",
                        false));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("ivyauthor", "describes who has contributed to write the ivy file");
        child.addAttribute(new IvyTagAttribute("name",
                "the name of the author, as a person or a company.", true,
                defaultOrganizationProvider));
        child.addAttribute(new IvyTagAttribute("url",
                "an url pointing to where the author can be reached.", false,
                defaultOrganizationURLProvider));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("repository",
                "describes on which public repositories this module can be found");
        child.addAttribute(new IvyTagAttribute("name", "the name of the repository. \n"
                + "Try to respect spelling for common repositories (ibiblio, ivyrep, ...)", true,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        return new String[] {"ibiblio", "ivyrep"};
                    }
                }));
        child.addAttribute(new IvyTagAttribute("url", "an url pointing to the repository.", true,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        Map allAttsValues = ivyFile.getAllAttsValues();
                        if (allAttsValues != null) {
                            String name = (String) allAttsValues.get("name");
                            if ("ibiblio".equals(name)) {
                                return new String[] {"http://www.ibiblio.org/maven/"};
                            } else if ("ivyrep".equals(name)) {
                                return new String[] {"http://www.jayasoft.fr/org/ivyrep/"};
                            }
                        }
                        return null;
                    }

                }));
        IvyTagAttribute reppatternTagAttribute = new IvyTagAttribute("pattern",
                "an ivy pattern to find modules on this repository", false);
        reppatternTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                Map allAttsValues = ivyFile.getAllAttsValues();
                if (allAttsValues != null) {
                    String name = (String) allAttsValues.get("name");
                    if ("ibiblio".equals(name)) {
                        return new String[] {"[module]/[type]s/[artifact]-[revision].[ext]"};
                    } else if ("ivyrep".equals(name)) {
                        return new String[] {"[organisation]/[module]/[artifact]-[revision].[ext]"};
                    }
                }
                return null;
            }
        });
        child.addAttribute(reppatternTagAttribute);
        child.addAttribute(new IvyBooleanTagAttribute("ivys",
                "true if ivy file can be found on this repository", false));
        child.addAttribute(new IvyBooleanTagAttribute("artifacts",
                "true if module artifacts can be found on this repository", false));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("description", "gives general description about the module");
        child.addAttribute(new IvyTagAttribute("homepage", "the url of the homepage of the module",
                false, defaultOrganizationURLProvider));
        addTag(child);
        info.addChildIvyTag(child);
        ivyTag.addChildIvyTag(info);

        // configurations
        IvyTag configurations = new IvyTag("configurations", "container for configuration elements");
        IvyTag conf = new IvyTag("conf", "declares a configuration of this module");
        conf.addAttribute(new IvyTagAttribute("name", "the name of the declared configuration",
                true));
        conf.addAttribute(new IvyTagAttribute("description",
                "a short description for the declared configuration", false));
        IvyTagAttribute visibilityTagAttribute = new IvyTagAttribute("visibility",
                "the visibility of the declared configuration.\n"
                        + "'public' means that this configuration can be used by other modules, \n"
                        + "while 'private' means that this configuration is used only in the\n"
                        + "module itself, and is not exposed to other modules", false);
        visibilityTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {"public", "private"};
            }
        });
        conf.addAttribute(visibilityTagAttribute);
        IvyTagAttribute confExtTagAttribute = new IvyTagAttribute("extends",
                "a comma separated list of configurations of this module \n"
                        + "that the current configuration extends", false);
        IValueProvider masterConfsValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                StringBuffer base = new StringBuffer();
                String qualifier = ivyFile.getAttributeValueQualifier();
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                String[] confs = ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
                for (int i = 0; i < confs.length; i++) {
                    confs[i] = base + confs[i];
                }
                return confs;
            }
        };
        IValueProvider masterConfValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
            }
        };
        confExtTagAttribute.setValueProvider(masterConfsValueProvider);
        conf.addAttribute(confExtTagAttribute);
        IvyTagAttribute deprecatedTagAttribute = new IvyTagAttribute("deprecated",
                "indicates that this conf has been deprecated \n"
                        + "by giving the date of the deprecation. \n"
                        + "It should be given in this format: yyyyMMddHHmmss", false);
        deprecatedTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {Ivy.DATE_FORMAT.format(new Date())};
            }
        });
        conf.addAttribute(deprecatedTagAttribute);
        configurations.addChildIvyTag(conf);
        List allConf = new ArrayList();
        allConf.add(conf);
        addTag(conf.getName(), allConf);
        ivyTag.addChildIvyTag(configurations);
        addTag(configurations);

        // configurations
        IvyTag publications = new IvyTag("publications",
                "container for published artifact elements");
        IvyTag artifact = new IvyTag("artifact", "declares a published artifact for this module");
        artifact.addAttribute(new IvyTagAttribute("name",
                "the name of the published artifact. This name must not include revision.", true,
                projectNameValueProvider));
        artifact.addAttribute(new IvyTagAttribute("type", "the type of the published artifact. \n"
                + "It's usually its extension, but not necessarily. \n"
                + "For instance, ivy files are of type 'ivy' but have 'xml' extension", true,
                new ListValueProvider(getDefault("type"))));
        artifact.addAttribute(new IvyTagAttribute("ext", "the extension of the published artifact",
                false, new ListValueProvider(getDefault("ext"))));
        artifact.addAttribute(new IvyTagAttribute("conf",
                "comma separated list of public configurations in which this artifact\n"
                        + "is published. '*' wildcard can be used to designate all public\n"
                        + "configurations of this module", false, masterConfsValueProvider));
        IvyTag conf2 = new IvyTag("conf",
                "indicates a public configuration in which this artifact is published");
        conf2.addAttribute(new IvyTagAttribute("name",
                "the name of a module public configuration in which this artifact\n"
                        + "is published. '*' wildcard can be used to designate all\n"
                        + "public configurations of this module", true, masterConfValueProvider));
        allConf.add(conf2);
        artifact.addChildIvyTag(conf2);
        publications.addChildIvyTag(artifact);
        addTag(publications);
        addTag(artifact);
        ivyTag.addChildIvyTag(publications);

        // dependencies
        IvyTag dependencies = new IvyTag("dependencies", "container for dependency elements");
        // dependency
        IvyTag dependency = new IvyTag("dependency", "declares a dependency for this module") {
            public String[] getPossibleValuesForAttribute(String att, IvyFile ivyfile) {
                String[] r = super.getPossibleValuesForAttribute(att, ivyfile);
                if (r == null) { // listing can be used even for extra attributes
                    List ret = listDependencyTokenValues(att, ivyfile);
                    return (String[]) ret.toArray(new String[ret.size()]);
                } else {
                    return r;
                }
            }
        };
        IvyTagAttribute orgAtt = new IvyTagAttribute("org",
                "the name of the organisation of the dependency.", false);
        orgAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add(getSettings().getDefaultOrganization());
                String org = ((IvyModuleDescriptorFile) ivyFile).getOrganisation();
                if (org != null) {
                    ret.add(org);
                }
                return (String[]) ret.toArray(new String[ret.size()]);
            }

        });
        dependency.addAttribute(orgAtt);
        IvyTagAttribute module = new IvyTagAttribute("name", "the module name of the dependency",
                true);
        module.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(module);
        IvyTagAttribute branch = new IvyTagAttribute("branch",
                "the branch of the dependency. \nDo not set if not needed.", false);
        branch.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(branch);
        IvyTagAttribute rev = new IvyTagAttribute("rev", "the revision of the dependency. \n"
                + "Use 'latest.integration' to get the latest version of the dependency. \n"
                + "You can also end the revision asked with a '+' to get the latest"
                + " matching revision.", true);
        rev.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add("latest.integration");
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(rev);
        dependency.addAttribute(new IvyBooleanTagAttribute("force",
                "a boolean to give an indication to conflict manager \n"
                        + "that this dependency should be forced to this revision", false));
        dependency.addAttribute(new IvyBooleanTagAttribute("transitive",
                "a boolean indicating if this dependency should be resolved transitively or not",
                false));
        IvyTagAttribute confAtt = new IvyTagAttribute("conf",
                "an inline mapping configuration spec", false);
        dependency.addAttribute(confAtt);
        confAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                String qualifier = ivyFile.getAttributeValueQualifier();
                int index = qualifier.lastIndexOf(';') + 1;
                StringBuffer base = new StringBuffer(qualifier.substring(0, index));
                qualifier = qualifier.substring(index);
                int arrowIndex = qualifier.indexOf("->");
                if (arrowIndex > -1) {
                    // we are looking for a dep conf
                    String org = ((IvyModuleDescriptorFile) ivyFile).getDependencyOrganisation();
                    Map otherAttValues = ivyFile.getAllAttsValues();
                    if (org != null && otherAttValues != null && otherAttValues.get("name") != null
                            && otherAttValues.get("rev") != null) {
                        otherAttValues.remove("org");
                        String branch = (String) otherAttValues.remove("branch");
                        otherAttValues.remove("conf");
                        otherAttValues.remove("force");
                        otherAttValues.remove("transitive");
                        otherAttValues.remove("changing");
                        return getDependencyConfs(org, (String) otherAttValues.remove("name"),
                            branch, (String) otherAttValues.remove("rev"), otherAttValues,
                            qualifier, base, arrowIndex);
                    }

                } else {
                    // we are looking for a master conf
                    return getMasterConfs(ivyFile, qualifier, base, arrowIndex);
                }

                return null;
            }

            private String[] getMasterConfs(IvyFile ivyFile, String qualifier, StringBuffer base,
                    int arrowIndex) {
                // search for word after last comma
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                String[] confs = ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
                for (int i = 0; i < confs.length; i++) {
                    confs[i] = base + confs[i];
                }
                List ret = new ArrayList(Arrays.asList(confs));
                ret.add("*");
                return (String[]) ret.toArray(new String[ret.size()]);
            }

            private String[] getDependencyConfs(String org, String name, String branch, String rev,
                    Map otherAtts, String qualifier, StringBuffer base, int arrowIndex) {
                Ivy ivy = getIvy();
                if (ivy == null) {
                    return null;
                }
                base.append(qualifier.substring(0, arrowIndex + 2));
                qualifier = qualifier.substring(arrowIndex + 2);
                // search for word after last comma
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                ResolveData data = new ResolveData(ivy.getResolveEngine(), new ResolveOptions());
                ModuleRevisionId mrid = ModuleRevisionId.newInstance(org, name, branch, rev,
                    otherAtts);
                DefaultDependencyDescriptor ddd = new DefaultDependencyDescriptor(mrid, false);
                try {
                    DependencyResolver resolver = ivy.getSettings().getResolver(mrid);
                    if (resolver == null) {
                        return null;
                    }
                    ResolvedModuleRevision dep = resolver.getDependency(ddd, data);
                    if (dep == null) {
                        return null;
                    }
                    String[] confs = dep.getDescriptor().getConfigurationsNames();
                    for (int i = 0; i < confs.length; i++) {
                        confs[i] = base + confs[i];
                    }
                    List ret = new ArrayList(Arrays.asList(confs));
                    ret.add("*");
                    return (String[]) ret.toArray(new String[ret.size()]);
                } catch (ParseException e) {
                    getSettings().logError("The dependencies of " + mrid + " could not be parsed",
                        e);
                    return null;
                }
            }

        });
        IvyTag conf3 = new IvyTag("conf", "defines configuration mapping has sub element");
        conf3
                .addAttribute(new IvyTagAttribute(
                        "name",
                        "the name of the master configuration to map. \n"
                                + "'*' wildcard can be used to designate all configurations of this module",
                        true, masterConfValueProvider));
        conf3.addAttribute(new IvyTagAttribute("mapped",
                "a comma separated list of dependency configurations \n"
                        + "to which this master configuration should be mapped", false,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        Ivy ivy = getIvy();
                        int[] indexes = ivyFile.getParentTagIndex();
                        if (indexes != null && ivy != null) {
                            Map otherAttValues = ivyFile.getAllAttsValues(indexes[0] + 1);
                            String org = ((IvyModuleDescriptorFile) ivyFile)
                                    .getDependencyOrganisation(otherAttValues);
                            if (org != null && otherAttValues != null
                                    && otherAttValues.get("name") != null
                                    && otherAttValues.get("rev") != null) {
                                StringBuffer base = new StringBuffer();
                                String qualifier = ivyFile.getAttributeValueQualifier();
                                // search for word after last comma
                                int comma = qualifier.lastIndexOf(",") + 1;
                                base.append(qualifier.substring(0, comma));
                                qualifier = qualifier.substring(comma);
                                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                                    base.append(' ');
                                    qualifier = qualifier.substring(1);
                                }
                                ResolveData data = new ResolveData(ivy.getResolveEngine(),
                                        new ResolveOptions());
                                ModuleRevisionId mrid = ModuleRevisionId.newInstance(org,
                                    (String) otherAttValues.get("name"), (String) otherAttValues
                                            .get("rev"));
                                DefaultDependencyDescriptor ddd = new DefaultDependencyDescriptor(
                                        mrid, false);
                                try {
                                    String[] confs = ivy.getSettings().getResolver(mrid)
                                            .getDependency(ddd, data).getDescriptor()
                                            .getConfigurationsNames();
                                    for (int i = 0; i < confs.length; i++) {
                                        confs[i] = base + confs[i];
                                    }
                                    List ret = new ArrayList(Arrays.asList(confs));
                                    ret.add("*");
                                    return (String[]) ret.toArray(new String[ret.size()]);
                                } catch (ParseException e) {
                                    getSettings().logError(
                                        "The dependencies of " + mrid + " could not be parsed", e);
                                    return new String[] {"*"};
                                }
                            }
                        }
                        return new String[] {"*"};
                    }

                }));
        allConf.add(conf3);
        IvyTag mapped = new IvyTag("mapped",
                "map dependency configurations for this master configuration");
        mapped
                .addAttribute(new IvyTagAttribute(
                        "name",
                        "the name of the dependency configuration mapped. \n"
                                + "'*' wildcard can be used to designate all configurations of this module",
                        true, new IValueProvider() {
                            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                                Ivy ivy = getIvy();
                                int[] indexes = ivyFile.getParentTagIndex();
                                if (indexes != null && ivy != null) {
                                    indexes = ivyFile.getParentTagIndex(indexes[0]);
View Full Code Here

Examples of org.apache.ivyde.common.model.IValueProvider

        ivyTag.addAttribute(new IvyTagAttribute("version",
                "The version of the ivy file specification \n"
                        + "should be '2.0' with current version of ivy", true));
        addTag(ivyTag);

        IValueProvider defaultOrganizationProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {getSettings().getDefaultOrganization()};
            }
        };
        IValueProvider defaultOrganizationURLProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {getSettings().getDefaultOrganizationURL()};
            }
        };

        // info
        IvyTagAttribute orgTagAttribute = new IvyTagAttribute("organisation",
                "the name of the organisation that is the owner of this module.", true);
        orgTagAttribute.setValueProvider(defaultOrganizationProvider);
        IvyTagAttribute statusTagAttribute = new IvyTagAttribute("status",
                "the status of this module.");
        statusTagAttribute.setValueProvider(new ListValueProvider(getDefault("status")));
        IvyTagAttribute pubTagAttribute = new IvyTagAttribute("publication",
                "the date of publication of this module. \n"
                        + "It should be given in this format: yyyyMMddHHmmss");
        pubTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {Ivy.DATE_FORMAT.format(new Date())};
            }
        });
        IvyTagAttribute moduleTagAttribute = new IvyTagAttribute("module",
                "the name of the module described by this ivy file.", true);
        IValueProvider projectNameValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {ivyFile.getProjectName()};
            }
        };
        moduleTagAttribute.setValueProvider(projectNameValueProvider);
        IvyTag info = new IvyTag("info", "gives general information about the described module",
                new IvyTagAttribute[] {orgTagAttribute, moduleTagAttribute,
                        new IvyTagAttribute("branch", "the branch of this module."),
                        new IvyTagAttribute("revision", "the revision of this module."),
                        statusTagAttribute, pubTagAttribute});
        addTag(info);
        IvyTag child = new IvyTag("license",
                "gives information about the licenses of the described module");
        child.addAttribute(new IvyTagAttribute("name", "the name of the license. \n"
                + "Try to respect spelling when using a classical license.", true,
                new ListValueProvider(getDefault("license"))));
        child
                .addAttribute(new IvyTagAttribute("url", "an url pointing to the license text.",
                        false));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("ivyauthor", "describes who has contributed to write the ivy file");
        child.addAttribute(new IvyTagAttribute("name",
                "the name of the author, as a person or a company.", true,
                defaultOrganizationProvider));
        child.addAttribute(new IvyTagAttribute("url",
                "an url pointing to where the author can be reached.", false,
                defaultOrganizationURLProvider));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("repository",
                "describes on which public repositories this module can be found");
        child.addAttribute(new IvyTagAttribute("name", "the name of the repository. \n"
                + "Try to respect spelling for common repositories (ibiblio, ivyrep, ...)", true,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        return new String[] {"ibiblio", "ivyrep"};
                    }
                }));
        child.addAttribute(new IvyTagAttribute("url", "an url pointing to the repository.", true,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        Map allAttsValues = ivyFile.getAllAttsValues();
                        if (allAttsValues != null) {
                            String name = (String) allAttsValues.get("name");
                            if ("ibiblio".equals(name)) {
                                return new String[] {"http://www.ibiblio.org/maven/"};
                            } else if ("ivyrep".equals(name)) {
                                return new String[] {"http://www.jayasoft.fr/org/ivyrep/"};
                            }
                        }
                        return null;
                    }

                }));
        IvyTagAttribute reppatternTagAttribute = new IvyTagAttribute("pattern",
                "an ivy pattern to find modules on this repository", false);
        reppatternTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                Map allAttsValues = ivyFile.getAllAttsValues();
                if (allAttsValues != null) {
                    String name = (String) allAttsValues.get("name");
                    if ("ibiblio".equals(name)) {
                        return new String[] {"[module]/[type]s/[artifact]-[revision].[ext]"};
                    } else if ("ivyrep".equals(name)) {
                        return new String[] {"[organisation]/[module]/[artifact]-[revision].[ext]"};
                    }
                }
                return null;
            }
        });
        child.addAttribute(reppatternTagAttribute);
        child.addAttribute(new IvyBooleanTagAttribute("ivys",
                "true if ivy file can be found on this repository", false));
        child.addAttribute(new IvyBooleanTagAttribute("artifacts",
                "true if module artifacts can be found on this repository", false));
        addTag(child);
        info.addChildIvyTag(child);
        child = new IvyTag("description", "gives general description about the module");
        child.addAttribute(new IvyTagAttribute("homepage", "the url of the homepage of the module",
                false, defaultOrganizationURLProvider));
        addTag(child);
        info.addChildIvyTag(child);
        ivyTag.addChildIvyTag(info);

        // configurations
        IvyTag configurations = new IvyTag("configurations",
            "container for configuration elements");
        IvyTag conf = new IvyTag("conf", "declares a configuration of this module");
        conf.addAttribute(new IvyTagAttribute("name", "the name of the declared configuration",
                true));
        conf.addAttribute(new IvyTagAttribute("description",
                "a short description for the declared configuration", false));
        IvyTagAttribute visibilityTagAttribute = new IvyTagAttribute("visibility",
                "the visibility of the declared configuration.\n"
                        + "'public' means that this configuration can be used by other modules, \n"
                        + "while 'private' means that this configuration is used only in the\n"
                        + "module itself, and is not exposed to other modules", false);
        visibilityTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {"public", "private"};
            }
        });
        conf.addAttribute(visibilityTagAttribute);
        IvyTagAttribute confExtTagAttribute = new IvyTagAttribute("extends",
                "a comma separated list of configurations of this module \n"
                        + "that the current configuration extends", false);
        IValueProvider masterConfsValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                StringBuffer base = new StringBuffer();
                String qualifier = ivyFile.getAttributeValueQualifier();
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                String[] confs = ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
                for (int i = 0; i < confs.length; i++) {
                    confs[i] = base + confs[i];
                }
                return confs;
            }
        };
        IValueProvider masterConfValueProvider = new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
            }
        };
        confExtTagAttribute.setValueProvider(masterConfsValueProvider);
        conf.addAttribute(confExtTagAttribute);
        IvyTagAttribute deprecatedTagAttribute = new IvyTagAttribute("deprecated",
                "indicates that this conf has been deprecated \n"
                        + "by giving the date of the deprecation. \n"
                        + "It should be given in this format: yyyyMMddHHmmss", false);
        deprecatedTagAttribute.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                return new String[] {Ivy.DATE_FORMAT.format(new Date())};
            }
        });
        conf.addAttribute(deprecatedTagAttribute);
        configurations.addChildIvyTag(conf);
        List allConf = new ArrayList();
        allConf.add(conf);
        addTag(conf.getName(), allConf);
        ivyTag.addChildIvyTag(configurations);
        addTag(configurations);

        // configurations
        IvyTag publications = new IvyTag("publications",
                "container for published artifact elements");
        IvyTag artifact = new IvyTag("artifact", "declares a published artifact for this module");
        artifact.addAttribute(new IvyTagAttribute("name",
                "the name of the published artifact. This name must not include revision.", true,
                projectNameValueProvider));
        artifact.addAttribute(new IvyTagAttribute("type", "the type of the published artifact. \n"
                + "It's usually its extension, but not necessarily. \n"
                + "For instance, ivy files are of type 'ivy' but have 'xml' extension", true,
                new ListValueProvider(getDefault("type"))));
        artifact.addAttribute(new IvyTagAttribute("ext", "the extension of the published artifact",
                false, new ListValueProvider(getDefault("ext"))));
        artifact.addAttribute(new IvyTagAttribute("conf",
                "comma separated list of public configurations in which this artifact\n"
                        + "is published. '*' wildcard can be used to designate all public\n"
                        + "configurations of this module", false, masterConfsValueProvider));
        IvyTag conf2 = new IvyTag("conf",
                "indicates a public configuration in which this artifact is published");
        conf2.addAttribute(new IvyTagAttribute("name",
                "the name of a module public configuration in which this artifact\n"
                        + "is published. '*' wildcard can be used to designate all\n"
                        + "public configurations of this module", true, masterConfValueProvider));
        allConf.add(conf2);
        artifact.addChildIvyTag(conf2);
        publications.addChildIvyTag(artifact);
        addTag(publications);
        addTag(artifact);
        ivyTag.addChildIvyTag(publications);

        // dependencies
        IvyTag dependencies = new IvyTag("dependencies", "container for dependency elements");
        // dependency
        IvyTag dependency = new IvyTag("dependency", "declares a dependency for this module") {
            public String[] getPossibleValuesForAttribute(String att, IvyFile ivyfile) {
                String[] r = super.getPossibleValuesForAttribute(att, ivyfile);
                if (r == null) { // listing can be used even for extra attributes
                    List ret = listDependencyTokenValues(att, ivyfile);
                    return (String[]) ret.toArray(new String[ret.size()]);
                } else {
                    return r;
                }
            }
        };
        IvyTagAttribute orgAtt = new IvyTagAttribute("org",
                "the name of the organisation of the dependency.", false);
        orgAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add(getSettings().getDefaultOrganization());
                String org = ((IvyModuleDescriptorFile) ivyFile).getOrganisation();
                if (org != null) {
                    ret.add(org);
                }
                return (String[]) ret.toArray(new String[ret.size()]);
            }

        });
        dependency.addAttribute(orgAtt);
        IvyTagAttribute module = new IvyTagAttribute("name", "the module name of the dependency",
                true);
        module.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(module);
        IvyTagAttribute branch = new IvyTagAttribute("branch",
                "the branch of the dependency. \nDo not set if not needed.", false);
        branch.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(branch);
        IvyTagAttribute rev = new IvyTagAttribute("rev", "the revision of the dependency. \n"
                + "Use 'latest.integration' to get the latest version of the dependency. \n"
                + "You can also end the revision asked with a '+' to get the latest"
                + " matching revision.", true);
        rev.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                List ret = listDependencyTokenValues(att.getName(), ivyFile);
                ret.add("latest.integration");
                return (String[]) ret.toArray(new String[ret.size()]);
            }
        });
        dependency.addAttribute(rev);
        dependency.addAttribute(new IvyBooleanTagAttribute("force",
                "a boolean to give an indication to conflict manager \n"
                        + "that this dependency should be forced to this revision", false));
        dependency.addAttribute(new IvyBooleanTagAttribute("transitive",
                "a boolean indicating if this dependency should be resolved transitively or not",
                false));
        IvyTagAttribute confAtt = new IvyTagAttribute("conf",
                "an inline mapping configuration spec", false);
        dependency.addAttribute(confAtt);
        confAtt.setValueProvider(new IValueProvider() {
            public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                String qualifier = ivyFile.getAttributeValueQualifier();
                int index = qualifier.lastIndexOf(';') + 1;
                StringBuffer base = new StringBuffer(qualifier.substring(0, index));
                qualifier = qualifier.substring(index);
                int arrowIndex = qualifier.indexOf("->");
                if (arrowIndex > -1) {
                    // we are looking for a dep conf
                    String org = ((IvyModuleDescriptorFile) ivyFile).getDependencyOrganisation();
                    Map otherAttValues = ivyFile.getAllAttsValues();
                    if (org != null && otherAttValues != null && otherAttValues.get("name") != null
                            && otherAttValues.get("rev") != null) {
                        otherAttValues.remove("org");
                        String branch = (String) otherAttValues.remove("branch");
                        otherAttValues.remove("conf");
                        otherAttValues.remove("force");
                        otherAttValues.remove("transitive");
                        otherAttValues.remove("changing");
                        return getDependencyConfs(org, (String) otherAttValues.remove("name"),
                            branch, (String) otherAttValues.remove("rev"), otherAttValues,
                            qualifier, base, arrowIndex);
                    }

                } else {
                    // we are looking for a master conf
                    return getMasterConfs(ivyFile, qualifier, base, arrowIndex);
                }

                return null;
            }

            private String[] getMasterConfs(IvyFile ivyFile, String qualifier, StringBuffer base,
                    int arrowIndex) {
                // search for word after last comma
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                String[] confs = ((IvyModuleDescriptorFile) ivyFile).getConfigurationNames();
                for (int i = 0; i < confs.length; i++) {
                    confs[i] = base + confs[i];
                }
                List ret = new ArrayList(Arrays.asList(confs));
                ret.add("*");
                return (String[]) ret.toArray(new String[ret.size()]);
            }

            private String[] getDependencyConfs(String org, String name, String branch, String rev,
                    Map otherAtts, String qualifier, StringBuffer base, int arrowIndex) {
                Ivy ivy = getIvy();
                if (ivy == null) {
                    return null;
                }
                base.append(qualifier.substring(0, arrowIndex + 2));
                qualifier = qualifier.substring(arrowIndex + 2);
                // search for word after last comma
                int comma = qualifier.lastIndexOf(",") + 1;
                base.append(qualifier.substring(0, comma));
                qualifier = qualifier.substring(comma);
                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                    base.append(' ');
                    qualifier = qualifier.substring(1);
                }
                ResolveData data = new ResolveData(ivy.getResolveEngine(), new ResolveOptions());
                ModuleRevisionId mrid = ModuleRevisionId.newInstance(org, name, branch, rev,
                    otherAtts);
                DefaultDependencyDescriptor ddd = new DefaultDependencyDescriptor(mrid, false);
                try {
                    DependencyResolver resolver = ivy.getSettings().getResolver(mrid);
                    if (resolver == null) {
                        return null;
                    }
                    ResolvedModuleRevision dep = resolver.getDependency(ddd, data);
                    if (dep == null) {
                        return null;
                    }
                    String[] confs = dep.getDescriptor().getConfigurationsNames();
                    for (int i = 0; i < confs.length; i++) {
                        confs[i] = base + confs[i];
                    }
                    List ret = new ArrayList(Arrays.asList(confs));
                    ret.add("*");
                    return (String[]) ret.toArray(new String[ret.size()]);
                } catch (ParseException e) {
                    getSettings().logError("The dependencies of " + mrid + " could not be parsed",
                        e);
                    return null;
                }
            }

        });
        IvyTag conf3 = new IvyTag("conf", "defines configuration mapping has sub element");
        conf3.addAttribute(new IvyTagAttribute(
            "name",
            "the name of the master configuration to map. \n"
            + "'*' wildcard can be used to designate all configurations of this module",
            true, masterConfValueProvider));
        conf3.addAttribute(new IvyTagAttribute("mapped",
                "a comma separated list of dependency configurations \n"
                        + "to which this master configuration should be mapped", false,
                new IValueProvider() {
                    public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                        Ivy ivy = getIvy();
                        int[] indexes = ivyFile.getParentTagIndex();
                        if (indexes != null && ivy != null) {
                            Map otherAttValues = ivyFile.getAllAttsValues(indexes[0] + 1);
                            String org = ((IvyModuleDescriptorFile) ivyFile)
                                    .getDependencyOrganisation(otherAttValues);
                            if (org != null && otherAttValues != null
                                    && otherAttValues.get("name") != null
                                    && otherAttValues.get("rev") != null) {
                                StringBuffer base = new StringBuffer();
                                String qualifier = ivyFile.getAttributeValueQualifier();
                                // search for word after last comma
                                int comma = qualifier.lastIndexOf(",") + 1;
                                base.append(qualifier.substring(0, comma));
                                qualifier = qualifier.substring(comma);
                                while (qualifier.length() > 0 && qualifier.charAt(0) == ' ') {
                                    base.append(' ');
                                    qualifier = qualifier.substring(1);
                                }
                                ResolveData data = new ResolveData(ivy.getResolveEngine(),
                                        new ResolveOptions());
                                ModuleRevisionId mrid = ModuleRevisionId.newInstance(org,
                                    (String) otherAttValues.get("name"), (String) otherAttValues
                                            .get("rev"));
                                DefaultDependencyDescriptor ddd = new DefaultDependencyDescriptor(
                                        mrid, false);
                                try {
                                    String[] confs = ivy.getSettings().getResolver(mrid)
                                            .getDependency(ddd, data).getDescriptor()
                                            .getConfigurationsNames();
                                    for (int i = 0; i < confs.length; i++) {
                                        confs[i] = base + confs[i];
                                    }
                                    List ret = new ArrayList(Arrays.asList(confs));
                                    ret.add("*");
                                    return (String[]) ret.toArray(new String[ret.size()]);
                                } catch (ParseException e) {
                                    getSettings().logError(
                                        "The dependencies of " + mrid + " could not be parsed", e);
                                    return new String[] {"*"};
                                }
                            }
                        }
                        return new String[] {"*"};
                    }

                }));
        allConf.add(conf3);
        IvyTag mapped = new IvyTag("mapped",
                "map dependency configurations for this master configuration");
        mapped.addAttribute(new IvyTagAttribute("name",
            "the name of the dependency configuration mapped. \n"
                + "'*' wildcard can be used to designate all configurations of this module",
            true, new IValueProvider() {
                public String[] getValuesfor(IvyTagAttribute att, IvyFile ivyFile) {
                    Ivy ivy = getIvy();
                    int[] indexes = ivyFile.getParentTagIndex();
                    if (indexes == null || ivy == null) {
                        return new String[] {"*"};
 
View Full Code Here
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.