Package org.wso2.carbon.registry.ws.client.test

Source Code of org.wso2.carbon.registry.ws.client.test.ResourceHandling

/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.wso2.carbon.registry.ws.client.test;

import org.wso2.carbon.registry.core.Comment;
import org.wso2.carbon.registry.core.RegistryConstants;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.Tag;
import org.wso2.carbon.registry.core.exceptions.RegistryException;

import java.util.ArrayList;
import java.util.List;

public class ResourceHandling extends TestSetup {

    public ResourceHandling(String text) {
        super(text);
    }

    public void testResourceCopy() throws Exception {

        try {
            String path = "/f95/f2/r1";
            String commentPath = path + RegistryConstants.URL_SEPARATOR + "comments";
            String new_path = "/f96/f2/r1";
            String commentPathNew = new_path + RegistryConstants.URL_SEPARATOR + "comments";
            Resource r1 = registry.newResource();
            r1.setDescription("This is a file to be renamed");
            byte[] r1content = "R2 content".getBytes();
            r1.setContent(r1content);
            r1.setMediaType("txt");

            Comment c1 = new Comment();
            c1.setResourcePath(path);
            c1.setText("This is a test comment1");

            Comment c2 = new Comment();
            c2.setResourcePath(path);
            c2.setText("This is a test comment2");

            r1.setProperty("key1", "value1");
            r1.setProperty("key2", "value2");

            registry.put(path, r1);
            registry.addComment(path, c1);
            registry.addComment(path, c2);
            registry.applyTag(path, "tag1");
            registry.applyTag(path, "tag2");
            registry.applyTag(path, "tag3");
            registry.rateResource(path, 4);

            Resource r2 = registry.get(path);

            assertEquals("Properties are not equal", r1.getProperty("key1"), r2.getProperty("key1"));
            assertEquals("Properties are not equal", r1.getProperty("key2"), r2.getProperty("key2"));
            assertEquals("File content is not matching", new String((byte[]) r1.getContent()),
                    new String((byte[]) r2.getContent()));
            assertTrue(c1.getText() + " is not associated for resource" + path,
                    containsComment(commentPath, c1.getText()));
            assertTrue(c2.getText() + " is not associated for resource" + path,
                    containsComment(commentPath, c2.getText()));
            assertTrue("Tag1 is not exist", containsTag(path, "tag1"));
            assertTrue("Tag2 is not exist", containsTag(path, "tag2"));
            assertTrue("Tag3 is not exist", containsTag(path, "tag3"));

            float rating = registry.getAverageRating(path);
            assertEquals("Rating is not mathching", rating, (float) 4.0, (float) 0.01);
            assertEquals("Media type not exist", r1.getMediaType(), r2.getMediaType());
//            assertEquals("Authour name is not exist", r1.getAuthorUserName(), r2.getAuthorUserName());
            assertEquals("Description is not exist", r1.getDescription(), r2.getDescription());

            String new_path_returned;
            new_path_returned = registry.rename(path, new_path);

            assertEquals("New resource path is not equal", new_path, new_path_returned);

            /*get renamed resource details*/

            Resource r1Renamed = registry.get(new_path);

            assertEquals("File content is not matching", new String((byte[]) r2.getContent()),
                    new String((byte[]) r1Renamed.getContent()));
            assertEquals("Properties are not equal", r2.getProperty("key1"),
                    r1Renamed.getProperty("key1"));
            assertEquals("Properties are not equal", r2.getProperty("key2"),
                    r1Renamed.getProperty("key2"));
            assertTrue(c1.getText() + " is not associated for resource" + new_path,
                    containsComment(commentPathNew, c1.getText()));
            assertTrue(c2.getText() + " is not associated for resource" + new_path,
                    containsComment(commentPathNew, c2.getText()));
            assertTrue("Tag1 is not copied", containsTag(new_path, "tag1"));
            assertTrue("Tag2 is not copied", containsTag(new_path, "tag2"));
            assertTrue("Tag3 is not copied", containsTag(new_path, "tag3"));

            float rating1 = registry.getAverageRating(new_path);
            assertEquals("Rating is not copied", rating1, (float) 4.0, (float) 0.01);
            assertEquals("Media type not copied", r2.getMediaType(), r1Renamed.getMediaType());
            assertEquals("Authour Name is not copied", r2.getAuthorUserName(),
                    r1Renamed.getAuthorUserName());
            assertEquals("Description is not exist", r2.getDescription(), r1Renamed.getDescription());

        } catch (RegistryException e) {
            e.printStackTrace();
        }
    }

    public void testCollectionCopy() throws Exception {

        try {

            String path = "/c9011/c1/c2";
            String commentPath = path + RegistryConstants.URL_SEPARATOR + "comments";
            String new_path = "/c9111/c1/c3";
            String commentPathNew = new_path + RegistryConstants.URL_SEPARATOR + "comments";
            Resource r1 = registry.newCollection();
            r1.setDescription("This is a file to be renamed");

            Comment c1 = new Comment();
            c1.setResourcePath(path);
            c1.setText("This is first test comment");

            Comment c2 = new Comment();
            c2.setResourcePath(path);
            c2.setText("This is secound test comment");

            r1.setProperty("key1", "value1");
            r1.setProperty("key2", "value2");

            registry.put(path, r1);
            registry.addComment(path, c1);
            registry.addComment(path, c2);
            registry.applyTag(path, "tag1");
            registry.applyTag(path, "tag2");
            registry.applyTag(path, "tag3");
            registry.rateResource(path, 4);

            Resource r2 = registry.get(path);

            assertEquals("Properties are not equal", r1.getProperty("key1"),
                    r2.getProperty("key1"));
            assertEquals("Properties are not equal", r1.getProperty("key2"),
                    r2.getProperty("key2"));
            assertTrue(c1.getText() + " is not associated for resource" + path,
                    containsComment(commentPath, c1.getText()));
            assertTrue(c2.getText() + " is not associated for resource" + path,
                    containsComment(commentPath, c2.getText()));
            assertTrue("Tag1 is not copied", containsTag(path, "tag1"));
            assertTrue("Tag2 is not copied", containsTag(path, "tag2"));
            assertTrue("Tag3 is not copied", containsTag(path, "tag3"));

            float rating = registry.getAverageRating(path);
            assertEquals("Rating is not mathching", rating, (float) 4.0, (float) 0.01);
//            assertEquals("Authour name is not exist", r1.getAuthorUserName(), r2.getAuthorUserName());

            String new_path_returned;
            new_path_returned = registry.rename(path, new_path);

            assertEquals("New resource path is not equal", new_path, new_path_returned);

            /*get renamed resource details*/

            Resource r1Renamed = registry.get(new_path);

            assertEquals("Properties are not equal", r2.getProperty("key1"),
                    r1Renamed.getProperty("key1"));
            assertEquals("Properties are not equal", r2.getProperty("key2"),
                    r1Renamed.getProperty("key2"));
            assertTrue(c1.getText() + " is not associated for resource" + new_path,
                    containsComment(commentPathNew, c1.getText()));
            assertTrue(c2.getText() + " is not associated for resource" + new_path,
                    containsComment(commentPathNew, c2.getText()));
            assertTrue("Tag1 is not copied", containsTag(new_path, "tag1"));
            assertTrue("Tag2 is not copied", containsTag(new_path, "tag2"));
            assertTrue("Tag3 is not copied", containsTag(new_path, "tag3"));

            float rating1 = registry.getAverageRating(new_path);
            assertEquals("Rating is not copied", rating1, (float) 4.0, (float) 0.01);

//            assertEquals("Author Name is not copied", r1.getAuthorUserName(), r2.getAuthorUserName());

        } catch (RegistryException e) {
            e.printStackTrace();
        }
    }

    public void testGetResourceoperation() throws Exception {

        Resource r2 = registry.newResource();
        String path = "/testk/testa/derby.log";
        r2.setContent(new String("this is the content").getBytes());
        r2.setDescription("this is test desc this is test desc this is test desc this is test desc this is test desc " +
                "this is test desc this is test desc this is test desc this is test descthis is test desc ");
        r2.setMediaType("plain/text");
        registry.put(path, r2);

        r2.discard();

        Resource r3 = registry.newResource();

//        assertEquals("Author names are not Equal", "admin", r3.getAuthorUserName());

        r3 = registry.get(path);

        assertEquals("Author User names are not Equal", "admin", r3.getAuthorUserName());
        assertNotNull("Created time is null", r3.getCreatedTime());
        assertEquals("Author User names are not Equal", "admin", r3.getAuthorUserName());
        assertEquals("Description is not Equal", "this is test desc this is test desc this is test desc this is test" +
                " desc this is test desc this is test desc this is test desc this is test desc this is test descthis is " +
                "test desc ", r3.getDescription());
        assertNotNull("Get Id is null", r3.getId());
        assertNotNull("LastModifiedDate is null", r3.getLastModified());
        assertEquals("Last Updated names are not Equal", "admin", r3.getLastUpdaterUserName());
        //System.out.println(r3.getMediaType());
        assertEquals("Media Type is not equal", "plain/text", r3.getMediaType());
        assertEquals("parent Path is not equal", "/testk/testa", r3.getParentPath());
        assertEquals("parent Path is not equal", path, r3.getPath());
        assertEquals("Get stated wrong", 0, r3.getState());

        String st = r3.getPermanentPath();
//        assertTrue("Permenent path contanin the string" + path + " verion", st.contains("/testk/testa/derby.log;version:"));
    }

    public void testGetCollectionoperation() throws Exception {

        Resource r2 = registry.newCollection();
        String path = "/testk2/testa/testc";
        r2.setDescription("this is test desc");
        r2.setProperty("test2", "value2");
        registry.put(path, r2);

        r2.discard();

        Resource r3 = registry.get(path);

//        assertEquals("Author names are not Equal", "admin", r3.getAuthorUserName());
//        assertEquals("Author User names are not Equal", "admin", r3.getAuthorUserName());
        // System.out.println(r3.getCreatedTime());
        //assertNotNull("Created time is null", r3.getCreatedTime());
//        assertEquals("Author User names are not Equal", "admin", r3.getAuthorUserName());
        //System.out.println("Desc" + r3.getDescription());
        //assertEquals("Description is not Equal", "this is test desc", r3.getDescription());
        assertNotNull("Get Id is null", r3.getId());
        assertNotNull("LastModifiedDate is null", r3.getLastModified());
        assertEquals("Last Updated names are not Equal", "admin", r3.getLastUpdaterUserName());
        //System.out.println("Media Type:" + r3.getMediaType());
        //assertEquals("Media Type is not equal","unknown",r3.getMediaType());
        assertEquals("parent Path is not equal", "/testk2/testa", r3.getParentPath());
        assertEquals("Get stated wrong", 0, r3.getState());

        registry.createVersion(path);

//         System.out.println(r3.getParentPath());
//      System.out.println(r3.getPath());

        assertEquals("Permenent path doesn't contanin the string", "/testk2/testa", r3.getParentPath());
        assertEquals("Path doesn't contanin the string", path, r3.getPath());

//        String st = r3.getPermanentPath();
//        assertTrue("Permenent path contanin the string" + path +" verion", st.contains("/testk2/testa/testc;version:"));


    }


    private boolean containsComment(String pathValue, String commentText) throws Exception {

        Comment[] commentsArray = null;
        List commentTexts = new ArrayList();

        try {
            Resource commentsResource = registry.get(pathValue);
            commentsArray = (Comment[]) commentsResource.getContent();
            for (Comment comment : commentsArray) {
                Resource commentResource = registry.get(comment.getPath());
                commentTexts.add(commentResource.getContent());
            }
        } catch (RegistryException e) {
            e.printStackTrace();
        }

        boolean found = false;
        if (commentTexts.contains(commentText)) {
            found = true;
        }

        return found;
    }

    private boolean containsTag(String tagPath, String tagText) throws Exception {

        Tag[] tags = null;

        try {
            tags = registry.getTags(tagPath);
        } catch (RegistryException e) {
            e.printStackTrace();
        }

        boolean tagFound = false;
        for (int i = 0; i < tags.length; i++) {
            if (tags[i].getTagName().equals(tagText)) {
                tagFound = true;
                break;
            }
        }

        return tagFound;
    }

    private boolean containsString(String[] array, String value) {

        boolean found = false;
        for (String anArray : array) {
            if (anArray.startsWith(value)) {
                found = true;
                break;
            }
        }

        return found;
    }
}
TOP

Related Classes of org.wso2.carbon.registry.ws.client.test.ResourceHandling

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.