mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			190 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
// Licensed to the Apache Software Foundation (ASF) under one
 | 
						|
// or more contributor license agreements.  See the NOTICE file
 | 
						|
// distributed with this work for additional information
 | 
						|
// regarding copyright ownership.  The ASF licenses this file
 | 
						|
// to you 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 com.cloud.gate.util;
 | 
						|
 | 
						|
 | 
						|
import java.io.IOException;
 | 
						|
import java.io.InputStream;
 | 
						|
import java.util.ArrayList;
 | 
						|
import java.util.Calendar;
 | 
						|
import java.util.Date;
 | 
						|
import java.util.List;
 | 
						|
 | 
						|
import org.apache.log4j.Logger;
 | 
						|
 | 
						|
import com.cloud.bridge.util.DateHelper;
 | 
						|
import com.cloud.bridge.util.StringHelper;
 | 
						|
import com.cloud.bridge.util.XElement;
 | 
						|
import com.cloud.bridge.util.XSerializer;
 | 
						|
import com.cloud.bridge.util.XSerializerJsonAdapter;
 | 
						|
import com.cloud.bridge.util.XSerializerXmlAdapter;
 | 
						|
import com.cloud.gate.testcase.BaseTestCase;
 | 
						|
 | 
						|
import junit.framework.Assert;
 | 
						|
 | 
						|
class SubFoo {
 | 
						|
	@XElement(name="Name")
 | 
						|
	private String name;
 | 
						|
	
 | 
						|
	@XElement(name="Value")
 | 
						|
	private String value;
 | 
						|
	
 | 
						|
	public SubFoo() {
 | 
						|
	}
 | 
						|
	
 | 
						|
	public SubFoo(String n, String v) {
 | 
						|
		name = n;
 | 
						|
		value = v;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
class BaseFoo {
 | 
						|
	@XElement(name="BaseName")
 | 
						|
	private String baseName;
 | 
						|
	
 | 
						|
	@XElement(name="BaseValue")
 | 
						|
	private String baseValue;
 | 
						|
	
 | 
						|
	public BaseFoo() {
 | 
						|
		baseName="baseName";
 | 
						|
		baseValue="baseValue";
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
class Foo extends BaseFoo {
 | 
						|
	@XElement(name="Name")
 | 
						|
	private String name;
 | 
						|
	
 | 
						|
	@XElement(name="Value")
 | 
						|
	private String value;
 | 
						|
	
 | 
						|
	@XElement(name="ByteValue")
 | 
						|
	private byte bValue;
 | 
						|
	
 | 
						|
	@XElement(name="ShortValue")
 | 
						|
	private short sValue;
 | 
						|
	
 | 
						|
	@XElement(name="LongValue")
 | 
						|
	private long lValue;
 | 
						|
	
 | 
						|
	@XElement(name="NullValue")
 | 
						|
	private String nullValue;
 | 
						|
	
 | 
						|
	@XElement(name="TimeValue")
 | 
						|
	private Date dt = new Date();
 | 
						|
	
 | 
						|
	@XElement(name="CalendarValue")
 | 
						|
	private Calendar cal = Calendar.getInstance();
 | 
						|
	
 | 
						|
	@XElement(name="SubObject")
 | 
						|
	public SubFoo sub;
 | 
						|
	
 | 
						|
	@XElement(name="SubObjects", item="ListItem", itemClass="com.cloud.gate.util.SubFoo")
 | 
						|
	public List<SubFoo> subs;
 | 
						|
	
 | 
						|
	@XElement(name="ArrayObjects", item="ArrayItem", itemClass="com.cloud.gate.util.SubFoo")
 | 
						|
	public SubFoo[] subArray;
 | 
						|
	
 | 
						|
	public Foo() {
 | 
						|
		subs = new ArrayList<SubFoo>();
 | 
						|
	}
 | 
						|
	
 | 
						|
	public Foo(String name, String value) {
 | 
						|
		this.name = name;
 | 
						|
		this.value = value;
 | 
						|
		
 | 
						|
		subs = new ArrayList<SubFoo>();
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
public class UtilTestCase extends BaseTestCase {
 | 
						|
    protected final static Logger logger = Logger.getLogger(UtilTestCase.class);
 | 
						|
	
 | 
						|
	public void testStringHelper() {
 | 
						|
		String value = StringHelper.substringInBetween("archive/doc1.doc", "archive", "/");
 | 
						|
		Assert.assertTrue(value == null);
 | 
						|
		
 | 
						|
		value = StringHelper.substringInBetween("archive/sub1/doc1.doc", "archive", "/");
 | 
						|
		Assert.assertTrue(value.equals("sub1"));
 | 
						|
		
 | 
						|
		value = StringHelper.substringInBetween("archive/sub2/doc1.doc", "archive", "/");
 | 
						|
		Assert.assertTrue(value.equals("sub2"));
 | 
						|
		
 | 
						|
		value = StringHelper.substringInBetween("archive/sub3/subb/doc1.doc", "archive", "/");
 | 
						|
		Assert.assertTrue(value.equals("sub3"));
 | 
						|
		
 | 
						|
		value = StringHelper.substringInBetween("archive/sub3/subb/doc1.doc", "archive/sub3", "/");
 | 
						|
		Assert.assertTrue(value.equals("subb"));
 | 
						|
		
 | 
						|
		value = StringHelper.substringInBetween("archive/sub3/subb/doc1.doc", null, "/");
 | 
						|
		Assert.assertTrue(value.equals("archive"));
 | 
						|
	}
 | 
						|
	
 | 
						|
	public void testJava2XmlJson() {
 | 
						|
		XSerializer serializer = new XSerializer(new XSerializerXmlAdapter());
 | 
						|
		serializer.setFlattenCollection(true);
 | 
						|
		serializer.setOmitNull(true);
 | 
						|
		Foo foo = new Foo("dummyName", "dummyValue");
 | 
						|
		foo.sub = new SubFoo("subName", "subValue");
 | 
						|
		foo.subs.add(new SubFoo("Sub1", "Sub1-value"));
 | 
						|
		foo.subs.add(new SubFoo("Sub2", "Sub2-value"));
 | 
						|
		
 | 
						|
		foo.subArray = new SubFoo[3];
 | 
						|
		foo.subArray[0] = new SubFoo("Array-sub1", "Sub1-value");
 | 
						|
		foo.subArray[1] = new SubFoo("Array-sub2", "Sub1-value");
 | 
						|
		foo.subArray[2] = new SubFoo("Array-sub3", "Sub1-value");
 | 
						|
		
 | 
						|
		String output = serializer.serializeTo(foo, "Foo", "http://www.cloud.com/S3", 0);
 | 
						|
		logger.info(output);
 | 
						|
		
 | 
						|
		serializer = new XSerializer(new XSerializerJsonAdapter());
 | 
						|
		output = serializer.serializeTo(foo, "Foo", "http://www.cloud.com/S3", 0);
 | 
						|
		logger.info(output);
 | 
						|
	}
 | 
						|
	
 | 
						|
	public void testXml2Java() {
 | 
						|
		XSerializer serializer = new XSerializer(new XSerializerXmlAdapter());
 | 
						|
		serializer.setFlattenCollection(true);
 | 
						|
		XSerializer.registerRootType("Foo", Foo.class);
 | 
						|
		
 | 
						|
		try {
 | 
						|
			InputStream is = this.getClass().getResourceAsStream("/com/cloud/gate/util/Xml2JavaTestData.xml");
 | 
						|
			String xml = StringHelper.stringFromStream(is);
 | 
						|
			Object object = serializer.serializeFrom(xml);
 | 
						|
			if(object != null) {
 | 
						|
				String output = serializer.serializeTo(object, "Foo", "http://www.cloud.com/S3", 0);
 | 
						|
				logger.info("Redump parsed java object");
 | 
						|
				logger.info(output);
 | 
						|
			}
 | 
						|
			is.close();
 | 
						|
		} catch(IOException e) {
 | 
						|
			logger.error("Unexpected exception " + e.getMessage(), e);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
	public void testMisc() {
 | 
						|
		String[] tokens = "/".split("/");
 | 
						|
		logger.info("length : " + tokens.length);
 | 
						|
		for(int i = 0; i < tokens.length; i++) {
 | 
						|
			logger.info("token " + i + ": " + tokens[i]);
 | 
						|
		}
 | 
						|
		
 | 
						|
		logger.info(DateHelper.getDateDisplayString(
 | 
						|
			DateHelper.GMT_TIMEZONE, new Date(), "E, d MMM yyyy HH:mm:ss z"));
 | 
						|
	}
 | 
						|
}
 |