Search in sources :

Example 1 with ValueProvider

use of org.eclipse.che.api.project.server.type.ValueProvider in project che by eclipse.

the class JavaValueProviderFactoryTest method checkFoundJavaButNotInRootFolder.

/**
     * In this case we have a folder with a javascript file, but some sub folders contains java files
     */
@Test
public void checkFoundJavaButNotInRootFolder() throws Throwable {
    // we return a file entry that is a javascript file
    FileEntry fileEntry = mock(FileEntry.class);
    when(fileEntry.getName()).thenReturn("helloworld.js");
    when(rootProjectFolder.getChildFiles()).thenReturn(Collections.singletonList(fileEntry));
    FileEntry javaFileEntry = mock(FileEntry.class);
    when(javaFileEntry.getName()).thenReturn("helloworld.java");
    FolderEntry subFolder = mock(FolderEntry.class);
    when(subFolder.getChildFiles()).thenReturn(Collections.singletonList(javaFileEntry));
    when(rootProjectFolder.getChildFolders()).thenReturn(Collections.singletonList(subFolder));
    ValueProvider javaPropertiesValueProvider = new JavaValueProviderFactory().newInstance(rootProjectFolder);
    List<String> hasJavaFiles = javaPropertiesValueProvider.getValues(CONTAINS_JAVA_FILES);
    assertNotNull(hasJavaFiles);
    assertEquals(hasJavaFiles, Collections.singletonList("true"));
}
Also used : FolderEntry(org.eclipse.che.api.project.server.FolderEntry) FileEntry(org.eclipse.che.api.project.server.FileEntry) ValueProvider(org.eclipse.che.api.project.server.type.ValueProvider) Test(org.testng.annotations.Test)

Example 2 with ValueProvider

use of org.eclipse.che.api.project.server.type.ValueProvider in project che by eclipse.

the class JavaValueProviderFactoryTest method checkFoundJavaFilesInCurrentFolder.

/**
     * In this case we have a folder with a java file, so it should find a java file
     */
@Test
public void checkFoundJavaFilesInCurrentFolder() throws Throwable {
    // we return a file entry that is a java file
    FileEntry fileEntry = mock(FileEntry.class);
    when(fileEntry.getName()).thenReturn("helloworld.java");
    when(rootProjectFolder.getChildFiles()).thenReturn(Collections.singletonList(fileEntry));
    ValueProvider javaPropertiesValueProvider = new JavaValueProviderFactory().newInstance(rootProjectFolder);
    List<String> hasJavaFiles = javaPropertiesValueProvider.getValues(CONTAINS_JAVA_FILES);
    assertNotNull(hasJavaFiles);
    assertEquals(hasJavaFiles, Collections.singletonList("true"));
}
Also used : FileEntry(org.eclipse.che.api.project.server.FileEntry) ValueProvider(org.eclipse.che.api.project.server.type.ValueProvider) Test(org.testng.annotations.Test)

Example 3 with ValueProvider

use of org.eclipse.che.api.project.server.type.ValueProvider in project che by eclipse.

the class JavaValueProviderFactoryTest method checkNotFoundJavaFilesInCurrentFolder.

/**
     * In this case we have a folder with a javascript file, so it shouldn't find any java files
     */
@Test
public void checkNotFoundJavaFilesInCurrentFolder() throws Throwable {
    // we return a file entry that is a javascript file
    FileEntry fileEntry = mock(FileEntry.class);
    when(fileEntry.getName()).thenReturn("helloworld.js");
    when(rootProjectFolder.getChildFiles()).thenReturn(Collections.singletonList(fileEntry));
    ValueProvider javaPropertiesValueProvider = new JavaValueProviderFactory().newInstance(rootProjectFolder);
    try {
        javaPropertiesValueProvider.getValues(CONTAINS_JAVA_FILES);
    } catch (ValueStorageException e) {
        assertEquals(e.getMessage(), "There are no Java files inside the project");
    }
}
Also used : ValueStorageException(org.eclipse.che.api.project.server.type.ValueStorageException) FileEntry(org.eclipse.che.api.project.server.FileEntry) ValueProvider(org.eclipse.che.api.project.server.type.ValueProvider) Test(org.testng.annotations.Test)

Example 4 with ValueProvider

use of org.eclipse.che.api.project.server.type.ValueProvider in project che by eclipse.

the class JavaValueProviderFactoryTest method checkFoundJavaDeepFolder.

/**
     * In this case we have java file in a very deep folder
     */
@Test
public void checkFoundJavaDeepFolder() throws Throwable {
    // we return a file entry that is a javascript file
    FileEntry fileEntry = mock(FileEntry.class);
    when(fileEntry.getName()).thenReturn("helloworld.js");
    when(rootProjectFolder.getChildFiles()).thenReturn(Collections.singletonList(fileEntry));
    FolderEntry subFolder = mock(FolderEntry.class);
    when(subFolder.getChildFiles()).thenReturn(Collections.emptyList());
    when(rootProjectFolder.getChildFolders()).thenReturn(Collections.singletonList(subFolder));
    FileEntry javaFileEntry = mock(FileEntry.class);
    when(javaFileEntry.getName()).thenReturn("helloworld.java");
    FolderEntry subSubFolder = mock(FolderEntry.class);
    when(subSubFolder.getChildFiles()).thenReturn(Collections.singletonList(javaFileEntry));
    when(subFolder.getChildFolders()).thenReturn(Collections.singletonList(subSubFolder));
    ValueProvider javaPropertiesValueProvider = new JavaValueProviderFactory().newInstance(rootProjectFolder);
    List<String> hasJavaFiles = javaPropertiesValueProvider.getValues(CONTAINS_JAVA_FILES);
    assertNotNull(hasJavaFiles);
    assertEquals(hasJavaFiles, Collections.singletonList("true"));
}
Also used : FolderEntry(org.eclipse.che.api.project.server.FolderEntry) FileEntry(org.eclipse.che.api.project.server.FileEntry) ValueProvider(org.eclipse.che.api.project.server.type.ValueProvider) Test(org.testng.annotations.Test)

Example 5 with ValueProvider

use of org.eclipse.che.api.project.server.type.ValueProvider in project che by eclipse.

the class RegisteredProject method initAttributes.

/**
     * Initialize project attributes.
     * Note: the problem with {@link Problem#code} = 13 will be added when a value for some attribute is not initialized
     */
private void initAttributes() {
    // we take only defined attributes, others ignored
    for (Map.Entry<String, Attribute> entry : types.getAttributeDefs().entrySet()) {
        final Attribute definition = entry.getValue();
        final String name = entry.getKey();
        AttributeValue value = new AttributeValue(config.getAttributes().get(name));
        if (!definition.isVariable()) {
            // constant, value always assumed as stated in definition
            attributes.put(name, definition.getValue());
        } else {
            // variable
            final Variable variable = (Variable) definition;
            // value provided
            if (variable.isValueProvided()) {
                final ValueProvider valueProvider = variable.getValueProviderFactory().newInstance(folder);
                if (folder != null) {
                    try {
                        if (!valueProvider.isSettable() || value.isEmpty()) {
                            // get provided value
                            value = new AttributeValue(valueProvider.getValues(name));
                        } else {
                            // set provided (not empty) value
                            valueProvider.setValues(name, value.getList());
                        }
                    } catch (ValueStorageException e) {
                        final Problem problem = new Problem(ATTRIBUTE_NAME_PROBLEM, format("Value for attribute %s is not initialized, caused by: %s", variable.getId(), e.getLocalizedMessage()));
                        this.problems.add(problem);
                    }
                } else {
                    continue;
                }
            }
            if (value.isEmpty() && variable.isRequired()) {
                final Problem problem = new Problem(ATTRIBUTE_NAME_PROBLEM, "Value for required attribute is not initialized " + variable.getId());
                this.problems.add(problem);
            //throw new ProjectTypeConstraintException("Value for required attribute is not initialized " + variable.getId());
            }
            if (!value.isEmpty()) {
                this.attributes.put(name, value);
            }
        }
    }
}
Also used : AttributeValue(org.eclipse.che.api.project.server.type.AttributeValue) Variable(org.eclipse.che.api.project.server.type.Variable) Attribute(org.eclipse.che.api.core.model.project.type.Attribute) ValueStorageException(org.eclipse.che.api.project.server.type.ValueStorageException) ValueProvider(org.eclipse.che.api.project.server.type.ValueProvider) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ValueProvider (org.eclipse.che.api.project.server.type.ValueProvider)6 FileEntry (org.eclipse.che.api.project.server.FileEntry)5 Test (org.testng.annotations.Test)5 FolderEntry (org.eclipse.che.api.project.server.FolderEntry)3 ValueStorageException (org.eclipse.che.api.project.server.type.ValueStorageException)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Attribute (org.eclipse.che.api.core.model.project.type.Attribute)1 AttributeValue (org.eclipse.che.api.project.server.type.AttributeValue)1 Variable (org.eclipse.che.api.project.server.type.Variable)1