/************************************************************************* * Copyright 2009-2014 Eucalyptus Systems, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * * Please contact Eucalyptus Systems, Inc., 6755 Hollister Ave., Goleta * CA 93117, USA or visit http://www.eucalyptus.com/licenses/ if you need * additional information or have any questions. ************************************************************************/ package edu.ucsb.eucalyptus.msgs; import java.io.IOException; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; /** * */ public class BaseMessages { private static final ObjectMapper mapper = new ObjectMapper( ); static { mapper.addMixInAnnotations( BaseMessage.class, BaseMessageMixIn.class); mapper.configure( SerializationFeature.FAIL_ON_EMPTY_BEANS, false ); } @SuppressWarnings( "unchecked" ) public static <T extends BaseMessage> T deepCopy( final T message ) throws IOException { return (T) deepCopy( message, message.getClass( ) ); } public static <T extends BaseMessage, R extends BaseMessage> R deepCopy( final T message, final Class<R> resultType ) throws IOException { return (R) mapper.treeToValue( mapper.valueToTree( message ), resultType ); } @JsonIgnoreProperties( { "correlationId", "effectiveUserId", "reply", "statusMessage", "userId" } ) private static final class BaseMessageMixIn { } }