/portlets/wsrp-portlet/docroot/WEB-INF/service/com/liferay/wsrp/service/ClpSerializer.java
Java | 348 lines | 243 code | 89 blank | 16 comment | 36 complexity | f92f49cae2f660ec3d807d9cf82fb73c MD5 | raw file
- /**
- * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- */
- package com.liferay.wsrp.service;
- import com.liferay.portal.kernel.exception.PortalException;
- import com.liferay.portal.kernel.exception.SystemException;
- import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayInputStream;
- import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayOutputStream;
- import com.liferay.portal.kernel.log.Log;
- import com.liferay.portal.kernel.log.LogFactoryUtil;
- import com.liferay.portal.kernel.util.ClassLoaderObjectInputStream;
- import com.liferay.portal.kernel.util.PropsUtil;
- import com.liferay.portal.kernel.util.Validator;
- import com.liferay.portal.model.BaseModel;
- import com.liferay.wsrp.model.WSRPConsumerClp;
- import com.liferay.wsrp.model.WSRPConsumerPortletClp;
- import com.liferay.wsrp.model.WSRPProducerClp;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author Brian Wing Shun Chan
- */
- public class ClpSerializer {
- public static String getServletContextName() {
- if (Validator.isNotNull(_servletContextName)) {
- return _servletContextName;
- }
- synchronized (ClpSerializer.class) {
- if (Validator.isNotNull(_servletContextName)) {
- return _servletContextName;
- }
- try {
- ClassLoader classLoader = ClpSerializer.class.getClassLoader();
- Class<?> portletPropsClass = classLoader.loadClass(
- "com.liferay.util.portlet.PortletProps");
- Method getMethod = portletPropsClass.getMethod("get",
- new Class<?>[] { String.class });
- String portletPropsServletContextName = (String)getMethod.invoke(null,
- "wsrp-portlet-deployment-context");
- if (Validator.isNotNull(portletPropsServletContextName)) {
- _servletContextName = portletPropsServletContextName;
- }
- }
- catch (Throwable t) {
- if (_log.isInfoEnabled()) {
- _log.info(
- "Unable to locate deployment context from portlet properties");
- }
- }
- if (Validator.isNull(_servletContextName)) {
- try {
- String propsUtilServletContextName = PropsUtil.get(
- "wsrp-portlet-deployment-context");
- if (Validator.isNotNull(propsUtilServletContextName)) {
- _servletContextName = propsUtilServletContextName;
- }
- }
- catch (Throwable t) {
- if (_log.isInfoEnabled()) {
- _log.info(
- "Unable to locate deployment context from portal properties");
- }
- }
- }
- if (Validator.isNull(_servletContextName)) {
- _servletContextName = "wsrp-portlet";
- }
- return _servletContextName;
- }
- }
- public static Object translateInput(BaseModel<?> oldModel) {
- Class<?> oldModelClass = oldModel.getClass();
- String oldModelClassName = oldModelClass.getName();
- if (oldModelClassName.equals(WSRPConsumerClp.class.getName())) {
- return translateInputWSRPConsumer(oldModel);
- }
- if (oldModelClassName.equals(WSRPConsumerPortletClp.class.getName())) {
- return translateInputWSRPConsumerPortlet(oldModel);
- }
- if (oldModelClassName.equals(WSRPProducerClp.class.getName())) {
- return translateInputWSRPProducer(oldModel);
- }
- return oldModel;
- }
- public static Object translateInput(List<Object> oldList) {
- List<Object> newList = new ArrayList<Object>(oldList.size());
- for (int i = 0; i < oldList.size(); i++) {
- Object curObj = oldList.get(i);
- newList.add(translateInput(curObj));
- }
- return newList;
- }
- public static Object translateInputWSRPConsumer(BaseModel<?> oldModel) {
- WSRPConsumerClp oldClpModel = (WSRPConsumerClp)oldModel;
- BaseModel<?> newModel = oldClpModel.getWSRPConsumerRemoteModel();
- newModel.setModelAttributes(oldClpModel.getModelAttributes());
- return newModel;
- }
- public static Object translateInputWSRPConsumerPortlet(
- BaseModel<?> oldModel) {
- WSRPConsumerPortletClp oldClpModel = (WSRPConsumerPortletClp)oldModel;
- BaseModel<?> newModel = oldClpModel.getWSRPConsumerPortletRemoteModel();
- newModel.setModelAttributes(oldClpModel.getModelAttributes());
- return newModel;
- }
- public static Object translateInputWSRPProducer(BaseModel<?> oldModel) {
- WSRPProducerClp oldClpModel = (WSRPProducerClp)oldModel;
- BaseModel<?> newModel = oldClpModel.getWSRPProducerRemoteModel();
- newModel.setModelAttributes(oldClpModel.getModelAttributes());
- return newModel;
- }
- public static Object translateInput(Object obj) {
- if (obj instanceof BaseModel<?>) {
- return translateInput((BaseModel<?>)obj);
- }
- else if (obj instanceof List<?>) {
- return translateInput((List<Object>)obj);
- }
- else {
- return obj;
- }
- }
- public static Object translateOutput(BaseModel<?> oldModel) {
- Class<?> oldModelClass = oldModel.getClass();
- String oldModelClassName = oldModelClass.getName();
- if (oldModelClassName.equals(
- "com.liferay.wsrp.model.impl.WSRPConsumerImpl")) {
- return translateOutputWSRPConsumer(oldModel);
- }
- if (oldModelClassName.equals(
- "com.liferay.wsrp.model.impl.WSRPConsumerPortletImpl")) {
- return translateOutputWSRPConsumerPortlet(oldModel);
- }
- if (oldModelClassName.equals(
- "com.liferay.wsrp.model.impl.WSRPProducerImpl")) {
- return translateOutputWSRPProducer(oldModel);
- }
- return oldModel;
- }
- public static Object translateOutput(List<Object> oldList) {
- List<Object> newList = new ArrayList<Object>(oldList.size());
- for (int i = 0; i < oldList.size(); i++) {
- Object curObj = oldList.get(i);
- newList.add(translateOutput(curObj));
- }
- return newList;
- }
- public static Object translateOutput(Object obj) {
- if (obj instanceof BaseModel<?>) {
- return translateOutput((BaseModel<?>)obj);
- }
- else if (obj instanceof List<?>) {
- return translateOutput((List<Object>)obj);
- }
- else {
- return obj;
- }
- }
- public static Throwable translateThrowable(Throwable throwable) {
- if (_useReflectionToTranslateThrowable) {
- try {
- UnsyncByteArrayOutputStream unsyncByteArrayOutputStream = new UnsyncByteArrayOutputStream();
- ObjectOutputStream objectOutputStream = new ObjectOutputStream(unsyncByteArrayOutputStream);
- objectOutputStream.writeObject(throwable);
- objectOutputStream.flush();
- objectOutputStream.close();
- UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(unsyncByteArrayOutputStream.unsafeGetByteArray(),
- 0, unsyncByteArrayOutputStream.size());
- Thread currentThread = Thread.currentThread();
- ClassLoader contextClassLoader = currentThread.getContextClassLoader();
- ObjectInputStream objectInputStream = new ClassLoaderObjectInputStream(unsyncByteArrayInputStream,
- contextClassLoader);
- throwable = (Throwable)objectInputStream.readObject();
- objectInputStream.close();
- return throwable;
- }
- catch (SecurityException se) {
- if (_log.isInfoEnabled()) {
- _log.info("Do not use reflection to translate throwable");
- }
- _useReflectionToTranslateThrowable = false;
- }
- catch (Throwable throwable2) {
- _log.error(throwable2, throwable2);
- return throwable2;
- }
- }
- Class<?> clazz = throwable.getClass();
- String className = clazz.getName();
- if (className.equals(PortalException.class.getName())) {
- return new PortalException();
- }
- if (className.equals(SystemException.class.getName())) {
- return new SystemException();
- }
- if (className.equals("com.liferay.wsrp.WSRPConsumerNameException")) {
- return new com.liferay.wsrp.WSRPConsumerNameException();
- }
- if (className.equals(
- "com.liferay.wsrp.WSRPConsumerPortletHandleException")) {
- return new com.liferay.wsrp.WSRPConsumerPortletHandleException();
- }
- if (className.equals(
- "com.liferay.wsrp.WSRPConsumerPortletNameException")) {
- return new com.liferay.wsrp.WSRPConsumerPortletNameException();
- }
- if (className.equals("com.liferay.wsrp.WSRPConsumerWSDLException")) {
- return new com.liferay.wsrp.WSRPConsumerWSDLException();
- }
- if (className.equals("com.liferay.wsrp.WSRPProducerNameException")) {
- return new com.liferay.wsrp.WSRPProducerNameException();
- }
- if (className.equals("com.liferay.wsrp.NoSuchConsumerException")) {
- return new com.liferay.wsrp.NoSuchConsumerException();
- }
- if (className.equals("com.liferay.wsrp.NoSuchConsumerPortletException")) {
- return new com.liferay.wsrp.NoSuchConsumerPortletException();
- }
- if (className.equals("com.liferay.wsrp.NoSuchProducerException")) {
- return new com.liferay.wsrp.NoSuchProducerException();
- }
- return throwable;
- }
- public static Object translateOutputWSRPConsumer(BaseModel<?> oldModel) {
- WSRPConsumerClp newModel = new WSRPConsumerClp();
- newModel.setModelAttributes(oldModel.getModelAttributes());
- newModel.setWSRPConsumerRemoteModel(oldModel);
- return newModel;
- }
- public static Object translateOutputWSRPConsumerPortlet(
- BaseModel<?> oldModel) {
- WSRPConsumerPortletClp newModel = new WSRPConsumerPortletClp();
- newModel.setModelAttributes(oldModel.getModelAttributes());
- newModel.setWSRPConsumerPortletRemoteModel(oldModel);
- return newModel;
- }
- public static Object translateOutputWSRPProducer(BaseModel<?> oldModel) {
- WSRPProducerClp newModel = new WSRPProducerClp();
- newModel.setModelAttributes(oldModel.getModelAttributes());
- newModel.setWSRPProducerRemoteModel(oldModel);
- return newModel;
- }
- private static Log _log = LogFactoryUtil.getLog(ClpSerializer.class);
- private static String _servletContextName;
- private static boolean _useReflectionToTranslateThrowable = true;
- }