/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * 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 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.spf.impl.internal.markdown; import org.ebayopensource.turmeric.runtime.common.impl.internal.markdown.SOABaseMarkdownStateManager; import org.ebayopensource.turmeric.runtime.spf.impl.internal.service.ServerServiceDesc; import com.ebay.kernel.markdown.IMarkdownStateManagerInitCtx; import com.ebay.kernel.markdown.MarkdownStateManagerFactory; import com.ebay.kernel.markdown.MarkdownStateSnapshot; /** * @author ichernyshev */ public final class SOAServerMarkdownStateManager extends SOABaseMarkdownStateManager<SOAServerMarkdownStateId,SOAServerMarkdownState> { private static SOAServerMarkdownStateManager s_instance; public static synchronized SOAServerMarkdownStateManager getInstance() { if (s_instance == null) { SOAServerMarkdownStateManager mgr = new SOAServerMarkdownStateManager(); MarkdownStateManagerFactory.registerManager(mgr, "turmeric_server"); s_instance = mgr; } return s_instance; } private SOAServerMarkdownStateManager() { // only local instances } @Override public void init(IMarkdownStateManagerInitCtx<SOAServerMarkdownStateId> ctx) { super.init(ctx); ctx.setDisplayName("SOA Server-Side Services"); } public MarkdownStateSnapshot<SOAServerMarkdownStateId> getMarkdownState( ServerServiceDesc svcDesc, String operation, boolean recordMissedCall) { SOAServerMarkdownStateId id = new SOAServerMarkdownStateId(svcDesc.getAdminName(), operation, svcDesc.getServiceId().getVersion()); return checkMarkdownState(id, recordMissedCall); } public MarkdownStateSnapshot<SOAServerMarkdownStateId> getStateSnapshot( ServerServiceDesc svcDesc, String operation) { SOAServerMarkdownStateId id = new SOAServerMarkdownStateId(svcDesc.getAdminName(), operation, svcDesc.getServiceId().getVersion()); return getStateSnapshot(id); } @Override protected SOAServerMarkdownState createDefaultState(SOAServerMarkdownStateId id) { return new SOAServerMarkdownState(this, id); } @Override protected SOAServerMarkdownState createState(SOAServerMarkdownStateId id, MarkdownStateSnapshot<SOAServerMarkdownStateId> modelState) { return new SOAServerMarkdownState(this, id, modelState); } @Override protected boolean doesStateIdInclude(SOAServerMarkdownStateId outer, SOAServerMarkdownStateId inner) { if (!super.doesStateIdInclude(outer, inner)) { return false; } String outerVersion = outer.getVersion(); if (outerVersion != null) { String innerVersion = inner.getVersion(); if (innerVersion == null || !innerVersion.equals(outerVersion)) { return false; } } return true; } @Override public boolean isValidId(String idStr) { SOAServerMarkdownStateId id = SOAServerMarkdownStateId.parseIdSafe(idStr); if (id == null) { return false; } return true; } @Override public SOAServerMarkdownStateId parseId(String idStr) { return SOAServerMarkdownStateId.parseId(idStr); } @Override protected SOAServerMarkdownStateId createSoaStateId(String adminName, String opName, String subname, String location) { // we ignore location here, since this is server side return new SOAServerMarkdownStateId(adminName, opName, subname); } }